您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。信息
本文档介绍了如何将 TLS 证书和关联的私钥转换为 PEM 或 PFX (PKCS #12) 格式。
Apigee Edge 仅支持在密钥库和信任库中存储 PEM 或 PFX 格式的证书。 将证书从任何现有格式转换为 PEM 或 PFX 格式的步骤依赖于 OpenSSL 工具包,适用于支持 OpenSSL 的任何环境。
准备工作
在使用本文档中的步骤之前,请确保您了解以下主题:
- 如果您不熟悉 PEM 或 PFX 格式,请参阅 TLS/SSL 简介。
- 如果您不熟悉证书格式,请参阅 SSL 证书格式。
- 如果您不熟悉 OpenSSL 库,请阅读 OpenSSL。
- 如果您想使用本指南中的命令行示例,请安装或更新到 OpenSSL 客户端的最新版本。
将证书从 DER 格式转换为 PEM 格式
本部分介绍了如何将证书和关联的私钥从 DER 格式转换为 PEM 格式。
-
使用
scp
、sftp
或任何其他实用程序,将包含要转换为 PEM 格式的完整证书链 (certificate.der
) 和关联的私钥 (private_key.der
) 的文件传输到安装了 OpenSSL 的机器。例如,使用
scp
命令将文件传输到包含 OpenSSL 的服务器上的/tmp
目录,如下所示:scp certificate.der servername:/tmp scp private_key.der servername:/tmp
其中 servername 是包含 OpenSSL 的服务器的名称。
- 登录安装了 OpenSSL 的机器。
-
在证书所在的目录中,运行以下命令,将证书和关联的私钥从 DER 格式转换为 PEM 格式:
openssl x509 -inform DER -in certificate.der -outform PEM -out certificate.pem openssl rsa -inform DER -in private_key.der -outform PEM -out private.key
- 验证证书是否已转换为 PEM 格式。
将证书从 P7B 格式转换为 PEM 格式
本部分介绍了如何将证书从 P7B 格式转换为 PEM 格式。
- 使用
scp
、sftp
或任何其他实用程序,将要转换为 PEM 格式的完整证书链 (certificate.p7b
) 包含的文件传输到安装了 OpenSSL 的机器。例如,使用
scp
命令将文件传输到包含 OpenSSL 的服务器上的/tmp
目录,如下所示:scp certificate.p7b servername:/tmp
其中 servername 是包含 OpenSSL 的服务器的名称。
- 登录安装了 OpenSSL 的机器。
-
在证书所在的目录中,运行以下命令,将证书从 P7B 格式转换为 PEM 格式:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
- 验证证书是否已转换为 PEM 格式。
将证书从 PFX 格式转换为 PEM 格式
本部分介绍了如何将 TLS 证书从 PFX 格式转换为 PEM 格式。
将 PFX 文件转换为 PEM 格式时,OpenSSL 会将所有证书和私钥放入单个文件中。您需要在文本编辑器中打开该文件,并将每个证书和私钥(包括 BEGIN/END 语句)复制到单独的文本文件中,并分别将其另存为 certificate.pfx
、Intermediate.pfx
(如果适用)、CACert.pfx
和 privateKey.key
。
Apigee 确实支持 PFX/PKCS #12 格式;不过,PEM 格式因多种原因(包括验证)而更为方便。
-
使用
scp
、sftp
或任何其他实用程序将要转换为 PEM 格式的证书和私钥(certificate.pfx
、Intermediate.pfx
CACert.pfx
、privateKey.key
)传输到安装了 OpenSSL 的机器上。例如,使用
scp
命令将文件传输到包含 OpenSSL 的服务器上的/tmp
目录,如下所示:scp certificate.pfx servername:/tmp
其中 servername 是包含 OpenSSL 的服务器的名称。
- 登录安装了 OpenSSL 的机器。
-
在证书所在的目录中,运行以下命令,将证书从 P7B 格式转换为 PEM 格式:
openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes
- 验证证书是否已转换为 PEM 格式。
将证书从 P7B 格式转换为 PFX 格式
本部分介绍了如何将 TLS 证书从 P7B 格式转换为 PFX 格式。
如需转换为 PFX 格式,您还需要获取私钥。
-
使用
scp
、sftp
或任何其他实用程序,将要转换为 PFX 的证书 (certificate.p7b
) 传输到安装了 OpenSSL 的机器。例如,使用
scp
命令将文件传输到包含 OpenSSL 的服务器上的/tmp
目录,如下所示:scp certificate.p7b servername:/tmp scp private_key.key servername:/tmp
其中 servername 是包含 OpenSSL 的服务器的名称。
- 登录安装了 OpenSSL 的机器。
-
从证书所在的目录中,运行以下命令以将证书从 P7B 转换为 PFX 格式,并将实体和中间 CA 证书导出到单独的文件:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer openssl pkcs12 -export -in certificate.cer -inkey private_key.key -out certificate.pfx -certfile CACert.cer
验证证书是否采用 PEM 格式
本部分介绍了如何验证证书是否为 PEM 格式。
- 如需查看 PEM 格式的证书,请运行以下命令:
openssl x509 -in certificate.pem -text -noout
- 如果您能够以直观易读的格式查看证书内容且没有任何错误,则可以确认证书采用 PEM 格式。
-
如果证书采用任何其他格式,您会看到如下错误:
unable to load certificate 12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE View DER encoded Certificate
将 PEM 密钥和证书文件打包到 PKCS12/PFX
-
确保私钥文件为 PEM 格式。对于证书,如果您的链有单独的 PEM 文件,请在文本编辑器中打开每个文件并将它们连接成一个文件,如下所示:
-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
-
使用
scp
、sftp
或任何其他实用程序将文件传输到安装了 OpenSSL 的机器:scp certificate.pem servername:/tmp scp private.key servername:/tmp
- 登录安装了 OpenSSL 的机器。
-
在文件所在的目录中,运行以下命令将文件打包到别名为 myalias 的 PKCS12 文件中。出现提示时,输入适当的密码:
openssl pkcs12 -export -in certificate.pem -inkey private.key -out keystore.pfx -name myalias