OpenSSL 证书与密钥全指南
OpenSSL 是密码学的瑞士军刀。无论您是为网站生成新的 SSL 证书,在不同格式之间转换密钥,还是调试证书链问题,OpenSSL 都是您的首选工具。然而,它的命令行界面因其复杂性而臭名昭著。
本指南提供了一条通往最常见 OpenSSL 任务的清晰路径,从生成您的第一个自签名证书到执行高级转换。
1. 生成证书和请求
在拥有证书之前,您需要生成密钥,通常还需要一个证书签名请求 (CSR)。
在线 CSR 生成器
虽然 在线 CSR 生成器 是创建请求的快捷方式,但最好在本地生成,这样您的私钥就永远不会离开您的服务器。CSR 包含有关您的组织的信息以及您希望由证书颁发机构 (CA) 签名的公钥。
自签名证书生成器
对于内部测试或暂存环境,自签名证书生成器 通常就足够了。它允许您创建一个不被公共浏览器信任但功能上与加密通信相同的证书。
OpenSSL 速查表:密钥生成
- 生成 RSA 私钥:
openssl genrsa -out private.key 2048 - 生成 CSR:
openssl req -new -key private.key -out request.csr - 生成自签名证书:
openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt
2. 格式转换
不同的平台和服务器需要不同的证书格式。
PEM 转 DER 和 DER 转 PEM 转换器
- PEM: 最常见的格式,通常为
.crt或.pem。它是 base64 编码的,包含类似-----BEGIN CERTIFICATE-----的文本。 - DER: 证书的二进制表示,通常由 Java 或专用硬件使用。
OpenSSL 速查表:转换命令
- PEM 转 DER 转换器:
openssl x509 -in cert.pem -outform der -out cert.der - DER 转 PEM 转换器:
openssl x509 -in cert.der -inform der -out cert.pem
PKCS#12 转 PEM 转换器
Windows 和一些企业系统使用 PKCS#12 (.p12 或 .pfx) 格式,它将证书和私钥打包成一个受密码保护的文件。
- PKCS#12 转 PEM 转换器:
openssl pkcs12 -in cert.p12 -out cert.pem -nodes
3. 调试与验证
没有什么比“无效证书”错误更令人沮丧的了。用于解码和检查证书的工具至关重要。
SSL 证书解码器
SSL 证书解码器 允许您读取证书文件的可读详细信息。
- 查看证书信息:
openssl x509 -in certificate.crt -text -noout - 查看 CSR 信息:
openssl req -in request.csr -text -noout
证书链检查器
证书链检查器 确保您的服务器提供完整的证书链,包括中间证书。如果链条断裂,移动设备和某些浏览器将显示安全警告。
- 验证本地文件:
openssl verify -CAfile ca-bundle.crt certificate.crt - 检查远程服务器:
openssl s_client -connect google.com:4443
4. 总结
OpenSSL 是一个强大但令人望而生畏的工具。通过使用我们的 OpenSSL 速查表 并了解常见任务(如 PEM 转 DER 转换 或 CSR 生成),您可以自信地管理任何现代 Web 应用程序的安全基础设施。
请务必记住对私钥保密,使用强大的算法(如 RSA 2048+ 或 ECC),并在部署到生产环境之前验证您的证书链。