SSLv3とTLSとを判別したいと考えております。  
是非、よろしくお願い致します。
CC BY-SA 3.0
2015-01-30T09:39:22.340
5619
2015-01-30T17:59:27.680
2015-01-30T09:46:08.940
7962
7962
question
php ssl zend-framework
Zend FrameworkまたはPHPを使ってリクエストがSSLのどのバージョンを利用しているか判断することはできますか？
Apacheでmod_sslを利用してるなら`$_ENV['SSL_PROTOCOL']`で取得できませんでしょうか。  
<http://httpd.apache.org/docs/2.4/en/mod/mod_ssl.html>
CC BY-SA 3.0
2015-01-30T12:04:54.157
5627
2015-01-30T12:04:54.157
938
5619
answer
## Apache HTTPd + mod_ssl

設定が必要になりますが、方法はあります。

`httpd.conf`または`.htaccess`で`SSLOptions
+StdEnvVars`と記述し、それが有効なディレクトリ内のPHPスクリプトで`$_SERVER['SSL_PROTOCOL']`とすることでSSL/TLSのバージョンを取得できます。  
ただし、`SSLOptions +StdEnvVars`はHTTPdのパフォーマンスに響く設定とのことなので、限定的に使用するのがよいかと思われます。

ご参考

  * [mod_ssl - Apache HTTP Server Version 2.2](http://httpd.apache.org/docs/2.2/en/mod/mod_ssl.html)
  * [mod_ssl - Apache HTTP Server Version 2.4](http://httpd.apache.org/docs/2.4/en/mod/mod_ssl.html)
  * [centOS+apache+mod_ssl+mod_phpの環境にhttpsでphpにアクセスして環境変数を見る。 - developer's diary](http://devlog.mitsugeek.net/entry/20100813/1281727587)

## nginx + ngx_http_fastcgi_module + ngx_http_ssl_module

こちらも設定が必要ですが、方法はあります。

`nginx.conf`で`fastcgi_param SSL_PROTOCOL
$ssl_protocol;`と記述し、それが有効なディレクトリ内のPHPスクリプトで`$_SERVER['SSL_PROTOCOL']`とすることでSSL/TLSのバージョンを取得できます。

ご参考

  * [Module ngx_http_ssl_module](http://nginx.org/en/docs/http/ngx_http_ssl_module.html)
  * [NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない | OXY NOTES](http://oxynotes.com/?p=7657)
CC BY-SA 3.0
2015-01-30T17:59:27.680
5639
2015-01-30T17:59:27.680
3160
5619
answer