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

您正在查看 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. 使用 scpsftp 或任何其他实用程序,将包含要转换为 PEM 格式的完整证书链 (certificate.der) 和关联的私钥 (private_key.der) 的文件传输到安装了 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. 使用 scpsftp 或任何其他实用程序,将要转换为 PEM 格式的完整证书链 (certificate.p7b) 包含的文件传输到安装了 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.pfx CACert.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 证书导出到单独的文件:
    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

将 PEM 密钥和证书文件打包到 PKCS12/PFX

  1. 确保私钥文件为 PEM 格式。对于证书,如果您的链有单独的 PEM 文件,请在文本编辑器中打开每个文件并将它们连接成一个文件,如下所示:
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
  2. 使用 scpsftp 或任何其他实用程序将文件传输到安装了 OpenSSL 的机器:
    scp certificate.pem servername:/tmp
    scp private.key servername:/tmp
  3. 登录安装了 OpenSSL 的机器。
  4. 在文件所在的目录中,运行以下命令将文件打包到别名为 myalias 的 PKCS12 文件中。出现提示时,输入适当的密码:
    openssl pkcs12 -export -in certificate.pem -inkey private.key -out keystore.pfx -name myalias