2016-01-27 10 views
6

私は新しいPayPalテストエンドポイントに対してテストしようとしています:https://tlstest.paypal.comPayPal TLSテストURL - PHPカールSSLプロトコルエラー

このページの一番下にあるTLS 1.2 and HTTP/1.1 Upgrade Microsite(確認してください...)。

私はPHP(5.3.28)を使用し、カール(7.30.0 - OpenSSLの/ 0.9.8y - libssh2の/ 1.4.2)だのWindows Server 2008 R2上および7.5のIIS:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://tlstest.paypal.com'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_SSLVERSION, 6); // CURL_SSLVERSION_TLSv1_2 
$result = curl_exec($ch); 
echo 'result = '.$result.'<br>'; 
echo 'errno = '.curl_errno($ch).'<br>'; 
echo 'error = '.curl_error($ch).'<br>'; 
curl_close($ch); 

私はこのエラーになっ「メートル:

Openssl must be at 1.0.1 or higher for TLS 1.2.

これは正しいです..:誰かが言うれるGithub - Unknown SSL protocol error

35 Unknown SSL protocol error in connection to tlstest.paypal.com:443

を私はこれを見つけましたか?

私のPHP OpenSSLはバージョン番号OpenSSL/0.9.8yphpinfo())です。

あなたは、おそらく低いOpenSSLのバージョン(私はそれはたくさんだ推測している!)とPHPを実行しているすべてのサーバがPayPalのAPIのを使用することができないか、でしょうTLS 1.2を使用するようにOpenSSL 1.0.1以上が必要です場合すぐにPayPal IPN

WindowsでPHP OpenSSLバージョンを更新するにはどうすればよいですか?

答えて

1

私はこれで今動作しています。 OpenSSL/1.0.1i は、TLS 1.2には少なくともが必要です。

PHPバージョンを5.6.0にアップグレードしました。これは、OpenSSLをバージョン1.0.1にアップグレードしました。

私はまた、これらを必要に応じて:

  1. 使用curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);証明書を検証します。 cURL 7.10以降のデフォルト値はtrueです。
  2. 保存(Cに私の場合:\ CERT)ローカルhttp://curl.haxx.se/docs/caextract.htmlからcacert.pemの、その後、あなたはcacert.pemas shown hereを参照するために使用しているPHPのiniファイルを更新します。 iniファイルを使用すると、すべての呼び出しでcurl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '\cacert.pem');を使用する必要がなくなります。
+0

PHP 5.6にアップグレードした後、自分でSSLバージョンを指定せずにSSLハンドシェイクが正常に完了しましたか?そしてあなたのカールバージョンもアップデートしましたか、それともまだ7.30ですか? –

+0

私はSSL版を残しましたので、それがなくてもうまくいくかどうかわかりませんが、すぐに試してみるかもしれません... PHP 5.6.0に付属していると思われるバージョン7.36.0になりました。 –

関連する問題