Loading...

文章背景图

OpenSSL:TLS 与加密工具包|部署与使用全指南

2026-10-28
0
- 字
- 分钟
|

官方信息表

项目 说明
项目名称 OpenSSL
一句话定位 商业级、功能完整的开源 TLS/加密工具包
代码仓库 openssl/openssl
实现语言 C
官方网站 openssl.org
开源协议 Apache License 2.0
Star 数 26k+
包含组件 libssl、libcrypto、openssl 命令行

官方配图

OpenSSL 项目官方图

项目背景

OpenSSL 是一个健壮的、商业级、功能完整的开源工具包,用于 TLS(传输层安全协议,前身 SSL)、DTLS(数据报 TLS)和 QUIC 协议。README 开篇就说:"OpenSSL is a robust, commercial-grade, full-featured Open Source Toolkit for the Transport Layer Security (TLS, formerly SSL), Datagram TLS (DTLS), and QUIC protocols."

OpenSSL 源自 SSLeay 库,由 Eric A. Young 和 Tim J. Hudson 开发。1998 年项目更名 OpenSSL,至今已有 28 年历史。它是互联网上最基础的加密库——浏览器、邮件客户端、VPN、金融系统,几乎所有需要加密通信的软件都在用 OpenSSL。

README 说明 OpenSSL 采用 Apache License 2.0 协议,可以商业和非商业用途自由使用。OpenSSL 的主仓库是私有的,但 GitHub 上有一个公开镜像,每次提交都会自动同步。

OpenSSL 是互联网安全的基石。当你访问一个 HTTPS 网站时,你的浏览器在用 TLS 协议和服务器通信,这个 TLS 实现很可能就是 OpenSSL。当你用 git clone 一个 https 仓库时,git 底层调用的也是 OpenSSL。

核心特性逐条翻译

README 列出了 OpenSSL 工具包包含三个组件:

libssl。 实现了所有 TLS 协议版本(最新到 TLSv1.3)、DTLS 协议版本(最新到 DTLSv1.3)和 QUIC 版本 1 协议。这是 HTTPS 加密通信的底层实现。

libcrypto。 一个完整的通用加密库。它是 TLS 实现的基础,也可以独立使用。包含各种加密算法:AES、RSA、ECC、SHA、MD5 等。

openssl 命令行工具。 一个加密任务的"瑞士军刀",可以创建密钥参数、生成 X.509 证书、CSR、CRL、计算消息摘要、加密解密、SSL/TLS 客户端和服务器测试、处理 S/MIME 邮件等。

FIPS 验证模块。 README 提到 OpenSSL 包含一个经过 FIPS 标准验证的加密模块,适合政府和金融等合规要求高的场景。

QUIC 支持。 最新 OpenSSL 版本已经支持 QUIC 协议(HTTP/3 的底层传输协议),这是下一代互联网协议的重要组成部分。

Provider 架构。 OpenSSL 3.x 引入了 Provider 架构,加密算法可以作为插件加载。你可以自定义 Provider 来支持国密算法或硬件加密模块。

环境要求

OpenSSL 对硬件要求极低:

  • 操作系统:Linux、Unix、Windows、macOS;
  • 编译依赖:C 编译器、Perl(用于构建配置)、make;
  • 内存:128MB 起步。

部署步骤

方式一:用包管理器安装(推荐)

大多数 Linux 发行版自带 OpenSSL:

# Debian/Ubuntu
sudo apt install openssl libssl-dev

# Fedora
sudo dnf install openssl openssl-devel

README 建议 Linux 上直接用发行版提供的预编译共享库,不要自己编译。

方式二:从源码编译

README 指向了 INSTALL.md 文档:

git clone https://github.com/openssl/openssl.git
cd openssl
./Configure
make
make test
sudo make install

README 还列出了各平台的注意事项:UNIX、Android、Windows、DOS、OpenVMS、Perl、Valgrind 各有专门文档。

方式三:Docker 运行

docker run --rm openssl version

方式四:第三方二进制

README 在 Wiki 上维护了一个第三方二进制列表,覆盖 Windows 和其他操作系统。

