将证书转换为受支持的格式

您正在查看的是 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 格式。

  1. 将包含您要转换为 PEM 格式的完整证书链 (certificate.der) 和关联私钥 (private_key.der) 的文件转移到安装了 OpenSSL 的机器上,包括使用 scpsftp 或任何其他实用程序安装 OpenSSL。

    例如,使用 scp 命令将文件传输到包含 OpenSSL 的服务器上的 /tmp 目录,如下所示:

    scp certificate.der servername:/tmp
    scp private_key.der servername:/tmp
    

    其中,servername 是包含 OpenSSL 的服务器的名称。

  2. 登录安装了 OpenSSL 的机器。
  3. 从证书所在的目录中,运行以下命令,将证书和关联私钥从 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
    
  4. 验证证书是否已转换为 PEM 格式

将证书从 P7B 格式转换为 PEM 格式

本部分介绍如何将证书从 P7B 格式转换为 PEM 格式。

  1. 将包含您要转换为 PEM 格式的完整证书链 (certificate.p7b) 的文件传输到使用 scpsftp 或任何其他实用程序安装了 OpenSSL 的机器上。

    例如,使用 scp 命令将文件传输到包含 OpenSSL 的服务器上的 /tmp 目录,如下所示:

    scp certificate.p7b servername:/tmp
    

    其中,servername 是包含 OpenSSL 的服务器的名称。

  2. 登录安装了 OpenSSL 的机器。
  3. 从证书所在的目录中,运行以下命令,将证书从 P7B 格式转换为 PEM 格式:
    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
    
  4. 验证证书是否已转换为 PEM 格式

将证书从 PFX 格式转换为 PEM 格式

本部分介绍如何将 TLS 证书从 PFX 格式转换为 PEM 格式。

在将 PFX 文件转换为 PEM 格式时,OpenSSL 会将所有证书和私钥放入单个文件中。您需要在文本编辑器中打开该文件,将每个证书和私钥(包括 BEGIN/END 语句)复制到单个文本文件中,然后分别将其另存为 certificate.pfxIntermediate.pfx(如果适用)、CACert.pfxprivateKey.key

Apigee 确实支持 PFX/PKCS #12 格式;但是,PEM 格式非常方便,原因有很多,包括验证。

  1. 使用 scpsftp 或任何其他实用程序将要转换为 PEM 格式的证书和私钥(certificate.pfxIntermediate.pfxCACert.pfxprivateKey.key)转移到安装了 OpenSSL 的机器上。

    例如,使用 scp 命令将文件传输到包含 OpenSSL 的服务器上的 /tmp 目录,如下所示:

    scp certificate.pfx servername:/tmp
    

    其中,servername 是包含 OpenSSL 的服务器的名称。

  2. 登录安装了 OpenSSL 的机器。
  3. 从证书所在的目录中,运行以下命令,将证书从 P7B 格式转换为 PEM 格式:
    openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes
    
  4. 验证证书是否已转换为 PEM 格式

将证书从 P7B 格式转换为 PFX 格式

本部分介绍如何将 TLS 证书从 P7B 格式转换为 PFX 格式。

要转换为 PFX 格式,您还需要获取私钥。

  1. 使用 scpsftp 或任何其他实用程序将要转换为 PFX 的证书 (certificate.p7b) 转移到安装了 OpenSSL 的机器上。

    例如,使用 scp 命令将文件传输到包含 OpenSSL 的服务器上的 /tmp 目录,如下所示:

    scp certificate.p7b servername:/tmp
    scp private_key.key servername:/tmp
    

    其中,servername 是包含 OpenSSL 的服务器的名称。

  2. 登录安装了 OpenSSL 的机器。
  3. 从证书所在的目录中,运行以下命令以将证书从 P7B 转换为 PFX 格式,并将实体 CA 证书和中间 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 格式。

  1. 如需查看 PEM 格式的证书,请运行以下命令:
    openssl x509 -in certificate.pem -text -noout
    
  2. 如果您能以简单易懂的格式查看证书内容,而不会出现任何错误,则表明相应证书采用的是 PEM 格式。
  3. 如果证书是任何其他格式,您会看到如下错误:
    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