OpenSSL 命令手册
12 页按任务整理的 OpenSSL 3.x 命令:每条都有命令、真实输出示例和参数说明,版本差异和常见坑单独标出。
这是一份按任务组织的 OpenSSL 命令手册:找到要做的事,复制命令,对照输出示例确认结果,再看说明里的关键参数和坑。想弄懂命令背后的原理,顺着链接去看原理文章。
怎么用
每页 8–15 个任务,格式统一:## 标题写任务,第一句给结论,接着是 bash 命令、text 输出示例和说明。各页文件名保持一致:私钥 example.com.key,证书 example.com.crt,中间证书 chain.pem,证书加中间证书 fullchain.pem。宝塔面板、阿里云/腾讯云控制台要求粘贴的“证书(PEM 格式)”一般就是 fullchain.pem 的内容,“密钥”就是私钥文件内容。
开始前先确认自己用的是哪个 OpenSSL:
openssl version
OpenSSL 3.6.1 27 Jan 2026 (Library: OpenSSL 3.6.1 27 Jan 2026)
macOS 自带的 /usr/bin/openssl 其实是 LibreSSL,不少 3.x 参数不支持,建议用 Homebrew 装 OpenSSL 3 后用完整路径调用。Windows 上可以用 Git for Windows 自带的 OpenSSL,或在 WSL 里执行。
会影响结果的版本差异
| 变化 | 起始版本 | 影响的页面 |
|---|---|---|
PKCS#12 导出默认改为 AES-256-CBC + PBKDF2 + HMAC-SHA256,旧的 RC2/3DES/SHA-1 要加 -legacy |
3.0 | PKCS#12、格式转换 |
-noenc 取代已弃用的 -nodes |
3.0 | 私钥、CSR、自签证书 |
默认安全级别下禁用 TLS 1.0/1.1,测试时要加 @SECLEVEL=0 |
3.0 | 套件与协议 |
x509、req 支持 -copy_extensions |
3.0 | 私有 CA |
| 内置 ML-KEM、ML-DSA、SLH-DSA,TLS 默认密钥共享包含 X25519MLKEM768 | 3.5 | 私钥、连接测试 |
Windows 老系统导入 PFX 报“密码不正确”、Java 老版本读不出 .p12,多半就是第一行的默认算法变化造成的,解决办法见 PKCS#12 页。
安全提醒
生成私钥请在自己能控制的机器上做,私钥不要提交到代码仓库,也不要把生产环境私钥粘贴到任何网站。ssl.sh 上涉及私钥的工具都在浏览器本地运行,但最安全的私钥是从不离开它所属服务器的那一把。
私钥、CSR 与证书
生成私钥
OpenSSL 3.x 生成、加密、解密、查看、比对私钥的常用命令,覆盖 RSA、ECDSA、Ed25519 以及 3.5 新增的 ML-DSA、ML-KEM。
生成 CSR
用 OpenSSL 3.x 生成、查看、校验证书签名请求(CSR):-addext 加 SAN、配置文件写多个域名、通配符、中文组织名、从旧证书生成续期 CSR。
自签名证书
OpenSSL 3.x 一行命令生成带 SAN 的自签名证书和 localhost 开发证书,并导入 macOS、Windows、Linux 信任库,附浏览器仍报警的排查表。
查看证书
OpenSSL 3.x 查看证书的命令:完整内容、主题、有效期、指纹、SAN、到期检查、远程证书、DER 文件、证书链、OCSP/CRL 地址和 SCT。
格式转换与 PKCS#12
验证与连接测试
验证证书链
用 OpenSSL 3.x 验证证书链:-CAfile 与 -untrusted 的区别、主机名和用途检查、补齐缺失的中间证书、检查证书顺序、确认证书与私钥是否匹配。
测试 TLS 连接
openssl s_client 实用命令:-servername 与 SNI、-showcerts、指定 TLS 1.2/1.3、ALPN、邮件和数据库的 STARTTLS、OCSP 装订、双向 TLS 与会话复用。
OCSP 与 CRL
用 OpenSSL 3.x 检查证书吊销状态:找出 OCSP 和 CRL 地址、查询 OCSP、查看装订响应、下载解析 CRL、用 -crl_check 验证,并说明 Let's Encrypt 已停用 OCSP。
密码套件与协议
用 OpenSSL 3.x 展开密码套件字符串、测试 TLS 1.0 到 1.3、逐个枚举服务器支持的套件,并检查 X25519MLKEM768 后量子密钥交换。
私有 CA 与排错
常见问题
这些命令需要什么版本的 OpenSSL?
OpenSSL 3.0 及以上。需要更新版本的命令会单独标注,比如生成 ML-KEM、ML-DSA 密钥需要 3.5 及以上。输出示例用 OpenSSL 3.6.1 实际运行得到。
CentOS 7 或宝塔服务器上命令报错怎么办?
CentOS 7 自带 OpenSSL 1.0.2,很多 3.x 参数不认。可以在本地电脑或较新的系统(如 Ubuntu 22.04 及以上,自带 OpenSSL 3.0)上执行,再把生成的文件上传到服务器。
有没有不用敲命令的办法?
有。OpenSSL 命令生成器按表单生成常用命令,证书格式转换在浏览器本地完成格式转换。