最近的 SSL 升级还引入了破坏 REST API 的 SNI

Recent SSL upgrade also introduced SNI which breaks REST API

我们使用 ServiceNow 通过 REST API 与 PushBullet 通信。最近我们开始收到以下错误

javax.net.ssl.SSLHandshakeException: 握手期间远程主机关闭连接

还有一个 500 HTTP 错误。

经过大量研究,SNI 似乎已添加为 SSL 证书升级的一部分 https://en.wikipedia.org/wiki/Server_Name_Indication

ServiceNow 声明他们不支持任何版本的 SNI。

您看到的测试来自 SoapUI 和 Postman。

我们对此进行测试的方法是使用以下命令:

openssl s_client -connect api.pushbullet.com:443 
(this fails)

Adding the -servername parameter is used to pick the correct domain from the certificate that now contains multiple domains:

openssl s_client -connect api.pushbullet.com:443 -servername api.pushbullet.com

CONNECTED(00000003)
depth=1 /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G2
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/CN=*.pushbullet.com
i:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G2
1 s:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G2
i:/C=US/O=GeoTrust Inc./OU=(c) 2008 GeoTrust Inc. - For authorized use only/CN=GeoTrust Primary Certification Authority - G3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGbDCCBVSgAwIBAgIQTyKV1VxdJTcntEU7ErB0mjANBgkqhkiG9w0BAQsFADBH
<snip>

现在有什么方法可以在没有 SNI 的情况下访问 PushBullet APIs 吗?

加文

自 Jakarta 版本起添加了 SN​​I 支持:

https://docs.servicenow.com/bundle/jakarta-servicenow-platform/page/integrate/outbound-web-services/concept/outbound-sni-support.html

默认情况下,雅加达禁用 SNI 支持。如果它已在您的 ServiceNow 实例上启用,您可以将 glide.outbound.tls_sni.enabled 属性 设置为 true。将其更改为 false,您的 API 调用应停止使用 SNI。