容器中的 Unified Access Gateway 功能要求使用 SSL 进行客户端连接。如果您希望容器使用 Unified Access Gateway 配置,则容器部署向导需要一个 PEM 格式文件以向容器的 Unified Access Gateway 配置提供 SSL 服务器证书链。单个 PEM 文件必须包含连同私钥在内的完整证书链:SSL 服务器证书、任何必需的中间 CA 证书、根 CA 证书和私钥。

有关在 Unified Access Gateway 中使用的证书类型的其他详细信息,请参阅 Unified Access Gateway 产品文档中标题为“选择正确的证书类型”的主题。

在容器部署向导的网关设置步骤中,您可以上载一个证书文件。在部署过程中,该文件将提交到部署的 Unified Access Gateway 实例的配置中。在向导界面中执行上载步骤时,向导将验证您上载的文件是否符合以下要求:

  • 该文件可以解析为 PEM 格式。
  • 它包含有效的证书链和私钥。
  • 该私钥与服务器证书的公钥匹配。

如果您的证书信息没有 PEM 格式的文件,您必须将证书信息转换为符合上述要求的文件。您必须将非 PEM 格式的文件转换为 PEM 格式,并创建一个包含完整证书链和私钥的 PEM 文件。您还需要编辑该文件以移除额外的信息(如果有),以便向导在解析该文件时不会遇到任何问题。概要步骤如下:

  1. 将您的证书信息转换为 PEM 格式,并创建一个包含证书链及私钥的 PEM 文件。
  2. 编辑此文件,如果除每组 ----BEGIN CERTIFICATE---------END CERTIFICATE----- 标记之间的证书信息以外有任何额外的证书信息,则移除额外的证书信息。

以下步骤中的代码示例假定您从一个名为 mycaservercert.pfx 的文件(其中包含根 CA 证书、中间 CA 证书信息和私钥)开始应用上述方法。

前提条件

  • 确认您具有证书文件。该文件可以采用 PKCS#12(.p12.pfx)格式,也可以采用 Java JKS 或 JCEKS 格式。
    重要事项: 证书链中的所有证书都必须在有效期内。 Unified Access Gateway 虚拟机要求证书链中的所有证书(包括中间证书)都必须在有效期内。如果证书链中有证书已过期,之后将证书上载到 Unified Access Gateway 配置时可能会出现意外故障。
  • 熟悉可用于转换证书的 openssl 命令行工具。请参阅https://www.openssl.org/docs/apps/openssl.html
  • 如果证书采用 Java JKS 或 JCEKS 格式,请熟悉 Java keytool 命令行工具,以便先将证书转换为 .p12.pks 格式,然后再转换为 .pem 文件。

过程

  1. 如果证书采用 Java JKS 或 JCEKS 格式,请使用 keytool 将证书转换为 .p12.pks 格式。
    重要事项: 在该转换过程中,请使用相同的源和目标密码。
  2. 如果证书采用 PKCS#12(.p12.pfx)格式,或者在将证书转换为 PKCS#12 格式后,请使用 openssl 将证书转换为 .pem 文件。
    例如,如果证书名称是 mycaservercert.pfx,您可以使用以下命令转换证书:
    openssl pkcs12 -in mycaservercert.pfx -nokeys -out mycaservercertchain.pem
    openssl pkcs12 -in mycaservercert.pfx -nodes -nocerts -out mycaservercertkey.pem
    
    上面的第一行从 mycaservercert.pfx 中获取证书,并将它们以 PEM 格式写入 mycaservercertchain.pem。上面的第二行从 mycaservercert.pfx 中获取私钥,并将它们以 PEM 格式写入 mycaservercertkey.pem
  3. (可选) 如果私钥未采用 RSA 格式,请将私钥转换为 RSA 私钥格式。
    Unified Access Gateway 实例要求使用 RSA 私钥格式。要检查您是否需要运行该步骤,请查看您的 PEM 文件,并检查私钥信息开头是否为以下内容:
    -----BEGIN PRIVATE KEY-----
    如果私钥以该行开头,则应该将私钥转换为 RSA 格式。如果私钥以 -----BEGIN RSA PRIVATE KEY----- 开头,则不必运行该步骤以转换私钥。
    要将私钥转换为 RSA 格式,请运行以下命令。
    openssl rsa -in mycaservercertkey.pem -check -out mycaservercertkeyrsa.pem
    PEM 文件中的私钥现在采用 RSA 格式( -----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----)。
  4. 将证书链 PEM 文件和私钥 PEM 文件中的信息合并,以创建一个单独的 PEM 文件。
    在以下示例中, mycaservercertkeyrsa.pem 的内容排在第一位(采用 RSA 格式的私钥),接着是来自 mycaservercertchain.pem 的内容,也就是您的主 SSL 证书,再接下来是一个中间证书,最后是根证书。
    -----BEGIN CERTIFICATE-----
    .... (your primary SSL certificate)
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    .... (the intermediate CA certificate)
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    .... (the trusted root certificate)
    -----END CERTIFICATE-----
    -----BEGIN RSA PRIVATE KEY-----
    .... (your server key from mycaservercertkeyrsa.pem)
    ----- END RSA PRIVATE KEY-----
    注: 服务器证书应当排在第一位,接着是任何中间证书,再接下来是受信任的根证书。
  5. 如果 BEGINEND 标记之间存在任何不需要的证书条目或无关的信息,请编辑文件以移除这些多余的内容。

结果

生成的 PEM 文件符合容器部署向导要求。