我有 2 台服务器,分别运行curl 7.29.0
和CentOS 7
。但是,当我运行以下命令时,我得到了 2 个不同的结果:
curl https://tlstest.paypal.com
PayPal_Connection_OK
ERROR! Connection is using TLS version lesser than 1.2. Please use TLS1.2
为什么一台服务器默认使用 TLSv1.2 连接,而另一台却不默认?
--tlsv1.2
(我知道如果我愿意我可以强迫它)
答案1
为什么一台服务器默认使用 TLSv1.2 连接,而另一台却不默认?
默认情况下,curl
将与服务器协商,并使用curl
服务器支持的最高版本。因此,如果连接使用不同的 TLS 版本,则curl
服务器上的版本可能不同。当您写到 curl 报告的版本相同时,您还应该检查所使用的共享库“libcurl”的版本curl
- 这也可能会有所不同。
最有可能的是,其中一台服务器使用了相当旧的版本curl
或 libcurl - curl 自 2016 年以来一直支持 TLS 1.3(我相信是 v7.52),自 2012 年以来一直支持 TLS 1.2(v7.28)。
我有 2 台服务器,都运行 curl 7.29.0 和 CentOS 7。
请注意,curl 7.29 相当旧(2013 年 2 月发布),因此升级是个好主意。
答案2
以下步骤解决了我的问题:
- 更新以下3个包:
sudo yum update curl libcurl nss
- 重新启动 nginx/apache*
sudo service nginx restart
sudo service hhvm restart
*用相关服务替换这些(例如 apache、php-fpm 等...)