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
参考
- Manual :: Configuration parameters for HTTP_Request2 - 一番下の「SSL peer verification issues」
- HTTP_Request2によるクライアント接続