<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
问题
客户端应用收到 HTTP 响应代码 502
以及消息
Bad Gateway
作为 Edge Microgateway 中 API 调用的响应。
另外,管理员在运行 self signed certificate in certificate
chain
<ph type="x-smartling-placeholder"></ph>
edgemicro configure
命令。
错误消息
客户端将看到以下响应消息:
HTTP/1.1 502 Bad Gateway
以下是两个常见的错误响应示例:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
或者,运行 edgemicro configure
时可能会发生此错误:
{ Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34) at TLSSocket.emit (events.js:189:13) at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }
可能的原因
原因 | 说明 | 适用的问题排查说明 |
---|---|---|
<ph type="x-smartling-placeholder"></ph> 目标服务器提供了自签名证书 | Edge Microgateway 将验证目标服务器的证书,如果其不受信任 将引发运行时错误。 | Edge 公有云和私有云用户 |
Apigee Edge Management Server 使用自签名证书 | 首次配置 Edge Microgateway 时,它将通过 TLS 进行引导。如果 Edge 提供自签名证书,则会失败。 | Edge Private Cloud 用户 |
原因:目标服务器提供了自签名证书
<ph type="x-smartling-placeholder">如果 自签名证书由目标服务器在 <ph type="x-smartling-placeholder"></ph> 南向连接,那么默认情况下,Edge Microgateway 会引发此错误,因为 它不信任自签名证书。
诊断
您可能会在日志 (/var/tmp/edgemicro-`hostname`-
*.log
) 中发现以下错误:
2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80- b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate chain][SELF_SIGNED_CERT_IN_CHAIN][]
错误代码 SELF_SIGNED_CERT_IN_CHAIN
表示 Edge Microgateway 已
很可能收到了来自目标服务器的自签名证书。要确认这一点,请执行
执行下列步骤:
- 运行以下
openssl
命令以验证目标服务器的 证书链:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
如果目标服务器的证书链确实是自签名证书,那么这就是导致 问题。
在以下示例中,请注意目标服务器提供了一个自签名证书:
echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority verify error:num=19:self signed certificate in certificate chain verify return:0 DONE
分辨率
- 与拥有目标服务器的团队合作,获取由 受信任的证书授权机构 (CA)。 <ph type="x-smartling-placeholder">
如果无法实现,请考虑采用以下某个选项来允许自签名 证书。
<ph type="x-smartling-placeholder">方法 1:设置系统属性以允许 Edge Microgateway 信任所有 证书
- 如果您使用的是 Docker,请参阅 <ph type="x-smartling-placeholder"></ph> 使用 Node.js 不信任的 CA
否则,请导出一个名为
NODE_EXTRA_CA_CERTS
的环境变量。 指向根 CA 文件。这在官方 Node.js 网站。
选项 2:配置 Edge Microgateway YAML 配置文件以信任特定的 该目标服务器的证书
- 确保您拥有 PEM 格式的目标服务器证书(或证书链)。接收者 将其他证书格式转换为 PEM,请按照 <ph type="x-smartling-placeholder"></ph> 将证书转换为支持的格式。
如果存在证书链,请确保证书位于正确的 订单。叶证书应始终是第一个证书,其后才是中间证书 和根证书有关这一点的详细说明,请参见 <ph type="x-smartling-placeholder"></ph> 验证证书链。
在以下示例中,我们为
untrusted-root.badssl.com
。edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
有关如何配置此功能的说明, <ph type="x-smartling-placeholder"></ph> “边缘 Microgateway 模块 - 配置单向和双向 TLS 传输层安全协议”视频。 请参阅 <ph type="x-smartling-placeholder"></ph> 如需了解详情,请参阅在 Edge Microgateway 服务器上配置 SSL。
如果问题仍然存在,请转到 必须收集诊断信息。
原因:Apigee Edge Management Server 使用自签名证书
<ph type="x-smartling-placeholder">首次设置 Edge Microgateway 时,您需要运行下列命令之一
为 edgemicro configure
或 edgemicro private configure
。此命令将
引导集群,它会联系 Apigee Edge 以下载所需信息。
对于边缘私有云,管理服务器网址由 -m
参数确定。
如果您已为管理服务器启用 TLS,则 Edge Microgateway 会尝试验证
管理服务器提供的证书。
Edge 私有云的 edgemicro configure
命令示例如下所示:
edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443
如果管理服务器配置了自签名证书,那么您将获得 控制台输出中出现以下错误。
{ Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34) at TLSSocket.emit (events.js:189:13) at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }
诊断
- 在这种情况下,管理服务器
(
management.apigee-dev.net
) 可能会返回自签名 TLS 证书。 - 您的 Apigee Edge 系统管理员可能提供了证书 以及副本。
- 否则,请运行以下命令来获取有关该证书的信息:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- 如果管理服务器具有自签名证书,那么这就是导致此问题的原因。 问题。
分辨率
- 与拥有目标服务器的团队合作,获取由 受信任的证书授权机构 (CA)。 <ph type="x-smartling-placeholder">
如果无法进行,则执行以下操作以允许自签名 证书。
<ph type="x-smartling-placeholder">
- 设置系统属性以允许 Edge Microgateway 信任所有证书。
- 如果您使用的是 Docker,请参阅 <ph type="x-smartling-placeholder"></ph> 使用 Node.js 不信任的 CA。
- 否则,请导出一个名为
NODE_EXTRA_CA_CERTS
的环境变量。 指向根 CA 文件 已记录在官方 Node.js 网站。 <ph type="x-smartling-placeholder">
必须收集的诊断信息
按照上述说明操作后,如果问题依然存在,请收集以下内容 然后联系 Apigee Edge 支持团队:
- 日志文件:默认文件夹是
/var/tmp
,但该文件可能会被覆盖 主config.yaml
文件 (logging > dir parameter
)。时间是 建议先将log > level
更改为info
,然后再提供 日志文件复制到 Apigee Edge 支持。 - 配置文件:Edge Microgateway 的主要配置位于 YAML 中
文件(位于默认的 Edge Microgateway 文件夹
$HOME/.edgemicro
中)。这里有 名为default.yaml
的默认配置文件,然后为每个环境分别创建一个配置文件 ORG-ENV-config.yaml
。上传此文件 受影响的组织和环境。参考文档
<ph type="x-smartling-placeholder"></ph> 将 Edge 界面配置为使用 TLS 访问 Edge API