<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_1
和 ca_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 密钥库”页面,请执行以下操作:
- 以组织管理员身份登录 https://apigee.com/edge。
- 选择您的组织。
- 依次选择管理 > 环境 > TLS 密钥库。
传统边缘(私有云)
如需使用 Classic Edge 界面访问“TLS 密钥库”页面,请执行以下操作:
- 以组织管理员身份登录
http://ms-ip:9000
,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 选择您的组织。
- 选择管理 >环境配置 >TLS 密钥库。
系统随即会显示“TLS 密钥库”页面:
如上图所示,您可以在“TLS 密钥库”页面上:
查看别名
如需查看别名,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 选择环境(通常是
prod
或test
)。 - 点击与要查看的别名相关联的行。
系统会显示别名证书和密钥的详细信息。
您可以查看别名的所有信息,包括失效日期。 - 使用页面顶部的按钮管理证书,以执行以下操作:
- 将证书下载为 PEM 文件。
- 生成 CSR。如果您的证书已过期,并且您想续期,可以下载证书签名请求 (CSR)。然后,将 CSR 发送给 CA 以获取新证书。
- 更新证书。注意:如果您更新的证书
当前正由某个虚拟主机或目标服务器/目标端点使用,那么您必须
联系 Apigee Edge 支持,以重启路由器和消息处理器。更新 Deployment 的
是:
<ph type="x-smartling-placeholder">
- </ph>
- 创建新的密钥库或信任库。
- 将新证书添加到新的密钥库或信任库。
- 更新虚拟主机或目标服务器/目标端点中对密钥库或信任库的引用。如需了解详情,请参阅更新 Cloud 的 TLS 证书。
- 删除别名。注意:如果您删除了别名,而该别名目前正在被虚拟主机或目标端点使用,则虚拟主机或目标端点将会失败。
创建密钥库/信任库和别名
您可以创建密钥库,以用作 TLS 密钥库或 TLS 信任库。密钥库 特定于您组织中的环境,例如测试或生产环境。 因此,如果您想先在测试环境中测试密钥库,然后再将其部署到生产环境,则必须在两个环境中都创建该密钥库。
要在某个环境中创建密钥库,您只需指定密钥库名称。在您之后 在环境中创建已命名的密钥库,然后便可创建别名并上传证书/密钥对 (密钥库)或仅将证书 (truststore) 上传到别名中。
如需创建密钥库,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 选择环境(通常是
prod
或test
)。 - 点击 + 密钥库。
- 指定密钥库名称。名称只能包含字母数字字符。
- 点击添加密钥库。新的密钥库会显示在列表中。
- 使用以下某个过程来添加别名。另请参阅 支持的证书文件格式。
从证书创建别名 (truststore) )
如需通过证书创建别名,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 将光标悬停在密钥库上以显示操作菜单,然后点击 +。
- 指定别名。
- 在“证书详细信息”下,从“类型”下拉菜单中选择仅证书。
- 点击证书文件旁边的选择文件,导航到 PEM 文件,然后点击打开。
- 默认情况下,API 会进行检查以确保证书未过期。根据需要选择 允许过期证书以跳过验证。
- 选择保存以上传证书并创建别名。
通过 JAR 文件创建别名(仅限密钥库)
要从 JAR 文件创建别名,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 将光标悬停在密钥库上以显示操作菜单,然后点击 +。
- 指定别名。
- 在“Certificate details”(证书详情)下,从“Type”(类型)下拉菜单中选择 JAR File(JAR 文件)。
- 点击 JAR 文件旁边的选择文件,找到包含证书和密钥的 JAR 文件,然后点击打开。
- 如果密钥有密码,请指定 Password。如果密钥没有 请将此字段留空。
- 默认情况下,API 会进行检查以确保证书未过期。(可选)选择允许过期证书以跳过验证。
- 选择保存以上传密钥和证书并创建别名。
通过证书创建别名 密钥(仅限密钥库)
如需根据证书和密钥创建别名,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 将光标悬停在密钥库上以显示操作菜单,然后点击 +。
- 指定别名。
- 在“证书详细信息”下,从“类型”下拉菜单中选择证书和密钥。
- 点击证书文件旁边的选择文件,找到包含相应证书的 PEM 文件,然后点击打开。
- 如果密钥有密码,请指定 Key Password。如果密钥没有 请将此字段留空。
- 点击 Key File(密钥文件)旁边的 Choose File(选择文件),找到包含该密钥的 PEM 文件,然后点击 Open(打开)。
- 默认情况下,API 会进行检查以确保证书未过期。根据需要选择 允许过期证书以跳过验证。
- 选择保存以上传密钥和证书,并创建别名。
通过 PKCS12/PFX 文件(仅限密钥库)
如需根据包含证书和密钥的 PKCS12 文件创建别名,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 将光标悬停在密钥库上以显示操作菜单,然后点击 +。
- 指定别名。
- 在“证书详细信息”下,从“类型”下拉菜单中选择 PKCS12/PFX。
- 点击 PKCS12/PFX 旁边的选择文件,找到包含密钥和证书的文件,然后点击打开。
- 如果密钥有密码,请为 PKCS12/PFX 文件指定密码。 如果密钥没有密码,请将此字段留空。
- 默认情况下,API 会进行检查,确保证书未过期。根据需要选择 允许过期证书以跳过验证。
- 选择保存,以上传文件并创建别名。
通过自签名证书创建别名(仅限密钥库)
要创建使用自签名证书的别名,您需要在表单中填写 创建证书所需的信息然后,Edge 会创建证书和私钥对,并将其上传到别名。
如需使用自签名证书创建别名,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 将光标置于密钥库上以显示操作菜单,然后点击 +。
- 指定别名。
- 在“证书详情”下的“类型”下拉列表中选择自签名证书。
- 使用下表填写表单。
- 选择保存以创建证书和私钥对,并将其上传到 别名。
在生成的证书中,您会看到以下额外字段:
- 颁发者
签署和颁发证书的实体。对于自签名证书,这是您在创建证书时指定的 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,请执行以下操作:
- 访问“TLS 密钥库”页面。
- 选择环境(通常是
prod
或test
)。 - 将光标放在要测试的 TLS 密钥库上以显示操作菜单,然后点击 Test。以下对话框
对话框中会显示以下信任库名称:
- 输入后端服务的主机名。
- 输入 TLS 端口号(通常为 443)。
- (可选)指定任何协议或加密。
- 选择测试。
如需测试双向 TLS,请执行以下操作:
- 对于所需的 truststore,请选择 Test 按钮。
- 在对话框中,针对 SSL 测试类型选择双向。
系统会显示以下对话框:
- 指定在双向 TLS 中使用的密钥库的名称。
- 在密钥库中指定包含证书和密钥的别名。
- 输入后端服务的主机名。
- 输入 TLS 端口号(通常为 443)。
- (可选)指定任何协议或加密。
- 选择测试。
将证书添加到信任库以实现双向 TLS
当为入站连接(即向 Edge 发出 API 请求)使用双向 TLS 时,信任库包含每个获准向 Edge 发出请求的客户端的证书或 CA 链。
首次配置信任库时,您可以添加已知客户端的所有证书。 不过,随着时间的推移,您可能需要在添加新客户端时向信任库添加其他证书。
如需向用于双向 TLS 的信任库添加新证书,请执行以下操作:
- 确保您使用的是虚拟主机中对信任库的引用。
- 按照上文中的说明向信任库上传新证书 从证书创建别名(仅限信任库)。
更新信任库引用以将其设置为相同的值。 此更新会导致 Edge 重新加载信任库和新证书。
如需了解详情,请参阅修改引用。
删除密钥库/信任库或别名
删除密钥库/信任库或别名时必须谨慎。如果您删除密钥库 信任库或别名, 通过虚拟主机或目标端点/目标服务器进行的 API 调用将失败。
通常,删除密钥库/信任库或别名的流程如下:
- 按照上述说明创建新的密钥库/信任库或别名。
- 对于入站连接(即向 Edge 发出的 API 请求),请更新虚拟主机配置以引用新的密钥库和密钥别名。
- 对于出站连接(即从 Apigee 到后端服务器):
- 为引用旧版 API 代理的所有 API 代理更新 TargetEndpoint 配置 密钥库和密钥别名,以引用新的密钥库和密钥别名。如果您的 TargetEndpoint 引用 TargetServer,请更新 TargetServer 定义以引用新的密钥库和密钥别名。
- 如果直接从 TargetEndpoint 定义中引用密钥库和信任库,则必须重新部署代理。如果 TargetEndpoint 引用 TargetServer 定义,而 TargetServer 定义引用密钥库和 信任库,则无需重新部署代理。
- 确认您的 API 代理运行正常。
- 删除密钥库/信任库或别名。
删除密钥库
您可以将光标移动到列表中的密钥库或信任库以显示相应操作,从而删除密钥库或信任库。
菜单,然后点击 。如果您删除虚拟主机或目标端点/目标服务器正在使用的密钥库或信任库,通过虚拟主机或目标端点/目标服务器进行的所有 API 调用都将失败。
注意:在将虚拟主机和目标端点/目标服务器转换为使用新密钥库之前,请勿删除密钥库。
删除别名
您可以将光标放在列表中的别名上以显示相应操作,从而删除别名。
菜单,然后点击 。如果您删除了某个虚拟主机正在使用的别名,或
目标端点/目标服务器,通过虚拟主机或目标端点/目标进行的所有 API 调用
就会发生故障
注意:在将虚拟主机和目标端点/目标服务器转换为使用新的密钥库和别名之前,请勿删除别名。