B2B 合作伙伴需要从 Redhat 计算机回调我们的 Web 服务器 (Centos7) 上的 API 方法。
我们将他们的 IP 地址添加到我们的软件防火墙中,但没有任何进展。
他们报告说他们收到了一条SSL connect error
错误消息:NSS error -5938
他们向我们发送了卷曲请求的响应:
# curl --verbose "https://web1.company.com/callback?param1=val1¶m2=val2"
* About to connect() to proxy 127.0.0.1 port 8215 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 8215 (#0)
* Establish HTTP proxy tunnel to web1.company.com:443
> CONNECT web1.company.com:443 HTTP/1.1
> Host: web1.company.com:443
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
< Proxy-Connection: keep-alive
<
* Proxy replied OK to CONNECT request
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5938
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
* NSS error -5938
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
[1]+ Exit 35
curl
nss
error
5938
我在网上搜索了关键词(包括stackexchange),结果大多是用户建议更新或重新编译curl。
B2B 合作伙伴表示,至少在不久的将来,更新或重新编译不是一个选择。
我尝试过的事情
我已经尝试从另外两台机器上进行curl(使用openssl而不是nss):
- 他们都成功了
我已要求 B2B 合作伙伴尝试强制curl 使用不同的 SSL/TLS 版本:
curl --tlsv1
curl --tlsv1.0
curl --tlsv1.1
curl --tlsv1.2
curl --sslv2
curl --sslv3
它们都导致了同样的错误。
我还调查了密码不匹配的可能性(考虑到客户端nss
和服务器openssl
),但有一些明显的重叠。
无奈之下,我还要求他们尝试一个不正确的密码:
curl --ciphers TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
当我的意思是ecdhe_rsa_aes_128_gcm_sha_256
,但它导致了以下错误:
== Info: Unknown cipher in list: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
== Info: NSS error -5978
== Info: Closing connection #0
curl: (59) Unknown cipher in list: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
使用正确的密码ecdhe_rsa_aes_128_gcm_sha_256
会导致相同的 5938 错误。
笔记:我不知道通过代理是否是一个重大问题。只是陈述我目前拥有的配置。
有人对我下一步可以尝试什么有什么建议吗?谢谢