在我的PHP应用程序中,我使用PHP的CURL和openssl,使用SOAP连接和对话。到目前为止,远程服务器支持SSL和TLS,但由于“狮子狗”错误,管理员决定禁用SSL,只使用TLS。SSL支持到1月底。
我通过添加以下内容更改了代码:
curl_setopt($objCurl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
这在理论上应该强制curl使用TLSv1.2。
但这只是理论上的--我需要验证它是否真的使用了TLS --有什么方法可以做到这一点吗?有一个名为curl_getinfo()的方法,但它返回的信息对我来说没有用:
[url] => https://www.example.com/soap/MessagingPort
[content_type] => text/xml;charset=utf-8
[http_code] => 200
[header_size] => 293
[request_size] => 882
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.164487
[namelookup_time] => 3.4E-5
[connect_time] => 3.4E-5
[pretransfer_time] => 0.000122
[size_upload] => 604
[size_download] => 178
[speed_download] => 1082
[speed_upload] => 3672
[download_content_length] => 178
[upload_content_length] => 604
[starttransfer_time] => 0.164477
[redirect_time] => 0
3条答案
按热度按时间whitzsjs1#
使用curl向https://www.howsmyssl.com/发出请求
它应该输出用于连接的TLS版本。
Curl依赖于底层的OpenSSL(或NSS)库来进行安全连接的协商,所以我认为这里应该问的问题是OpenSSL库有什么能力,如果它能处理TLS连接,那么curl也能处理TLS连接。
那么,如何确定openssl(或NSS)库的功能呢?
它会输出类似于
然后,您可以查看该版本的发行说明,看看它是否包含TLS支持。
OpenSSL发行说明-https://www.openssl.org/news/changelog.html
NSS发行说明-https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases
xqkwcwgp2#
使用https://tlstest.paypal.com:
例如:
1aaf6o9v3#
如果你想测试一个特定的url(比如支付API端点)使用的是哪种协议,你可以在log curl's verbose output上查看,这里有一个简单的例子:
对于我来说,输出如下: