9181


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

です。  
もしバージョンが古いということであれば、バージョンアップの方法を、またそれ以外の方法で対応できるということでしたら、その旨ご教示頂けると助かります。


CC BY-SA 3.0
2015-04-15T01:22:51.343
9170
2015-04-15T03:21:32.767
9025
question
php macos ssl
phpからcurlでsslv3ではなくTLSv1を利用する方法


curl の作者は POODLE のために特別なことをする必要はないということを述べています ([curl is no
POODLE](http://daniel.haxx.se/blog/2014/10/17/curl-is-no-poodle/))。

`CURLOPT_SSLVERSION` で TLS 通信に限定することができますが、`curl_setopt`
のマニュアルによるとデフォルトに任せるのが最適と書かれています。

[code]

    curl_setopt_array($ch, [
        CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1   
    ]);
    
[/code]

通信先のサーバーへの対応のために `CURLOPT_SSL_CIPHER_LIST` で指定できる暗号スイートの選択肢を増やしたいのであれば、OpenSSL
のバージョンを上げる必要があります。最新の OpenSSL を導入するのであれば、homebrew の利用をおすすめします。  
どのくらい違うのかは次のコマンドの実行結果を見比べるとよいでしょう。

[code]

    /usr/bin/openssl ciphers -v
    /usr/local/bin/openssl ciphers -v
    
[/code]

homebrew であれば curl の HTTP2 ビルドオプションを有効にしたり、HTTP2 のリバースプロキシーサーバーとして使える
`nghttpx` (nghttp2) や `h2o` をかんたんに導入できます。curl の HTTP2
対応については[こちら](http://qiita.com/masakielastic/items/f563437c44b0d4c04f87)の記事をご参照ください。


CC BY-SA 3.0
2015-04-15T03:21:32.767
9181
2015-04-15T03:21:32.767
568
9170
answer