25

TLS1.2 を使用する HTTPS URL のカールに問題があります。カール操作で、ログイン データを Web サイトに投稿し、cookiefile に保存します。私が得ているエラーメッセージはこれです

 error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error

VERIFYPEERとを 0 に設定しようとVERIFYHOSTしましたが、うまくいかないようです。何か提案はありますか?

私が使用しているバージョンは次のとおりです。

  • OpenSSL のバージョンは 0.9.8b です
  • CURL のバージョンは 7.24.0 です
  • PHPは5.3です

コードは次のとおりです。

$setuplogin = curl_init(); 
curl_setopt ($setuploginurl, CURLOPT_URL, $url); 
curl_setopt ($setuploginurl, CURLOPT_SSL_VERIFYPEER, 1); 
curl_setopt ($setuploginurl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt ($setuploginurl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt ($setuploginurl, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_TLSv1_2');
curl_setopt ($setuploginurl, CURLOPT_POSTFIELDS, 'username=uname&password=pword&act=login&submit=Login');
curl_setopt ($setuploginurl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36"); 
curl_setopt (setuploginurl, CURLOPT_TIMEOUT, 60); 
curl_setopt ($setuploginurl, CURLOPT_COOKIESESSION, TRUE); 
curl_setopt ($setuploginurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($setuploginurl,  CURLOPT_HEADER, 1);
curl_setopt ($setuploginurl,CURLOPT_ENCODING,"gzip");
curl_setopt ($setuploginurl, CURLOPT_POST, true);
curl_setopt ($setuploginurl, CURLOPT_COOKIEJAR, 'cookies.txt'); 
curl_setopt ($setuploginurl, CURLOPT_FRESH_CONNECT , 1);

$loginp= curl_exec($setuploginurl); 
if ($loginp === FALSE) {
    die(curl_error($setuploginurl));
}

curl_close ($setuploginurl); 
var_dump ($loginp);
4

5 に答える 5

27

OpenSSL 1.0.1以降、TLS 1.1 および TLS 1.2 がサポートされています。

TLS 1.1 および 1.2 の強制は、 curl 7.34.0以降でのみサポートされます

アップグレードを検討する必要があります。

于 2015-05-09T21:30:53.577 に答える
0

以下を置き換えます

curl_setopt ($setuploginurl, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_TLSv1_2');

curl_setopt ($ch, CURLOPT_SSLVERSION, 6);

完璧に動作するはずです。

于 2016-11-04T11:00:38.787 に答える