更新 Cloud 的 TLS 证书

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

用于在虚拟主机 或目标端点/目标服务器中指定密钥库和信任库的名称的方法决定了证书更新方式。您可以使用以下形式指定密钥库和信任库的名称:

  • 引用 - 首选
  • 直接名称
  • 流变量

其中每种方法在证书更新流程中都有不同的反应,如下表所述。

配置类型 如何更新/替换证书 如何更新虚拟主机、目标端点/目标服务器
引用(推荐)

对于密钥库,使用新名称 以及与旧别名具有 相同名称 的别名创建新密钥库。

对于信任库,使用新名称 创建信任库。

更新密钥库或信任库的引用。

不需要联系 Apigee Edge 支持团队

流变量(仅限目标端点)

对于密钥库,使用新名称 以及具有 相同名称或新名称的别名创建新密钥库。

对于信任库,使用新名称 创建信任库。

使用新密钥库、别名或 信任库的名称在每个请求中传递更新的流变量。

不需要联系 Apigee Edge 支持团队

直接 创建新的密钥库、别名、信任库。

对于虚拟主机,请与 Apigee Edge 支持团队联系 以重启路由器。

如果目标端点/目标服务器使用信任库,请重新部署代理。

直接 删除密钥库或信任库,然后使用相同的名称重新创建密钥库或信任库。

不需要更新虚拟主机。但是,在设置新的密钥库和 别名之前,API 请求会失败。

如果密钥库用于 Edge 和后端服务之间的双向 TLS, 请与 Apigee Edge 支持团队联系 以重启消息处理器。

直接 仅针对信任库,将新证书上传到信任库。

对于虚拟主机,请与 Apigee Edge 支持团队联系 以重启 Edge 路由器。

如果目标端点/目标服务器使用信任库,请与 Apigee Edge 支持团队联系 以重启消息处理器。

在更新前后测试证书

在更新证书之前,请使用以下 openssl 命令测试当前证书:

echo | openssl s_client -servername HOSTNAME -connect ORG-ENV.apigee.net:443 2>/dev/null | openssl x509 -noout -dates -subject

其中,HOSTNAME 是主机别名,ORG-ENV 是组织和 环境。例如:

echo | openssl s_client -servername example.com -connect myOrg-prod.apigee.net:443 2>/dev/null | openssl x509 -noout -dates -subject

您会在表单中看到输出:

notBefore=Dec 30 22:11:38 2015 GMT
notAfter=Dec 30 22:11:38 2016 GMT
subject= /OU=Domain Control Validated/CN=*.apigee.net

更新证书后,使用相同的命令对其进行测试。

确定虚拟主机或目标端点/目标服务器如何引用密钥库和 信任库

  1. 登录 Edge 管理界面,网址为 https://enterprise.apigee.com
  2. 在 Edge 管理界面菜单中,选择您的组织名称。
  3. 对于虚拟主机,确定虚拟主机如何指定密钥库 和信任库。
    1. 根据您的 Edge 界面版本:
      1. 如果您使用的是经典版 Edge 界面,请选择 API > 环境配置
      2. 如果您使用的是新版 Edge 界面,请选择管理 > 环境
    2. 选择虚拟主机 标签页。
    3. 对于要更新的特定虚拟主机,选择显示 按钮以显示其属性。显示内容包括以下属性:
      1. 密钥库:当前密钥库的名称,通常以 ref://mykeystoreref 形式的引用指定。

        或者,它可能由直接名称(形式为 myKeystoreName)指定,也可能由流变量(形式为 {ssl.keystore})指定。
      2. 密钥别名 。此属性的值是密钥库中的别名。您的新密钥库必须创建具有相同 名称的别名。
      3. 信任库:当前信任库的名称(如果有),通常 以引用形式指定,来自 ref://mytruststoreref

        或者,它可能由直接名称(形式为 myTruststoreName)指定,也可能由流变量(形式为 {ssl.truststorestore})指定。
  4. 对于目标端点/目标服务器,确定目标端点如何指定密钥库和信任库:
    1. 在 Edge 管理界面菜单中,选择 API
    2. 选择 API 代理的名称。
    3. 选择开发 标签页。
    4. 目标端点 下,选择 default
    5. 在代码区域中,系统会显示 TargetEndpoint 定义。检查 <SSLInfo> 元素,了解密钥库/信任库的定义方式。

      注意:如果目标端点使用目标服务器,则目标端点的 XML 定义会显示如下,其中 <LoadBalancer> 标记指定 API 代理使用的目标服务器。
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <LoadBalancer>
            <Server name="target1" />
            <Server name="target2" />
          </LoadBalancer>
          <Path>/test</Path>
        </HTTPTargetConnection>
          …
      </TargetEndpoint>
      检查目标服务器定义中的 <SSLInfo> 元素,确定密钥库/信任库的定义方式。

