OpenSSL (OpenSSL 工具包)
定义
OpenSSL 是开源密码学工具包,由 TLS 协议库 libssl、通用密码库 libcrypto 和 openssl 命令行工具组成。
OpenSSL 是部署最广泛的开源 TLS 与通用密码学实现之一,包括 libssl(TLS 协议)、libcrypto(各种算法以及 X.509、ASN.1、PKCS 格式处理)和 openssl 命令行程序。命令行可以生成私钥和 CSR、查看和转换证书、测试 TLS 连接。nginx、Apache、众多编程语言运行时和各种网络设备都链接了它。3.0 版引入了可插拔的 provider 架构,1.1.1 系列已于 2023 年 9 月停止维护,3.5 版加入了后量子算法 ML-KEM 和 ML-DSA。国内需要国密 TLCP 协议时,常用基于 OpenSSL 的分支铜锁(Tongsuo)。
为什么重要
OpenSSL 是证书工作的"通用语言":几乎所有教程、CA 部署说明和排错文档都在用它的命令。用得广也意味着漏洞影响大:2014 年的 Heartbleed(CVE-2014-0160)能读出服务器内存,包括私钥,波及大量 HTTPS 网站,也直接催生了 LibreSSL 分支。对服务器来说,及时修补被服务链接的库,比更新手边命令行工具的版本更重要。
例子
openssl version
openssl s_client -connect example.com:443 -servername example.com </dev/null
openssl x509 -in example.com.crt -noout -subject -issuer -dates
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out example.com.key
openssl req -new -key example.com.key -subj "/CN=example.com" -out example.com.csr
常见误区
- OpenSSL 就是 SSL 协议。 它是实现 TLS 的软件库,名字里的 SSL 只是历史遗留,现代版本默认已禁用 SSL 3.0。
- macOS 自带的 openssl 就是 OpenSSL。 macOS 的
/usr/bin/openssl实际是 LibreSSL,参数和默认行为可能不同。 - 升级软件包就万事大吉。 长期运行的服务在重启前仍在使用旧版本的库。