3 回答

TA貢獻1820條經驗 獲得超2個贊
小 PHP/CURL 測試腳本:
<?php
echo 'PHP version: ' . phpversion() . PHP_EOL;
echo 'cURL version: ' . curl_version()['version'] . PHP_EOL;
$ch = curl_init('https://www.howsmyssl.com/a/check');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0); // TLS 1.0
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1); // TLS 1.1
//curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); // TLS 1.2 or 1.3
$data = curl_exec($ch);
curl_close($ch);
$json = json_decode($data);
echo ($data ? $json->tls_version : 'curl request failed') . PHP_EOL;

TA貢獻1848條經驗 獲得超2個贊
為了回答我自己的問題,https ://www.php.net/function.curl-setopt 上的文檔已過時。cURL 7.54 更改了 CURL_SSLVERSION_ 宏的行為,這些現在設置了連接可接受的最低 TLS 版本。它還引入了 CURL_SSLVERSION_MAX_ 宏,用于設置嘗試的最大 TLS 版本。在 PHP 文檔更新之前,請參閱https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html。
因此,將連接限制為 TLS v1.1 的工作方式如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/token');
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_MAX_TLSv1_1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

TA貢獻1802條經驗 獲得超4個贊
鑒于 TLS v1.1 或更高版本(在 7.34.0 中添加)非常清楚以及“可以使用 CURL_SSLVERSION_MAX_ 宏之一設置最大 TLS 版本”,“請求的 TLS v1.1”是錯誤的
- 3 回答
- 0 關注
- 564 瀏覽
添加回答
舉報