てきとうなメモ

本の感想とか技術メモとか

HTTP_Request2でHTTPS接続

こんな感じかな。

<?php
$url = $argv[1];
$req = new HTTP_Request2(
  $url,
  HTTP_Request2::METHOD_GET
);
$req->setConfig(
  array(
    'ssl_cafile' => '/etc/pki/tls/certs/ca-bundle.crt',
  )
);

try {
  $res = $req->send();
  $body = $res->getBody();
  echo $body;
} catch (HTTP_Request2_Exception $e) {
  die('Error: ' . $e->getMessage() . "\n");
}
?>

デフォルトで証明書の検証のオプション(ssl_verify_peer)が有効になっているのでssl_cafileを設定しないとエラーになってしまう。CentOS6上だったのでca-certificatesパッケージの証明書を利用している。

ssl_verify_peerをfalseにするという手もあるがセキュリティ上よろしくない。

しかし、ssl_cafileを指定しなかった時のエラー情報少なすぎ

Error: Unable to connect to ssl://twitter.com:443. Error #0: