使用 Edge 界面创建密钥库和信任库

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

本文档介绍了如何为 Cloud 版 Edge 和私有云版 Edge 4.18.01 及更高版本创建、修改和删除密钥库和信任库。

<ph type="x-smartling-placeholder">

关于 Edge Cloud 的密钥库/信任存储区和虚拟主机

为 Edge Cloud 创建密钥库/信任库的过程中,您需要遵循有关使用虚拟主机的所有规则。例如,在 Cloud 中使用虚拟主机:

  • 虚拟主机必须使用 TLS。
  • 虚拟主机只能使用端口 443。
  • 您必须使用签名 TLS 证书。不允许在 Cloud 中的虚拟主机中使用未签名的证书。
  • TLS 证书指定的域名必须与虚拟主机的主机别名一致。

了解详情

在以下位置实现密钥库和信任库: 边缘

如需配置依赖于公钥基础架构的功能(例如 TLS),您需要创建包含必要密钥和数字证书的密钥库和信任库。

在 Edge 中,密钥库和信任库都由包含一个或多个别名的密钥库实体表示。也就是说,在 Edge 上,密钥库和信任库之间没有实现差异。

密钥库和信任库之间的区别在于 及其在 TLS 握手中的使用方式:

  • 密钥库 - 包含一个或多个密钥的密钥库实体 aliases,其中每个别名都包含一个证书/密钥对。
  • 信任库 - 包含一个或多个别名密钥库实体,其中每个别名仅包含一个证书。

为虚拟主机或目标端点配置 TLS 时,密钥库和信任库在 TLS 握手过程中提供不同的角色。配置虚拟主机或目标端点时,您需要在 <SSLInfo> 标记中分别指定密钥库和信任库,如以下虚拟主机示例所示:

<VirtualHost name="myTLSVHost"> 
    <HostAliases> 
        <HostAlias>apiTLS.myCompany.com</HostAlias> 
    </HostAliases> 
    <Interfaces/> 
    <Port>9006</Port> 
    <SSLInfo> 
        <Enabled>true</Enabled> 
        <ClientAuthEnabled>false</ClientAuthEnabled> 
        <KeyStore>ref://keystoreref</KeyStore> 
        <KeyAlias>myKeyAlias</KeyAlias> 
    </SSLInfo>
</VirtualHost>

在此示例中,您指定了虚拟主机使用的密钥库的名称和 传输层安全协议 (TLS) 密钥库。您可以使用引用来指定密钥库名称,以便在证书过期后进行更改。别名包含一个证书/密钥对,用于向访问虚拟主机的 TLS 客户端标识虚拟主机。在此示例中,不需要信任库。

如果需要信任库(例如对于双向 TLS 配置),请使用 <TrustStore> 标记用于指定信任库:

<VirtualHost name="myTLSVHost"> 
    <HostAliases> 
        <HostAlias>apiTLS.myCompany.com</HostAlias> 
    </HostAliases> 
    <Interfaces/> 
    <Port>9006</Port> 
    <SSLInfo> 
        <Enabled>true</Enabled> 
        <ClientAuthEnabled>true</ClientAuthEnabled> 
        <KeyStore>ref://keystoreref</KeyStore> 
        <KeyAlias>myKeyAlias</KeyAlias> 
        <TrustStore>ref://truststoreref</TrustStore>
    </SSLInfo>
</VirtualHost>

在此示例中,<TrustStore> 标记仅引用密钥库,而未指定特定别名。密钥库中的每个别名都包含一个证书或证书链,这些证书或证书链会在 TLS 握手过程中使用。

支持的证书格式

格式 支持 API 和界面上传 支持北向 已验证
PEM
* PKCS12
注意:Apigee 会在内部将 PKCS12 转换为 PEM。
* DER
* PKCS7

* 我们建议尽可能使用 PEM。

将 PKCS12 密钥库与 Edge for Private Cloud 4.53.00 或更高版本搭配使用

如果您使用的是 Edge for Private Cloud 4.53.00 或更高版本,则应仅使用 PKCS12 密钥库将密钥和相关证书上传到 Apigee。如需有关将现有密钥和证书转换为 PKCS12/PFX 格式方面的帮助,请参阅将证书转换为受支持的格式

关于添加别名

在 Edge 上,密钥库包含一个或多个别名,其中每个别名都包含:

  • TLS 证书(作为 PEM 或 PKCS12/PFX 文件)- 由证书授权机构 (CA) 签名的证书、包含由 CA 签名的最后一个证书的证书链的文件,或自签名证书。
  • 作为 PEM 或 PKCS12/PFX 文件的私钥。Edge 支持的密钥大小上限为 2048 位。口令是可选的。

在 Edge 上,信任库包含一个或多个别名,其中每个别名都包含:

  • PEM 格式的 TLS 证书 - 由证书授权机构签名的证书 证书链、证书链(其中最后一个证书由 CA 签名)或自签名证书 证书。

Edge 提供了一个界面和 API,您可以使用它们创建密钥库、创建别名、上传证书/密钥对以及更新证书。您用于创建信任库的界面和 API 与 用于创建密钥库。不同之处在于,在创建信任库时,您可以创建别名 仅包含一个证书

证书和密钥文件格式简介

您可以将证书和密钥表示为 PEM 文件或 PKCS12/PFX 文件。PEM 文件符合 X.509 格式。如果您的证书或私钥未在 PEM 文件中定义,您可以将其转换为 PEM 文件。openssl

不过,许多 .crt 文件和 .key 文件已采用 PEM 格式。如果这些文件是文本格式 文件,并包含在以下文件中:

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

或者:

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

然后,这些文件就与 PEM 格式兼容,您可以在密钥库或 信任库,而不将其转换为 PEM 文件。

证书链简介

如果证书是链的一部分,则您应根据证书是在密钥库中还是在信任库中使用来处理它:

  • 密钥库 - 如果证书是链的一部分,则您必须创建一个包含链中所有证书的文件。证书必须按顺序排列,并且最后一个证书必须是根证书 或由根证书签名的中间证书。
  • 信任库 - 如果证书是链的一部分,则您必须创建一个包含所有证书的文件,并将该文件上传到别名,或者每个证书使用一个不同的别名,将链中的所有证书单独上传到信任库。如果您将它们作为单个证书上传,则证书必须按顺序排列,并且最后一个证书必须是根证书或由根证书签名的中间证书。
  • 如果您创建一个包含多个证书的单个文件,则必须在每个证书之间插入一个空行。

例如,您可以将所有证书合并到一个 PEM 文件中。证书必须按顺序排列,并且最后一个证书必须是根证书或由根证书签名的中间证书:

-----BEGIN CERTIFICATE----- 
(Your Primary TLS certificate) 
-----END CERTIFICATE----- 

-----BEGIN CERTIFICATE----- 
(Intermediate certificate) 
-----END CERTIFICATE-----
 
-----BEGIN CERTIFICATE----- 
(Root certificate or intermediate certificate signed by a root certificate) 
-----END CERTIFICATE-----

如果您的证书表示为 PKCS12/PFX 文件,您可以使用 openssl 命令根据证书链创建 PKCS12/PFX 文件,如下所示:

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

在信任存储区中使用证书链时,您并不总是需要将 证书。例如,您可以上传客户端证书 client_cert_1 和客户端证书颁发机构的证书 ca_cert

在双向 TLS 身份验证期间,当服务器在 TLS 握手过程中向客户端发送 client_cert_1 时,客户端身份验证会成功。

或者,您还有另一个证书 client_cert_2,由同一证书 ca_cert 签名。不过,您无法将 client_cert_2 上传到信任库。 信任库仍仅包含 client_cert_1ca_cert

当服务器在 TLS 握手过程中传递 client_cert_2 时,请求会成功。这是因为,当信任库中不存在 client_cert_2,但 client_cert_2 由信任库中存在的证书签名时,Edge 会允许 TLS 验证成功。如果您从信任库中移除 CA 证书 ca_cert,则 TLS 验证会失败。

FIPS 注意事项

如果您在启用了 FIPS 的操作系统上使用适用于私有云 4.53.00 或更高版本的 Edge,则应仅使用 PKCS12 密钥库将密钥和相关证书上传到 Apigee。

浏览“TLS 密钥库”页面

访问“TLS 密钥库”页面,如下所述。

Edge

如需使用 Edge 界面访问“TLS 密钥库”页面,请执行以下操作:

  1. 组织管理员身份登录 https://apigee.com/edge
  2. 选择您的组织。
  3. 依次选择管理 > 环境 > TLS 密钥库

传统边缘(私有云)

如需使用 Classic Edge 界面访问“TLS 密钥库”页面,请执行以下操作:

  1. 组织管理员身份登录 http://ms-ip:9000,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。
  2. 选择您的组织。
  3. 选择管理 >环境配置 >TLS 密钥库

系统随即会显示“TLS 密钥库”页面:

如上图所示,您可以在“TLS 密钥库”页面上:

查看别名

如需查看别名,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 选择环境(通常是 prodtest)。
  3. 点击与要查看的别名相关联的行。

    系统会显示别名证书和密钥的详细信息。

    您可以查看别名的所有信息,包括失效日期。

  4. 使用页面顶部的按钮管理证书,以执行以下操作:
    • 将证书下载为 PEM 文件。
    • 生成 CSR。如果您的证书已过期,并且您想续期,可以下载证书签名请求 (CSR)。然后,将 CSR 发送给 CA 以获取新证书。
    • 更新证书。注意:如果您更新的证书 当前正由某个虚拟主机或目标服务器/目标端点使用,那么您必须 联系 Apigee Edge 支持,以重启路由器和消息处理器。更新 Deployment 的 是: <ph type="x-smartling-placeholder">
        </ph>
      1. 创建新的密钥库或信任库。
      2. 将新证书添加到新的密钥库或信任库。
      3. 更新虚拟主机或目标服务器/目标端点中对密钥库或信任库的引用。如需了解详情,请参阅更新 Cloud 的 TLS 证书
      4. 删除别名。注意:如果您删除了别名,而该别名目前正在被虚拟主机或目标端点使用,则虚拟主机或目标端点将会失败。

创建密钥库/信任库和别名

您可以创建密钥库,以用作 TLS 密钥库或 TLS 信任库。密钥库 特定于您组织中的环境,例如测试或生产环境。 因此,如果您想先在测试环境中测试密钥库,然后再将其部署到生产环境,则必须在两个环境中都创建该密钥库。

要在某个环境中创建密钥库,您只需指定密钥库名称。在您之后 在环境中创建已命名的密钥库,然后便可创建别名并上传证书/密钥对 (密钥库)或仅将证书 (truststore) 上传到别名中。

如需创建密钥库,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 选择环境(通常是 prodtest)。
  3. 点击 + 密钥库
  4. 指定密钥库名称。名称只能包含字母数字字符。
  5. 点击添加密钥库。新的密钥库会显示在列表中。
  6. 使用以下某个过程来添加别名。另请参阅 支持的证书文件格式

从证书创建别名 (truststore) )

如需通过证书创建别名,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 将光标悬停在密钥库上以显示操作菜单,然后点击 +
  3. 指定别名
  4. 在“证书详细信息”下,从“类型”下拉菜单中选择仅证书
  5. 点击证书文件旁边的选择文件,导航到 PEM 文件,然后点击打开
  6. 默认情况下,API 会进行检查以确保证书未过期。根据需要选择 允许过期证书以跳过验证。
  7. 选择保存以上传证书并创建别名。

通过 JAR 文件创建别名(仅限密钥库)

要从 JAR 文件创建别名,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 将光标悬停在密钥库上以显示操作菜单,然后点击 +
  3. 指定别名
  4. 在“Certificate details”(证书详情)下,从“Type”(类型)下拉菜单中选择 JAR File(JAR 文件)。
  5. 点击 JAR 文件旁边的选择文件,找到包含证书和密钥的 JAR 文件,然后点击打开
  6. 如果密钥有密码,请指定 Password。如果密钥没有 请将此字段留空。
  7. 默认情况下,API 会进行检查以确保证书未过期。(可选)选择允许过期证书以跳过验证。
  8. 选择保存以上传密钥和证书并创建别名。

通过证书创建别名 密钥(仅限密钥库)

如需根据证书和密钥创建别名,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 将光标悬停在密钥库上以显示操作菜单,然后点击 +
  3. 指定别名
  4. 在“证书详细信息”下,从“类型”下拉菜单中选择证书和密钥
  5. 点击证书文件旁边的选择文件,找到包含相应证书的 PEM 文件,然后点击打开
  6. 如果密钥有密码,请指定 Key Password。如果密钥没有 请将此字段留空。
  7. 点击 Key File(密钥文件)旁边的 Choose File(选择文件),找到包含该密钥的 PEM 文件,然后点击 Open(打开)。
  8. 默认情况下,API 会进行检查以确保证书未过期。根据需要选择 允许过期证书以跳过验证。
  9. 选择保存以上传密钥和证书,并创建别名。

通过 PKCS12/PFX 文件(仅限密钥库)

如需根据包含证书和密钥的 PKCS12 文件创建别名,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 将光标悬停在密钥库上以显示操作菜单,然后点击 +
  3. 指定别名
  4. 在“证书详细信息”下,从“类型”下拉菜单中选择 PKCS12/PFX
  5. 点击 PKCS12/PFX 旁边的选择文件,找到包含密钥和证书的文件,然后点击打开
  6. 如果密钥有密码,请为 PKCS12/PFX 文件指定密码。 如果密钥没有密码,请将此字段留空。
  7. 默认情况下,API 会进行检查,确保证书未过期。根据需要选择 允许过期证书以跳过验证。
  8. 选择保存,以上传文件并创建别名。

通过自签名证书创建别名(仅限密钥库)

要创建使用自签名证书的别名,您需要在表单中填写 创建证书所需的信息然后,Edge 会创建证书和私钥对,并将其上传到别名。

如需使用自签名证书创建别名,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 将光标置于密钥库上以显示操作菜单,然后点击 +
  3. 指定别名
  4. 在“证书详情”下的“类型”下拉列表中选择自签名证书
  5. 使用下表填写表单。
  6. 选择保存以创建证书和私钥对,并将其上传到 别名。

在生成的证书中,您会看到以下额外字段:

  • 颁发者
    签署和颁发证书的实体。对于自签名证书,这是您在创建证书时指定的 CN。
  • 有效期
    证书有效期表示为两个日期:证书有效期的开始日期和证书有效期的结束日期。这两种时间戳均可编码为 UTCTime 或 GeneralizedTime 值。

下表介绍了表单字段:

表单字段 说明 默认 必填
别名名称 别名名称。长度上限为 128 个字符。 不适用
密钥大小 密钥的大小(以位为单位)。默认值和最大值均为 2048 位。 2048
签名算法 用于生成私钥的签名算法。有效值为“SHA512withRSA”“SHA384withRSA”和“SHA256withRSA”(默认)。 SHA256withRSA
证书有效期(天) 证书的有效期(以天为单位)。接受正非零值。 365
通用名称 组织的公用名 (CN) 用于标识完全限定域名 与证书相关联它通常由主机和域名组成。 例如,api.enterprise.apigee.com、www.apigee.com 等。长度上限为 64 个字符。

根据证书类型, CN 可以是属于同一域名的一个或多个主机名(例如,example.com、 www.example.com)、通配符名称(例如 *.example.com)或网域列表。请勿包含任何协议(http:// 或 https://)、端口号或资源路径。

只有当请求主机名与证书公用名中的至少一个匹配时,证书才有效。

不适用
电子邮件 电子邮件地址。长度上限为 255 个字符。 不适用
组织部门名称 组织团队名称。长度上限为 64 个字符。 不适用
组织名称 组织名称。长度上限为 64 个字符。 不适用
市行政区 城市/城镇名称。长度上限为 128 个字符。 不适用
州/省 州/省名称。长度上限为 128 个字符。 不适用
国家/地区 由两个字母组成的国家/地区代码。例如,IN 代表印度,US 代表美国。 不适用
别称 备用主机名列表。允许将其他身份绑定到证书的主题。定义的选项包括互联网电子邮件地址、DNS 名称、IP 地址和统一资源标识符 (URI)。

每个值最多包含 255 个字符。您可以使用英文逗号分隔姓名,也可以在输入每个姓名后按 Enter 键。

不适用

测试密钥库或信任库

您可以在 Edge 界面中测试信任库和密钥库,以验证它们是否配置正确。测试界面会验证从 Edge 向后端服务发出的 TLS 请求。后端服务 可以配置为支持单向 TLS 或双向 TLS。

如需测试单向 TLS,请执行以下操作:

  1. 访问“TLS 密钥库”页面
  2. 选择环境(通常是 prodtest)。
  3. 将光标放在要测试的 TLS 密钥库上以显示操作菜单,然后点击 Test。以下对话框 对话框中会显示以下信任库名称:
  4. 输入后端服务的主机名。
  5. 输入 TLS 端口号(通常为 443)。
  6. (可选)指定任何协议或加密。
  7. 选择测试

如需测试双向 TLS,请执行以下操作:

  1. 对于所需的 truststore,请选择 Test 按钮。
  2. 在对话框中,针对 SSL 测试类型选择双向。 系统会显示以下对话框:
  3. 指定在双向 TLS 中使用的密钥库的名称。
  4. 在密钥库中指定包含证书和密钥的别名。
  5. 输入后端服务的主机名。
  6. 输入 TLS 端口号(通常为 443)。
  7. (可选)指定任何协议或加密。
  8. 选择测试

将证书添加到信任库以实现双向 TLS

当为入站连接(即向 Edge 发出 API 请求)使用双向 TLS 时,信任库包含每个获准向 Edge 发出请求的客户端的证书或 CA 链。

首次配置信任库时,您可以添加已知客户端的所有证书。 不过,随着时间的推移,您可能需要在添加新客户端时向信任库添加其他证书。

如需向用于双向 TLS 的信任库添加新证书,请执行以下操作:

  1. 确保您使用的是虚拟主机中对信任库的引用。
  2. 按照上文中的说明向信任库上传新证书 从证书创建别名(仅限信任库)
  3. 更新信任库引用以将其设置为相同的值。 此更新会导致 Edge 重新加载信任库和新证书。

    如需了解详情,请参阅修改引用

删除密钥库/信任库或别名

删除密钥库/信任库或别名时必须谨慎。如果您删除密钥库 信任库或别名, 通过虚拟主机或目标端点/目标服务器进行的 API 调用将失败。

通常,删除密钥库/信任库或别名的流程如下:

  1. 按照上述说明创建新的密钥库/信任库或别名。
  2. 对于入站连接(即向 Edge 发出的 API 请求),请更新虚拟主机配置以引用新的密钥库和密钥别名。
  3. 对于出站连接(即从 Apigee 到后端服务器):
    1. 为引用旧版 API 代理的所有 API 代理更新 TargetEndpoint 配置 密钥库和密钥别名,以引用新的密钥库和密钥别名。如果您的 TargetEndpoint 引用 TargetServer,请更新 TargetServer 定义以引用新的密钥库和密钥别名。
    2. 如果直接从 TargetEndpoint 定义中引用密钥库和信任库,则必须重新部署代理。如果 TargetEndpoint 引用 TargetServer 定义,而 TargetServer 定义引用密钥库和 信任库,则无需重新部署代理。
  4. 确认您的 API 代理运行正常。
  5. 删除密钥库/信任库或别名。

删除密钥库

您可以将光标移动到列表中的密钥库或信任库以显示相应操作,从而删除密钥库或信任库。 菜单,然后点击 。如果您删除虚拟主机或目标端点/目标服务器正在使用的密钥库或信任库,通过虚拟主机或目标端点/目标服务器进行的所有 API 调用都将失败。

注意:在将虚拟主机和目标端点/目标服务器转换为使用新密钥库之前,请勿删除密钥库。

删除别名

您可以将光标放在列表中的别名上以显示相应操作,从而删除别名。 菜单,然后点击 。如果您删除了某个虚拟主机正在使用的别名,或 目标端点/目标服务器,通过虚拟主机或目标端点/目标进行的所有 API 调用 就会发生故障

注意:在将虚拟主机和目标端点/目标服务器转换为使用新的密钥库和别名之前,请勿删除别名。