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 里。

我的小习惯: 在 Windows 上做实验时,我更喜欢用 Git Bash。它模拟了 Linux 环境,命令行为完全一致,省去很多适配的麻烦。

配置文件在哪?

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 入门阶段的核心脉络:

OpenSSL 入门知识体系 OpenSSL 入门知识体系 安装与配置 Linux / Windows / openssl.cnf 常用命令概览 genrsa / req / x509 / ca RSA 私钥生成 genrsa 命令详解 基本用法 openssl genrsa 加密私钥 -aes256 参数 查看与验证 -text / -modulus 💡 核心原则:私钥即身份,必须严格保护 权限 600 / 加密存储 / 定期备份 安装 配置 生成私钥 下一步:使用私钥生成 CSR 证书签名请求

3.5 避坑指南

最后分享几个我踩过的坑:

  • 私钥格式混淆:PEM 和 DER 格式不同。PEM 是 Base64 编码,DER 是二进制。很多工具只认 PEM。我习惯统一用 PEM。
  • 密钥长度不足:曾经有客户用 1024 位的 RSA 密钥,被安全审计直接打回。现在低于 2048 位的都不让用了。
  • 忘记备份:私钥一旦丢失,所有用这个私钥签发的证书都得重新做。我建议把私钥加密后存到安全的地方,比如密码管理器或 HSM。

核心要点:

  • OpenSSL 是 PKI 操作的基础工具,必须熟练掌握
  • 私钥生成使用 genrsa 命令,推荐 2048 位或 4096 位
  • 私钥文件权限设为 600,建议加密存储
  • 学会用 -modulus 参数验证私钥与证书的匹配关系