質問: sslv3の脆弱性(POODLE)によりsslv3ではなく、TLSv1での通信でないと受け付けてくれないところが増えてきたと思います。 phpの内部処理でTLSv1を明示的に設定して利用する方法は調べると色々と出てきたのですが、環境設定などで設定する方法ってあるのでしょうか。 当方の環境は、 * OS X Yosemite 10.10.3 * PHP 5.6.6 * cURL 7.38.0 * SSL version OpenSSL/0.9.8zd です。 もしバージョンが古いということであれば、バージョンアップの方法を、またそれ以外の方法で対応できるということでしたら、その旨ご教示頂けると助かります。
回答: curl の作者は POODLE のために特別なことをする必要はないということを述べています (curl is no POODLE)。 `CURLOPT_SSLVERSION` で TLS 通信に限定することができますが、`curl_setopt` のマニュアルによるとデフォルトに任せるのが最適と書かれています。 ``` curl_setopt_array($ch, [ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1 ]); ``` 通信先のサーバーへの対応のために `CURLOPT_SSL_CIPHER_LIST` で指定できる暗号スイートの選択肢を増やしたいのであれば、OpenSSL のバージョンを上げる必要があります。最新の OpenSSL を導入するのであれば、homebrew の利用をおすすめします。 どのくらい違うのかは次のコマンドの実行結果を見比べるとよいでしょう。 ``` /usr/bin/openssl ciphers -v /usr/local/bin/openssl ciphers -v ``` homebrew であれば curl の HTTP2 ビルドオプションを有効にしたり、HTTP2 のリバースプロキシーサーバーとして使える `nghttpx` (nghttp2) や `h2o` をかんたんに導入できます。curl の HTTP2 対応についてはこちらの記事をご参照ください。