Skip to content

Commit bc0e35f

Browse files
authored
feat: 更新 atop 命令中的链接以及名词 & 添加 mkcert 命令 (#446)
1 parent 9ab1948 commit bc0e35f

File tree

2 files changed

+222
-7
lines changed

2 files changed

+222
-7
lines changed

command/atop.md

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,25 @@ atop
55

66
## 补充说明
77

8-
[非内部程序,需要安装]它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包
8+
[非内部程序,需要安装]它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其[源码](https://github.com/Atoptool/atop)[rpm安装包](https://pkgs.org/download/atop)
99

10-
## 语法
10+
## 语法
1111

1212
```shell
1313
atop(选项)(参数)
1414
```
1515

16-
## 说明
16+
## 说明
1717

1818
**ATOP列**:该列显示了主机名、信息采样日期和时间点
1919

2020
**PRC列**:该列显示进程整体运行情况
2121

2222
- sys、usr字段分别指示进程在内核态和用户态的运行时间
2323
- #proc字段指示进程总数
24-
- #zombie字段指示僵死进程的数量
24+
- #zombie字段指示僵尸进程的数量
2525
- #exit字段指示atop采样周期期间退出的进程数量
2626

27-
2827
**CPU列**:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)
2928

3029
- sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
@@ -70,7 +69,6 @@ swin、swout字段:换入和换出内存页数
7069
- XXXi 字段指示各层或活动网口收包数目
7170
- XXXo 字段指示各层或活动网口发包数目
7271

73-
7472
## atop日志
7573

7674
每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用"atop -r XXX"命令对日志文件进行查看。那以什么形式保存atop日志文件呢?
@@ -96,4 +94,3 @@ swin、swout字段:换入和换出内存页数
9694
## 相关资料
9795

9896
- [官方手册](http://www.atoptool.nl/download/man_atop-1.pdf)
99-

command/mkcert.md

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
# mkcert
2+
3+
用来生成自签证书的工具。
4+
5+
## 示例
6+
7+
`mkcert` 是 GO 编写的,一个简单的**零配置**的用来生成自签证书的工具。
8+
9+
下面给一个简单的示例,在本地生成自签证书,并使用让 nc 使用生成的证书。
10+
11+
```zsh
12+
~ ·········································································································································  10:46:25
13+
❯ mkcert -install
14+
The local CA is already installed in the system trust store! 👍The local CA is already installed in the Firefox and/or Chrome/Chromium trust store! 👍
15+
~ ·········································································································································  10:46:34
16+
❯ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
17+
18+
Created a new certificate valid for the following names 📜 - "example.com"
19+
- "*.example.com"
20+
- "example.test"
21+
- "localhost"
22+
- "127.0.0.1"
23+
- "::1"
24+
25+
Reminder: X.509 wildcards only go one level deep, so this won't match a.b.example.com ℹ️
26+
27+
The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
28+
It will expire on 30 January 2025 🗓
29+
30+
~ ·········································································································································  10:47:37
31+
❯ ls
32+
公共 视频 文档 音乐 aria aria2-downloads Dockerfile example.com+5.pem GOPATH minio-binaries nowip_hosts.txt tech_backend.jar
33+
模板 图片 下载 桌面 aria2-config cv_debug.log example.com+5-key.pem go math navicat_reset src
34+
~ ·········································································································································  10:47:55
35+
❯ ncat -lvp 1589 --ssl-key example.com+5-key.pem --ssl-cert example.com+5.pem
36+
Ncat: Version 7.92 ( https://nmap.org/ncat )
37+
Ncat: Listening on :::1589
38+
Ncat: Listening on 0.0.0.0:1589
39+
Ncat: Connection from 127.0.0.1.
40+
Ncat: Connection from 127.0.0.1:39156.
41+
Ncat: Failed SSL connection from 127.0.0.1: error:00000000:lib(0):func(0):reason(0)
42+
```
43+
44+
`mkcert` 自动生成并安装一个本地 CA 到 root stores,并且生成 locally-trusted 证书。`mkcert` 不会自动使用证书来配置服务器,不过,这取决于你。
45+
46+
## 安装
47+
48+
> Warning: `mkcert` 自动生成的 `rootCA-key.pem` 文件提供了完整的能力来拦截你机器上的安全请求。请不要分享它。
49+
50+
### macOS
51+
52+
```zsh
53+
brew install mkcert
54+
brew install nss # 如果用 Firefox 的话
55+
```
56+
57+
### Linux
58+
59+
在 Linux 上,首先要安装 `certutil`
60+
61+
```zsh
62+
sudo apt install libnss3-tools
63+
-or-
64+
sudo yum install nss-tools
65+
-or-
66+
sudo pacman -S nss
67+
-or-
68+
sudo zypper install mozilla-nss-tools
69+
```
70+
71+
然后可以使用 [Homebrew on Linux](https://docs.brew.sh/Homebrew-on-Linux) 来安装。
72+
73+
```zsh
74+
brew install mkcert
75+
```
76+
77+
或者从源码构建(要求 Go 1.13+)
78+
79+
```zsh
80+
git clone https://github.com/FiloSottile/mkcert && cd mkcert
81+
go build -ldflags "-X main.Version=$(git describe --tags)"
82+
```
83+
84+
又或者使用 [预构建的二进制文件](https://github.com/FiloSottile/mkcert/releases)。
85+
86+
```zsh
87+
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
88+
chmod +x mkcert-v*-linux-amd64
89+
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
90+
```
91+
92+
对于 Arch Linux 用户(比如我),[`mkcert`](https://www.archlinux.org/packages/community/x86_64/mkcert/) 在 Arch Linux 官方仓库中可用。
93+
94+
```zsh
95+
sudo pacman -S mkcert
96+
```
97+
98+
### Windows
99+
100+
使用 [Chocolatey](https://chocolatey.org/)
101+
102+
```zsh
103+
choco install mkcert
104+
```
105+
106+
或者使用 Scoop
107+
108+
```zsh
109+
scoop bucket add extras
110+
scoop install mkcert
111+
```
112+
113+
或者从源码构建(要求 Go 1.10+) ,或者使用 [预构建的二进制文件](https://github.com/FiloSottile/mkcert/releases)。
114+
115+
如果遇到权限问题,请使用管理员运行 `mkcert`
116+
117+
## 支持的 root stores
118+
119+
`mkcert` 支持以下 root stores:
120+
121+
- macOS system store
122+
123+
- Windows system store
124+
125+
- Linux 发行版提供
126+
127+
- `update-ca-trust` (Fedora,RHEL,CentOS)或者
128+
129+
- `update-ca-certificates` (Ubuntu,Debian,OpenSUSE,SLES)或者
130+
131+
- `trust` (Arch)
132+
133+
- Firefox (仅 macOS 和 Linux)
134+
135+
- Chrome 和 Chromium
136+
137+
- Java(当 `JAVA_HOME` 被设置时)
138+
139+
为了把 local root CA 装到这些 root stores 中,你可以设置 `TRUST_STORES` 环境变量到一个逗号分隔的 list。有这些选项:"system","java" 和 "nss"(包括了 Firefox)。
140+
141+
## 高级 topics
142+
143+
---
144+
145+
### 高级选项
146+
147+
```zsh
148+
-cert-file FILE, -key-file FILE, -p12-file FILE
149+
自定义输出路径.
150+
151+
-client
152+
生成供客户端认证使用的证书.
153+
154+
-ecdsa
155+
生成使用一个 ECDSA (一种椭圆曲线签名算法)key 来生成证书.
156+
157+
-pkcs12
158+
生成一个 ".p12" PKCS #12 文件,也可以被识别为 ".pfx" 文件,
159+
包含 cert 和 key for legacy applications.
160+
161+
-csr CSR
162+
生成一个给予 CSR(证书签名申请) 的证书。
163+
与除了 -install 和 -cert-file 以外的其它所以 flag 和参数冲突!
164+
```
165+
166+
[SSL 证书 什么是CSR?-常见问题-文档中心-腾讯云](https://cloud.tencent.com/document/product/400/5367)
167+
168+
> **请注意!** 你必须把这些选项放在域名列表之前。
169+
170+
### 例如
171+
172+
```zsh
173+
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
174+
```
175+
176+
### S/MIME (邮件安全证书)
177+
178+
用下面这种方式 `mkcert` 会生成一个 S/MIME 证书:
179+
180+
```zsh
181+
mkcert filippo@example.com
182+
```
183+
184+
### 移动设备
185+
186+
对于要让移动设备信任证书的情况,你得安装 root CA。就是 `rootCA.pem` 这个文件,可以通过 `mkcert -CAROOT` 打印出这个文件所在的目录。
187+
188+
在 iOS 上,你也可以使用 AirDrop,把 CA 邮件发给你自己,或者通过一个 HTTP server 提供它。在打开它之后,你需要  [install the profile in Settings > Profile Downloaded](https://github.com/FiloSottile/mkcert/issues/233#issuecomment-690110809) and then [enable full trust in it](https://support.apple.com/en-nz/HT204477) 。
189+
190+
对于 Android ,你得安装这个 CA 然后在应用程序的开发版本中启用 user roots。可以看一看这个 [StackOverflow 回答](https://stackoverflow.com/a/22040887/749014) 。
191+
192+
### 用 Node.js 来使用这个 root
193+
194+
Node 不使用 system root store,所以它不会自动接受 `mkcert` 证书。相反,你得设置 [`NODE_EXTRA_CA_CERTS`](https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file) 环境变量。
195+
196+
```zsh
197+
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
198+
```
199+
200+
### 改变 CA 文件的位置
201+
202+
CA 证书和它的 key 被存储在用户家目录的一个文件夹中。一般来说你不会想去关注它的位置,因为它会被自动装载。但是你可以通过 `mkcert -CAROOT` 来打印这个目录位置。
203+
204+
如果你想要管理单独的 CA 们,你可以使用 `\$CAROOT` 环境变量来设置 mkcert 放置和寻找 CA files 的路径。
205+
206+
### 在其它系统上安装 CA
207+
208+
安装 trust store 不需要 CA key(只要 CA),所以你可以导出 CA,并且使用 `mkcert` 来安装到其它机器上。
209+
210+
- 找到 `rootCA.pem` 文件,可以用 `mkcert -CAROOT` 找到对应目录。
211+
212+
- 把它 copy 到别的机器上。
213+
214+
- 设置 `\$CAROOT` 为 `rootCA.pem` 所在目录。
215+
216+
- 运行 `mkcert -install`(arch linux 可以 `sudo trust anchor --store rootCA.pem`,其它发行版可以用自带的命令手动添加来信任 CA)
217+
218+
请千万记住 `mkcert` 是用于开发目的的,不建议用于生产,所以它不应该被用到用户终端上,并且你不应该导出或者共享 `rootCA-key.pem` 。

0 commit comments

Comments
 (0)