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

您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
info

本文档介绍了如何将 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