3. OpenSSL 工具入门:安装、配置与核心命令
说实话,做 PKI 这行,OpenSSL 就是你的瑞士军刀。我入行那会儿,第一个任务就是用 OpenSSL 生成一套测试用的根 CA 和子 CA。当时对着命令行一脸懵,踩了不少坑。今天咱们就把这块硬骨头啃下来。
3.1 OpenSSL 的安装与配置
OpenSSL 几乎支持所有主流操作系统。我个人习惯在 Linux 环境下工作,但 Windows 下也能搞定。
Linux 环境(以 Ubuntu/CentOS 为例)
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install openssl
# CentOS/RHEL
sudo yum install openssl
# 验证安装
openssl version
输出类似 OpenSSL 1.1.1k 25 Mar 2021 就对了。我曾经遇到过系统自带的版本太老,不支持某些新特性,比如 -addext 参数。所以建议尽量用较新版本。
Windows 环境
推荐使用 Win64 OpenSSL 或 Git Bash 自带的 OpenSSL。安装后记得把 C:\Program Files\OpenSSL-Win64\bin 加到系统 PATH 里。
配置文件在哪?
OpenSSL 的配置文件通常叫 openssl.cnf。Linux 下一般在 /etc/ssl/ 或 /usr/lib/ssl/。你可以用 openssl version -d 查看具体路径。
openssl version -d
# 输出示例:OPENSSLDIR: "/usr/lib/ssl"
这个配置文件很重要。里面定义了 CA 的默认策略、证书扩展、哈希算法等。我建议你先把默认文件备份一份,再按需修改。
3.2 常用命令概览
OpenSSL 的命令很多,但日常 PKI 操作常用的就那么几个。我整理了一张表,方便你快速查阅。
| 命令 | 功能 | 典型场景 |
|---|---|---|
genrsa |
生成 RSA 私钥 | 创建 CA 或服务器私钥 |
req |
生成 CSR 或自签名证书 | 申请证书或创建根 CA |
x509 |
查看或签发证书 | 查看证书内容、签发子 CA |
ca |
CA 签发与管理 | 批量签发证书、吊销证书 |
verify |
验证证书链 | 检查证书是否可信 |
rsa |
RSA 密钥管理 | 查看私钥、转换格式 |
pkcs12 |
PKCS#12 格式处理 | 导出浏览器可用的 pfx 文件 |
你想想看,这些命令就像乐高积木。组合起来就能完成从私钥生成到证书签发的完整流程。
3.3 生成 RSA 私钥(genrsa)
这是所有 PKI 操作的第一步。私钥就是你的数字身份,丢了就完了。
基本用法
# 生成 2048 位的 RSA 私钥
openssl genrsa -out server.key 2048
这条命令会生成一个 PEM 格式的私钥文件。2048 位是目前的主流选择。1024 位已经不安全了,4096 位虽然更安全,但性能开销大。我个人建议:
- 测试环境:2048 位足够
- 生产环境:2048 位或 4096 位
- 根 CA:4096 位,因为根 CA 要用很多年
带加密的私钥
如果你担心私钥文件泄露,可以加上 AES 加密:
# 生成加密私钥,会提示输入密码
openssl genrsa -aes256 -out server.key 2048
加了密码后,每次使用私钥(比如启动 Nginx)都需要输入密码。安全是安全了,但自动化部署时会麻烦。我曾经在自动化脚本里踩过这个坑——脚本跑起来后一直卡在等待密码输入。
查看私钥信息
生成后,可以用以下命令查看私钥的详细信息:
# 查看私钥的明文信息
openssl rsa -in server.key -text -noout
# 查看私钥的模块(Modulus),用于和证书比对
openssl rsa -in server.key -modulus -noout
-modulus 这个参数很实用。当你怀疑证书和私钥不匹配时,分别查看它们的 modulus,对比一下就知道是不是一对儿了。
私钥的权限管理
私钥文件必须严格保护。Linux 下建议设置 600 权限:
chmod 600 server.key
ls -l server.key
# 输出:-rw------- 1 root root 1679 Mar 15 10:30 server.key
嗯,这里要注意。如果权限太开放,OpenSSL 会直接报错拒绝使用。这是安全机制,不是 bug。
3.4 本章知识体系
下面这张图帮你梳理了 OpenSSL 入门阶段的核心脉络:
3.5 避坑指南
最后分享几个我踩过的坑:
- 私钥格式混淆:PEM 和 DER 格式不同。PEM 是 Base64 编码,DER 是二进制。很多工具只认 PEM。我习惯统一用 PEM。
- 密钥长度不足:曾经有客户用 1024 位的 RSA 密钥,被安全审计直接打回。现在低于 2048 位的都不让用了。
- 忘记备份:私钥一旦丢失,所有用这个私钥签发的证书都得重新做。我建议把私钥加密后存到安全的地方,比如密码管理器或 HSM。
核心要点:
- OpenSSL 是 PKI 操作的基础工具,必须熟练掌握
- 私钥生成使用
genrsa命令,推荐 2048 位或 4096 位 - 私钥文件权限设为 600,建议加密存储
- 学会用
-modulus参数验证私钥与证书的匹配关系