LoginSignup
9
10

More than 5 years have passed since last update.

PayPal SandboxにSSL関連のエラーで接続できなくなった場合の対処法(PHP編)

Last updated at Posted at 2016-03-24

こちらの記事で書きましたが、PayPalへの通信がTLS V1.2に強制移行されます。(2016年6月予定)

すでにSandboxは移行されており、通信のテストができますが(テストの詳細はこちらを参照してください)、PHPのcurlを使った通信実装で問題が起きるケースがあるようです。

実際に通信エラーになった時の対応方法を参考までに載せておきます。(もちろん、環境や実装方法により対応は異なるのであくまで一例です)

Curlの接続オプションに明示的にTLSオプションを指定

curl_setopt($conn, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
($connはHTTP接続のコネクションインスタンス)

PHPのバージョンによってCURL_SSLVERSION_TLSv1が定義されていない場合は

curl_setopt($ch, CURLOPT_SSLVERSION, 1);

とする。

これだけで解消する場合あり。

(上記で解消しない場合は)サーバーの関連するライブラリのバージョンを上げる

上記で解決しない場合、あるCentos 6サーバーでは以下のライブラリを古いものから以下のバージョンに引き上げたところ解消しました。

openssl 1.0.1e-42.el6_7.4
curl 7.19.7-46.el6
nss 3.18.0-5.3.el6_6(curlと依存関係になるので必然的に上がります)

詳しいライブラリやバージョンの情報、脆弱性そのものを説明は、HeartBleedの説明やその対応のページを参照することをお勧めいたしますが、opensslの場合は、以下のように、バージョンを上げずに、tls1オプションで回避できることもあるようです。
https://teratail.com/questions/9776

PHP編と銘打ったので、本当は他の言語版も載せたいのですが、なかなか事例収集が難しいので、もしご協力いただける方がいたら幸いです。

なお、上記の対応は、PayPalユーザーでなくても今後必要となってくる対応ですので、早めのセキュリティ環境の整備をお勧めします。

9
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10