私有 CA 服务端证书生成器
签发一张由 CA 背书的服务端证书:可以现场生成一个新的私有根 CA,也可以使用你已有的 CA 签发。CA 证书只需安装一次,它签发的每张证书都会被信任。全部在浏览器中完成,不会上传到任何服务器。
由 CA 背书的服务端证书:可以现场生成一个新的私有 CA,也可以使用你已有的 CA 签发。
私有根 CA 不受浏览器有效期上限约束,通常设为 10 年(3650 天)。名称请使用英文(ASCII)字符。
— 或在下方粘贴 PEM —
— 或在下方粘贴 PEM —
文件只在你的浏览器本地读取,不会上传到任何服务器。
多个条目用逗号或空格分隔,通用名称会自动加入。支持域名、通配符与 IP 地址。
如何把 CA 证书安装到你的电脑
把 ca.crt 装入操作系统信任库后,该 CA 签发的每一张证书都不会再出现浏览器告警。
图形界面方式
- 把
ca.crt复制到这台 Windows 电脑。 - 双击
ca.crt,选择「安装证书…」。 - 选择「本地计算机」,点击「下一步」(确认 UAC 提权提示)。
- 选择「将所有证书放入下列存储」→「浏览…」
- 选择「受信任的根证书颁发机构」,然后「下一步」→「完成」。
- 重启 Chrome 或 Edge —— 它们读取 Windows 证书存储。Firefox 需要按下文单独导入。
另一种方式:按 Win + R,运行 mmc,然后「文件」→「添加/删除管理单元」→「证书」→「计算机账户」→「本地计算机」,再导入到「受信任的根证书颁发机构 → 证书」。
命令行(管理员 PowerShell 或 CMD)
certutil -addstore -f "ROOT" ca.crt rem 确认是否已写入存储 certutil -store ROOT rem 以后需要删除时(使用 CA 的通用名称) certutil -delstore ROOT "My Root CA"
图形界面方式
- 双击
ca.crt—— 「钥匙串访问」会自动打开。 - 把证书拖到「系统」钥匙串(不是「登录」)的「证书」分类下。
- 双击它,展开「信任」,把「使用此证书时」设为「始终信任」。
- 关闭窗口并输入密码确认。
- 重启浏览器。Safari、Chrome、Edge 都读取系统钥匙串。
命令行(终端)
sudo security add-trusted-cert -d -r trustRoot \ -k /Library/Keychains/System.keychain ca.crt # 验证 security find-certificate -c "My Root CA" /Library/Keychains/System.keychain # 以后需要删除时 sudo security delete-certificate -c "My Root CA" /Library/Keychains/System.keychain
命令行
Debian / Ubuntu / Mint
sudo cp ca.crt /usr/local/share/ca-certificates/my-root-ca.crt sudo update-ca-certificates
RHEL / CentOS / Fedora / Rocky / AlmaLinux
sudo cp ca.crt /etc/pki/ca-trust/source/anchors/my-root-ca.crt sudo update-ca-trust extract
Arch / Manjaro
sudo trust anchor --store ca.crt # 以后需要删除时 sudo trust anchor --remove ca.crt
验证
openssl verify -CAfile ca.crt server.crt curl --cacert ca.crt https://example.com/
Firefox 使用自己的证书库(NSS),在 Linux 上会忽略系统信任库。可以在「设置 → 隐私与安全 → 查看证书 → 证书颁发机构 → 导入」中导入 ca.crt,也可以用 certutil 添加(Debian/Ubuntu 上是 libnss3-tools,RHEL/Fedora 上是 nss-tools):
certutil -A -n "My Root CA" -t "C,," -i ca.crt -d sql:$HOME/.pki/nssdb
在 Nginx 中部署服务端证书
sudo cp server.crt /etc/nginx/ssl/server.crt sudo cp server.key /etc/nginx/ssl/server.key sudo chmod 600 /etc/nginx/ssl/server.key
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
}
sudo nginx -t sudo systemctl reload nginx
Nginx 的 ssl_certificate 只读取单个文件。浏览器已经信任该 CA,仅使用叶子证书即可,不需要额外的证书链文件。
更多工具:自签名证书生成器 · 双向 TLS 证书生成器 · CSR 生成器 · 证书解码器