# OpenSSL（OpenSSL 工具包）是什么？

> OpenSSL 是开源密码学工具包，由 TLS 协议库 libssl、通用密码库 libcrypto 和 openssl 命令行工具组成。

Source: https://ssl.sh/zh/glossary/openssl/
Last updated: 2026-11-10

OpenSSL 是部署最广泛的开源 [TLS](https://ssl.sh/zh/glossary/tls/) 与通用密码学实现之一，包括 libssl（TLS 协议）、libcrypto（各种算法以及 X.509、ASN.1、PKCS 格式处理）和 `openssl` 命令行程序。命令行可以生成私钥和 [CSR](https://ssl.sh/zh/glossary/csr/)、查看和转换证书、测试 TLS 连接。nginx、Apache、众多编程语言运行时和各种网络设备都链接了它。3.0 版引入了可插拔的 provider 架构，1.1.1 系列已于 2023 年 9 月停止维护，3.5 版加入了后量子算法 [ML-KEM](https://ssl.sh/zh/glossary/ml-kem/) 和 ML-DSA。国内需要国密 TLCP 协议时，常用基于 OpenSSL 的分支铜锁（Tongsuo）。

## 为什么重要
OpenSSL 是证书工作的"通用语言"：几乎所有教程、CA 部署说明和排错文档都在用它的命令。用得广也意味着漏洞影响大：2014 年的 [Heartbleed](https://ssl.sh/zh/glossary/heartbleed/)（CVE-2014-0160）能读出服务器内存，包括私钥，波及大量 HTTPS 网站，也直接催生了 LibreSSL 分支。对服务器来说，及时修补被服务链接的库，比更新手边命令行工具的版本更重要。

## 例子
```bash
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，参数和默认行为可能不同。
- **升级软件包就万事大吉。** 长期运行的服务在重启前仍在使用旧版本的库。

## 相关术语

- [TLS](https://ssl.sh/zh/glossary/tls/): TLS 是 IETF 制定的传输层安全协议，为 HTTPS 等网络连接提供加密、完整性保护和服务器身份认证，是 SSL 的继任者。
- [X.509](https://ssl.sh/zh/glossary/x509/): X.509 是 ITU-T 制定的公钥证书标准格式，其互联网配置规范 RFC 5280 规定了 TLS 所用证书的结构和验证方法。
- [CSR](https://ssl.sh/zh/glossary/csr/): CSR 是证书签名请求，包含申请者的公钥和希望写入证书的身份信息，用私钥签名后提交给 CA 以申请证书。
- [PEM](https://ssl.sh/zh/glossary/pem/): PEM 是一种把 DER 二进制数据做 Base64 编码、再用 BEGIN 和 END 行包起来的文本格式，是存放证书和私钥最常见的方式。
- [Heartbleed](https://ssl.sh/zh/glossary/heartbleed/): Heartbleed 是 2014 年公开的 OpenSSL 漏洞（CVE-2014-0160），出在 TLS 心跳扩展上，任何人都能借此读取服务器内存片段，甚至包括私钥。
- [后量子密码](https://ssl.sh/zh/glossary/post-quantum-cryptography/): 后量子密码（PQC）是专为抵御大规模量子计算机攻击而设计的公钥密码算法，用来替代可能被量子计算机破解的 RSA 和 ECC。
- [ML-KEM](https://ssl.sh/zh/glossary/ml-kem/): ML-KEM 是 NIST 于 2024 年 8 月在 FIPS 203 中标准化的后量子密钥封装机制，源自 CRYSTALS-Kyber，用于抗量子的密钥建立。
- [PKCS#12](https://ssl.sh/zh/glossary/pkcs12/): PKCS#12 是一种用口令保护的二进制容器格式，可以把私钥、证书和证书链打包进一个文件，扩展名通常是 .p12 或 .pfx。
