错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败(35)

错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败(35)

我们有在线购物网站。当我进入结帐页面时,我收到类似这样的错误“错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败(35)”

从 apache 错误日志中,我可以看到一些连接到 api.paypal.com 的尝试。这是我的 apache 错误日志的一部分

* About to connect() to api.paypal.com port 443 (#0)
*   Trying 66.211.168.123... * connected
* Connected to api.paypal.com (66.211.168.123) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
* Closing connection #0

当我尝试使用 curl 连接到 api.paypal.com 时,我收到如下错误

curl -iv https://api.paypal.com/
* About to connect() to api.paypal.com port 443 (#0)
*   Trying 66.211.168.91... connected
* Connected to api.paypal.com (66.211.168.91) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Request CERT (13):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS alert, Server hello (2):
* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
* Closing connection #0
curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

答案1

openssl s_client更好地解释了这里发生的事情,因为它给出了是接收还是发送这些消息。api.paypal.com 正在请求特定的客户端证书(这是* SSLv3, TLS handshake, Request CERT (13)打印的行卷曲)并且您发送了错误的(或没有)证书,因此您的连接失败:

SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL3 alert read:fatal:handshake failure
SSL_connect:failed in SSLv3 read finished A
6016:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1086:SSL alert number 40
6016:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:

谷歌搜索 paypal api 信息,似乎你需要请求一个API 的客户端证书。他们还有一个用户名/密码“签名”选项,但这个选项使用完全不同的服务器。如果您有这些,那么配置您的购物车软件以使用它们是与购物车开发人员讨论的问题。如果您开发人员并且您有一个证书,请参阅 --cert、--cert-type、--key 和 --key-type 标志来curl配置 curl 使用的证书和私钥。

答案2

对于我来说,在 CentOS 8 系统上,解决方案是通过验证以下代码来检查系统加密策略:/etc/crypto-policies/config读取默认值默认而不是任何其他值。

将此值更改为默认,运行以下命令:

/usr/bin/update-crypto-policies --set DEFAULT

重新运行 curl 命令,它应该可以工作。

答案3

我也遇到了同样的问题。

因为我在Centos中没有打开443端口。

所以你检查一下443端口!

sudo losf -i tcp:443

解决方法:

cd /etc/httpd/conf.d vim ssl.conf

在第一行添加两行:

LoadModule ssl_module modules/mod_ssl.so
Listen 443

你可以尝试一下!

相关内容