[PHP] HTTP_Request2のSSLエラーの対処方法

  • 17
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

HTTP_Request2でhttp通信はできたけど、
接続先をhttpsにしただけでエラーが出た場合の対処方法のメモ。

Unable to connect to ssl://example.com:443. Error: stream_socket_client(): unable to connect to ssl://example.com:443 (Unknown error)
stream_socket_client(): Failed to enable crypto
stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

方法1. ssl_capathを指定する

デフォルトのSocketアダプターを使う場合は、SSL証明書のディレクトリ・パスを指定する。

$request = new HTTP_Request2('https://example.com');
$request->setConfig(array(
    'ssl_capath' => '/etc/ssl/certs', // ubuntuの場合
));

方法2. cURLアダプターを使う

cURLアダプターを使えば何もしなくていい。

$request = new HTTP_Request2('https://example.com');
$request->setAdapter('curl');

PHPのcURLエクステンションが入ってない場合は以下のコマンドでインストール。

sudo apt-get install php5-curl

参考