问题描述
我们在为负载均衡 CLB 配置 HTTPS 监听器时,需要为监听器绑定服务器证书,用于 SSL 握手协商,应用于HTTPS 单向认证场景。 负载均衡仅支持 PEM 格式的证书,因此其它格式的证书需要转换为 PEM 格式后,才能上传至负载均衡。 那么我们如何使用 OpenSSL 工具对证书进行转换?
问题分析
OpenSSL是一个开放源代码的软件库包,分为三个主要的功能部分:
- openssl:一种命令行应用程序,用于执行各种加密任务,例如创建和处理证书及相关文件。
- libcrypto:一个全面而广泛的加密库。
- libssl:用于启用 SSL/TLS 通信的库,在客户端或服务器应用程序中提供 SSL 和 TLS 协议支持。
其中 openssl 命令行工具的使用场景包括:
- 创建和处理证书及相关文件。
- SSL/TLS 协议测试( openssl s_server、openssl s_client )。
如果您使用 Linux 系统,系统会自带 OpenSSL 工具,无需安装。如果您使用 Windows 系统,请获取OpenSSL软件包并安装。
解决方案
接下来,我们将展示如何使用 openssl 命令行工具对证书格式进行转换。
DER 转换为 PEM
DER 格式通常使用在Java平台中,证书文件后缀一般为 .der、.cer 或者 .crt。
- 运行以下命令进行证书转化:
openssl x509 -inform der -in certificate.cer -out certificate.pem
- 运行以下命令进行私钥转化:
openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem
P7B 转换为 PEM
P7B 格式通常使用在 Windows Server 和 Tomcat 中。
- 运行以下命令进行证书转化:
openssl pkcs7 -print_certs -in incertificate.p7b -out outcertificate.cer
PFX 转换为 PEM
PFX 格式通常使用在 Windows Server 中。
- 运行以下命令提取证书:
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
- 运行以下命令提取私钥:
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
参考文档