使用方法

查看版本:

openssl version

生成 RSA 私钥:

openssl genrsa -out private.key 2048

生成自签名证书:

openssl req -x509 -new -key private.key -out cert.crt -days 365

生成 CSR(证书签名请求):

openssl req -new -key private.key -out request.csr

计算文件的 SHA256 摘要:

openssl dgst -sha256 file.txt

加密文件:

openssl enc -aes-256-cbc -in file.txt -out file.enc

解密文件:

openssl enc -d -aes-256-cbc -in file.enc -out file.txt

测试 HTTPS 连接:

openssl s_client -connect example.com:443

查看证书详情:

openssl x509 -in cert.crt -text -noout

查看证书有效期:

openssl x509 -in cert.crt -noout -dates

生成 CSR 并指定主题:

openssl req -new -key private.key -out request.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=example.com"

README 指向了完整的在线手册,以及各版本的文档。

常见问题(FAQ)

问:OpenSSL 和 LibreSSL 有什么区别? LibreSSL 是 OpenSSL 的一个分叉,由 OpenBSD 团队维护,主要是为了清理代码和修复安全问题。但目前大多数软件还是用 OpenSSL。

问:OpenSSL 3.x 和 1.1.x 有什么区别? 3.x 是大版本升级,引入了 Provider 架构和新的加密 API。README 指向了迁移指南。

问:OpenSSL 命令怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365。

问:HTTPS 网站怎么排查证书问题? 用 openssl s_client -connect example.com:443 看证书链和握手过程。

问:OpenSSL 支持哪些加密算法? 支持 AES、RSA、ECC、ChaCha20、Poly1305、SHA-256、SHA-3 等主流算法。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 可以在 Windows 上用吗? 可以。README 提到 Windows 版本有专门的NOTES-WINDOWS.md 文档。

问:OpenSSL 怎么升级到 3.x? README 指向了迁移指南,详细说明从 1.1.x 升级到 3.x 的注意事项。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥,比 RSA 更短更快。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求,然后发给 CA 机构签发正式证书。

问:OpenSSL 怎么查看私钥密码? 用 openssl rsa -in private.key -check 检查私钥是否正确,不需要密码就能看(如果私钥有密码会提示输入)。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要,或者用 md5sum、sha1sum 等系统命令。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件,用 -d 参数解密。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求,发给 CA 机构签发正式证书。

问:OpenSSL 怎么查看证书? 用 openssl x509 -in cert.crt -text -noout 查看证书的完整信息。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么查看证书? 用 openssl x509 -in cert.crt -text -noout 查看证书的完整信息。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

问:OpenSSL 怎么解密文件? 用 openssl enc -d -aes-256-cbc -in file.enc -out file.txt 解密文件。

问:OpenSSL 怎么查看证书链? 用 openssl s_client -connect example.com:443 -showcerts 查看完整证书链。

问:OpenSSL 怎么生成 ECC 密钥? 用 openssl ecparam -genkey -name prime256v1 -out private.key 生成 ECC 私钥。

问:OpenSSL 怎么验证证书? 用 openssl verify cert.pem 验证证书是否可信。

问:OpenSSL 怎么查看证书有效期? 用 openssl x509 -in cert.crt -noout -dates 查看证书的起止日期。

问:OpenSSL 怎么生成自签名证书? 用 openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 一步生成私钥和自签名证书。

问:OpenSSL 怎么计算文件摘要? 用 openssl dgst -sha256 file.txt 计算 SHA256 摘要。

问:OpenSSL 怎么测试 HTTPS 连接? 用 openssl s_client -connect example.com:443 测试 HTTPS 连接和证书。

问:OpenSSL 怎么生成密钥? 用 openssl genrsa -out private.key 2048 生成 RSA 私钥。

问:OpenSSL 怎么生成 CSR? 用 openssl req -new -key private.key -out request.csr 生成证书签名请求。

问:OpenSSL 怎么加密文件? 用 openssl enc -aes-256-cbc -in file.txt -out file.enc 加密文件。

跳转链接

评论交流

文章目录