更新密钥库中的 TLS 证书

当密钥库中的证书过期时,您无法向密钥库上传新证书。相反,您需要创建一个新密钥库并上传证书,然后更新虚拟主机或目标服务器/目标端点以使用新密钥库。

通常,您会在当前证书过期之前创建一个新密钥库,然后更新 您的虚拟主机或目标端点以使用新密钥库,这样您就可以继续 处理请求,而不会因证书过期而中断。然后,您可以确保新密钥库正常运行后删除旧 密钥库。

对于基于云的 Edge 部署:

  1. 按照 使用 Edge 界面创建密钥库和信任库中的说明创建新密钥库并上传证书和密钥。

    在新密钥库中,请确保您使用的密钥别名与 现有密钥库中使用的名称相同。

  2. 对于入站连接(即进入 Edge 的 API 请求)使用的虚拟主机
    1. 如果您的虚拟主机使用密钥库的引用,请更新该引用。
    2. 如果您的虚拟主机使用密钥库的直接名称,请与 Apigee Edge 支持团队联系。
  3. 对于出站连接(即从 Apigee 到后端服务器)使用的目标端点/目标服务器
    1. 如果目标端点/目标服务器使用密钥库的引用,请更新该 引用。无需重新部署代理。
    2. 如果目标端点/目标服务器使用流变量,请更新该流变量。无需重新部署代理。
    3. 如果目标端点/目标服务器使用密钥库的直接名称,请更新 引用旧 密钥库和密钥别名的任何 API 代理的目标端点/目标服务器配置,以引用新密钥库和密钥别名。

      然后,您必须重新部署代理。

  4. 确认新密钥库正常运行后,删除包含过期证书和密钥的旧 密钥库。

更新信任库中的 TLS 证书

当信任库中的证书过期时,您通常会创建一个新信任库并上传证书, 然后更新虚拟主机或目标服务器/目标端点以使用新信任库。

如果证书是链的一部分,则您必须创建一个包含所有 证书的文件,并将该文件上传到单个别名,或者每个证书使用一个不同的别名,将链中的所有证书单独上传到 信任库。

通常,您会在当前证书过期之前创建一个新信任库,然后更新 您的虚拟主机或目标端点以使用新信任库,这样您就可以继续 处理请求,而不会因证书过期而中断。然后,您可以确保新信任库正常运行后删除旧 信任库。

对于基于云的 Edge 部署:

  1. 按照 使用 Edge 界面创建密钥库和信任库中的说明创建新信任库并上传证书。

    将新证书上传到新信任库时,别名名称并不重要。

  2. 对于入站连接(即进入 Edge 的 API 请求)使用的虚拟主机
    1. 如果您的虚拟主机使用信任库的引用,请更新该引用。
    2. 如果您的虚拟主机使用信任库的直接名称,请与 Apigee Edge 支持团队 联系。
  3. 对于出站连接(即从 Apigee 到后端服务器)使用的目标端点/目标服务器
    1. 如果目标端点/目标服务器使用信任库的引用,请更新该 引用。无需重新部署代理。
    2. 如果目标端点/目标服务器使用流变量,请更新该流变量。无需重新部署代理。
    3. 如果目标端点/目标服务器使用信任库的直接名称, 请更新引用旧信任库的任何 API 代理的目标端点/目标服务器配置,以引用新密钥库和密钥别名。

      然后,您必须重新部署代理。

  4. 确认新信任库正常运行后,删除包含过期证书的旧 信任库。