<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
问题
客户端应用将收到带有 503 Service Unavailable
的 HTTP 状态代码,
错误代码 messaging.adaptors.http.flow.SslHandshakeFailed
作为对 API 的响应
调用。
错误消息
客户端应用将获得以下响应代码:
HTTP/1.1 503 Service Unavailable
此外,您可能还会看到以下错误消息:
{ "fault":{ "faultstring":"SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", "detail":{ "errorcode":"messaging.adaptors.http.flow.SslHandshakeFailed" } } }
可能的原因
您可能会收到带有错误代码 503 Service Unavailable
的状态代码
由于 SSL 期间出现故障导致 messaging.adaptors.http.flow.SslHandshakeFailed
Apigee Edge 的消息处理器与后端服务器之间的握手过程,
。faultstring
中的错误消息通常表示
可能是高级别的原因导致了此错误。
根据在 faultstring
中观察到的错误消息,您需要使用
来排查问题。本指南介绍了如何排查
如果您在 faultstring
中观察到错误消息 SSL Handshake failed
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
,就会遇到此错误。
在 Apigee Edge 的消息处理器和 后端服务器:
- 如果 Apigee Edge 消息处理器的信任存储区:
<ph type="x-smartling-placeholder">
- </ph>
- 包含的证书链与后端服务器的完整证书链不一致 证书链
- 不包含后端服务器的完整证书链
- 如果证书链由后端服务器提供:
<ph type="x-smartling-placeholder">
- </ph>
- 包含 完全限定域名 (FQDN) 与 目标端点
- 包含不正确或不完整的证书链
此问题可能的原因如下:
原因 | 说明 | 适用的问题排查说明 |
---|---|---|
消息处理器的信任库中的证书或证书链不正确/不完整 | Apigee Edge 消息处理器的信任库中存储的证书和/或其链与后端服务器的证书链不匹配,或未包含后端服务器的完整证书链。 | Edge 私有云和公有云用户 |
后端服务器证书中的 FQDN 与目标端点中的主机名不匹配 | 后端服务器提供的证书包含与目标端点中指定的主机名不匹配的 FQDN。 | Edge 私有云和公有云用户 |
后端服务器提供的证书或证书链不正确/不完整 | 后端服务器提供的证书链不正确或不完整。 | Edge 私有云和公有云用户 |
常见诊断步骤
使用以下工具/技术之一来诊断此错误:
API 监控
过程 1:使用 API 监控
<ph type="x-smartling-placeholder">如需使用 API Monitoring 诊断错误,请执行以下操作:
- <ph type="x-smartling-placeholder"></ph> 以拥有的用户身份登录 Apigee Edge 界面 适当的角色。
切换到您要在其中调查问题的单位。
- 导航至分析 >API 监控 >调查页面。
- 选择您观察到错误的具体时间范围。
根据时间绘制错误代码。
<ph type="x-smartling-placeholder">选择包含错误代码的单元格
messaging.adaptors.http.flow.SslHandshakeFailed
(如图所示) 如下:( 查看大图)
有关错误代码的信息 “
messaging.adaptors.http.flow.SslHandshakeFailed
”显示为 如下所示:( 查看大图)
点击查看日志 ,然后展开失败请求对应的行。
( 查看大图)
- 在日志窗口中,请注意以下详细信息:
<ph type="x-smartling-placeholder">
- </ph>
- 请求消息 ID
- 状态代码:
503
- 故障来源:
target
- 错误代码:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
步骤 2:使用跟踪工具
<ph type="x-smartling-placeholder">如需使用跟踪工具诊断错误,请执行以下操作:
- 启用跟踪会话,并且
<ph type="x-smartling-placeholder">
- </ph>
- 等待错误代码为
503 Service Unavailable
的错误 出现messaging.adaptors.http.flow.SslHandshakeFailed
次,或 - 如果您可以重现问题,请进行 API 调用以重现问题
503 Service Unavailable
- 等待错误代码为
确保已启用 Show all FlowInfos:
- 选择其中一个失败请求并检查跟踪记录。
- 浏览跟踪记录的不同阶段,并找到失败的位置。
通常,您会在“目标请求流程开始”阶段之后发现该错误。 如下所示:
( 查看大图)
- 请注意跟踪记录中以下各项的值:
<ph type="x-smartling-placeholder">
- </ph>
- 错误:
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.cause::
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.class::
com.apigee.errors.http.server.ServiceUnavailableException
- 错误值
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
表示 SSL 握手失败。 因为 Apigee Edge 的消息处理器无法验证后端服务器的 证书。
- 错误:
- 进入跟踪记录中的 AX(记录的 Google Analytics 数据)阶段,然后点击该阶段。
向下滚动到 Phase Details Error Headers(阶段详情错误标头)部分,并确定 X-Apigee-fault-code 和 X-Apigee-fault-source 的值,以及 X-Apigee-Message-ID,如下所示:
( 查看大图)
- 记下 X-Apigee-fault-code、X-Apigee-fault-source 的值, 和 X-Apigee-Message-ID:
错误标头 | 值 |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
步骤 3:使用 NGINX 访问日志
<ph type="x-smartling-placeholder">如需使用 NGINX 访问日志诊断错误,请执行以下操作:
- 如果您是私有云用户,则可以使用 NGINX 访问日志来确定
有关 HTTP
503 Service Unavailable
的关键信息。 查看 NGINX 访问日志:
<ph type="x-smartling-placeholder">/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- 搜索是否存在任何带有错误代码的
503
错误 在特定时间段内messaging.adaptors.http.flow.SslHandshakeFailed
(如果问题发生在 过去),或者是否还有503
仍失败的任何请求。 如果您发现任何与 X-Apigee-fault-code 匹配的
503
错误,messaging.adaptors.http.flow.SslHandshakeFailed
的值,则 确定 X-Apigee-fault-source.NGINX 访问日志中的 503 错误示例:
( 查看大图)
以上 NGINX 访问日志中的示例条目包含以下值: X-Apigee-fault-code 和 X-Apigee-fault-code
标头 值 X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailed
X-Apigee-fault-source target
消息处理器日志
过程 4:使用消息处理器日志
<ph type="x-smartling-placeholder">- 使用 API 监控、跟踪工具、 或 NGINX 访问日志(具体说明请参阅常见诊断步骤)。
在消息处理器日志中搜索特定的请求消息 ID (
/opt/apigee/var/log/edge-message-processor/logs/system.log
)。您可能会注意到 以下错误:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeFailed() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:192.168.194.140:55102]@64596 useCount=1 bytesRead=0 bytesWritten=0 age=233ms lastIO=233ms isOpen=true handshake failed, message: General SSLEngine problem上述错误表明消息处理器之间的 SSL 握手失败 与后端服务器通信
随后将出现包含详细堆栈轨迹的异常,如下所示:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onException() : RequestWriteListener.onException(HTTPRequest@1522922c) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ... <snipped> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:203) at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ... <snipped>Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>请注意,握手失败的原因如下:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
这表示 SSL 握手失败,因为 Apigee Edge 的消息处理器 无法验证后端服务器的证书。
原因:消息处理器的信任库中的证书或证书链不正确/不完整
诊断
- 针对使用 API 观察到的错误,确定错误代码和错误来源 监控、跟踪工具或 NGINX 访问日志,如常见 诊断步骤。
- 如果错误代码为
messaging.adaptors.http.flow.SslHandshakeFailed
,则: 使用以下方法之一确定错误消息: - 如果错误消息为
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
,则表示 SSL 握手 已失败,因为 Apigee Edge 的消息处理器无法验证后端服务器的消息 证书。
您可以分两个阶段调试此问题:
- 第 1 阶段:确定后端服务器的证书链
- 第 2 阶段:比较消息处理器的信任库中存储的证书链
第 1 阶段
第 1 阶段:确定后端服务器的证书链
您可以使用以下方法之一确定后端服务器的证书链:
openssl
<ph type="x-smartling-placeholder">对后端服务器的主机执行 openssl
命令
如下所示:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
请记下上述命令输出中的证书链:
来自 openssl 命令输出的后端服务器证书链示例:
Certificate chain 0 s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
tcpdump
<ph type="x-smartling-placeholder">- 如果您是公有云用户,请捕获 后端服务器
- 如果您是 Private Cloud 用户,可以捕获 TCP/IP 端口、 在后端服务器或消息处理器上配置数据包。最好使用 因为数据包会在后端服务器上解密。
请使用以下 <ph type="x-smartling-placeholder"></ph> tcpdump 命令捕获 TCP/IP 数据包:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
<ph type="x-smartling-placeholder">使用 Wireshark 工具或 您熟悉的类似工具
Tcpdump 示例分析
( 查看大图)
- 数据包 #43:消息处理器(源)发送了一个
向后端服务器(目标)发送
Client Hello
消息。 - 数据包 #44:后端服务器确认收到
Client Hello
消息。 - 数据包 #45:后端服务器将
Server Hello
消息及其证书。 - 数据包 #46:消息处理器确认收到
Server Hello
消息和证书。 数据包 #47:消息处理器发送
FIN, ACK
并在数据包 #48 中发送RST, ACK
消息。这表示 消息处理器出现故障。这是因为消息处理器没有 与后端服务器证书匹配或不可信任的任何证书 将后端服务器的证书与 (消息处理器)的信任库。
您可以返回并查看数据包 #45 并确定证书 发送的数据链
( 查看大图)
- 在本例中,您可以看到服务器已发送了一个叶证书
common name (CN) = mocktarget.apigee.net
,后跟 包含CN= GTS CA 1D4
和根证书的中间证书 与CN = GTX Root R1
共享。
如果您确定服务器认证验证失败,那么 转到第 2 阶段:比较后端服务器的证书 和证书存储在消息处理器的信任库中。
- 数据包 #43:消息处理器(源)发送了一个
向后端服务器(目标)发送
第 2 阶段
第 2 阶段:比较后端服务器的证书和存储在 消息处理器的信任库
- 确定后端服务器的证书链。
- 使用
执行下列步骤:
<ph type="x-smartling-placeholder">
- </ph>
从
TrustStore
元素获取信任库引用名称 位于TargetEndpoint
的SSLInfo
部分。我们来看看
TargetEndpoint
中的SSLInfo
部分示例 配置:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore> ref://myCompanyTrustStoreRef </TrustStore> </SSLInfo> </HTTPTargetConnection> ... </TargetEndpoint>
- 在上面的示例中,
TrustStore
引用名称为myCompanyTruststoreRef
。 在 Edge 界面中,选择环境 >参考。记下 特定信任库引用的引用列。这将是您的 信任库名称。
( 查看大图)
在上面的示例中,信任库名称为:
myCompanyTruststoreRef:
myCompanyTruststore
获取存储在信任库中的证书(在上一步确定) 使用下列 API:
<ph type="x-smartling-placeholder"></ph> 获取密钥库或信任库的所有证书。此 API 列出了 证书数量。
公有云用户:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Private Cloud 用户:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
地点:
- ORGANIZATION_NAME 是组织的名称
- ENVIRONMENT_NAME 是环境的名称
- KEYSTORE_NAME 是密钥库的名称
- 如说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌 获取 OAuth 2.0 访问令牌
- 有关此示例中使用的
curl
选项的说明,请参见 使用 curl
示例输出:
示例信任库
myCompanyTruststore
中的证书如下:[ "serverCert" ]
- <ph type="x-smartling-placeholder"></ph>
从密钥库或信任库获取特定证书的证书详细信息。
此 API 会返回特定证书的
受信任证书存储区。
公有云用户:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Private Cloud 用户
curl -v -X GET http://MANAGEMENT_HOST:PORT_#>/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
地点:
- ORGANIZATION_NAME 是组织的名称
- ENVIRONMENT_NAME 是环境的名称
- KEYSTORE_NAME 是密钥库的名称
- CERT_NAME 是证书的名称
- 如说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌 获取 OAuth 2.0 访问令牌
- 有关此示例中使用的
curl
选项的说明,请参见 使用 curl
输出示例
serverCert
的详细信息按如下方式显示主题和颁发者:叶级证书/实体证书:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
中级证书:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
验证在第 1 步中获取的实际服务器证书和证书 存储在第 3 步中获取的信任库中的凭据匹配。如果不匹配,则这就是 问题的起因。
我们来看一下上述示例,一次看一个证书:
- 叶证书:
从后端服务器执行:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
通过消息处理器(客户端)的信任库:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
存储在信任库中的叶证书与后端中的证书一致 服务器。
- 中间证书:
从后端服务器执行:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
通过消息处理器(客户端)的信任库:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
存储在信任库中的中间证书与 后端服务器
- 根证书:
从后端服务器执行:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
消息处理器的 受信任证书存储区。
由于信任存储区中缺少根证书, 消息处理器会抛出以下异常:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
并返回
503 Service Unavailable
以及错误代码messaging.adaptors.http.flow.SslHandshakeFailed
发送给客户端 应用。
- 叶证书:
分辨率
- 确保您拥有正确且完整的后端服务器证书链。
- 如果您是公有云用户,请按照 <ph type="x-smartling-placeholder"></ph> 更新 Cloud 的 TLS 证书以将证书更新为 Apigee Edge 的 消息处理器信任库。
- 如果您是 Private Cloud 用户,请按照 <ph type="x-smartling-placeholder"></ph> 更新私有云的 TLS 证书以将证书更新为 Apigee Edge 的消息处理器信任库。
原因:后端服务器证书中的 FQDN 与目标端点中的主机名不匹配
如果后端服务器提供的证书链包含 FQDN,FQDN 与
主机名,那么 Apigee Edge 的消息流程会返回错误
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
。
诊断
- 检查 API 代理中您观察到此问题的具体目标端点
错误并记下后端服务器的主机名:
TargetEndpoint 示例:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
在上面的示例中,后端服务器的主机名为
backend.company.com
。 使用
openssl
确定后端服务器证书中的 FQDN 命令,如下所示:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
例如:
openssl s_client -connect backend.company.com:443
检查
Certificate chain
部分,并记下指定为 叶证书主题中的 CN 部分。Certificate chain 0 s:/
CN=backend.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1在上面的示例中,后端服务器的 FQDN 为
backend.apigee.net
。- 如果从第 1 步中获取的后端服务器的主机名和 FQDN 如果第 2 步不匹配,则这就是导致错误的原因。
- 在上述示例中,目标端点中的主机名为
backend.company.com
。但是,后端服务器证书中的 FQDN 名称 为backend.apigee.net
。因为两者不匹配,所以您会收到此错误。
分辨率
您可以使用下列方法之一解决此问题:
正确的 FQDN
使用正确的 FQDN、有效且完整的证书更新后端服务器的密钥库 链:
- 如果您没有包含正确 FQDN 的后端服务器证书, 然后从相应的 CA(证书授权机构)获取适当的证书。
- <ph type="x-smartling-placeholder">
- 在您拥有有效且完整的证书链,并包含 叶证书或实体证书中与主机名相同的后端服务器 更新后端的密钥库 完整的证书链
正确的后端服务器
使用正确的后端服务器的主机名更新目标端点:
- 如果在目标端点中未正确指定主机名,请更新 目标端点具有与后端中的 FQDN 匹配的正确主机名 服务器证书。
保存对 API 代理所做的更改。
在上面讨论的示例中,如果后端服务器主机名不正确 则您可以使用后端服务器证书中的 FQDN 进行修复 为
backend.apigee.net
,如下所示:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
原因:后端服务器提供的证书或证书链不正确/不完整
诊断
- 通过执行
openssl
命令获取后端服务器的证书链 与后端服务器的主机名进行比较,如下所示:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
请注意上述命令输出中的
Certificate chain
。来自 openssl 命令输出的后端服务器证书链示例:
Certificate chain 0 s:/
CN=mocktarget.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 - 按照说明验证您是否拥有正确且完整的证书链 验证证书链。
如果您没有后端服务器有效且完整的证书链, 那么这就是导致这一问题的原因。
在上述示例后端服务器证书链中,根证书为 缺失。因此,您便会遇到此错误。
分辨率
使用有效且完整的证书链更新后端服务器的密钥库:
<ph type="x-smartling-placeholder"></ph> 验证您是否拥有有效且完整的后端服务器证书链。
<ph type="x-smartling-placeholder">- 在后端服务器的密钥库中更新有效且完整的证书链。
如果问题仍然存在,请转到 必须收集诊断信息。
必须收集的诊断信息
按照上述说明操作后,如果问题依然存在,请收集以下内容 并联系 Apigee Edge 支持团队:
- 如果您是公有云用户,请提供以下信息:
<ph type="x-smartling-placeholder">
- </ph>
- 组织名称
- 环境名称
- API 代理名称
- 完成
curl
命令以重现错误 - 显示错误的跟踪文件
openssl
命令的输出如下:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- 在后端服务器上捕获的 TCP/IP 数据包
- 如果您是 Private Cloud 用户,请提供以下信息:
<ph type="x-smartling-placeholder">
- </ph>
- 观察到完整的错误消息
- API 代理软件包
- 显示错误的跟踪文件
- 消息处理器日志“
/opt/apigee/var/log/edge-message-processor/logs/system.log
” openssl
命令的输出如下:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- 后端服务器或消息处理器上捕获的 TCP/IP 数据包。
- 输出 <ph type="x-smartling-placeholder"></ph> 获取密钥库或信任库 API 的所有证书 使用 Cloud Build 和 Container Registry <ph type="x-smartling-placeholder"></ph> 通过密钥库或信任库 API 获取证书详情。