PHPでSSLバージョンを判別する方法

2018/06/19 技術系 投稿者:千本木

最近、決済サービスや大手ウェブサイトでSSL接続をTLS1.2に限定する動きが加速しています。

TLS1.2に限定する理由としては、SSLの脆弱性「POODLE」によりSSLv2 / SSLv3 / TLS1.0 / TLS1.1を使用した暗号化通信内容の一部を解読できてしまうためです。

特にクレジットカード情報を取り扱う場合には致命的であるため、クレジットカード国際基準では2018年6月30日までにTLS1.2未満の利用を停止することになりました。

さて、SSL接続はサーバ側の対応だけでなく、クライアント側もTLS1.2対応が必要になります。

例えばホームページにアクセスしてきたクライアントのSSL接続がどのバージョンなのかを判別できれば、古いバージョンのSSL接続に対して注意喚起ができます。
また、システム開発者にとってはシステムが外部のAPIを叩くことを想定したときに、どのバージョンのSSL接続をしているのかを事前に把握できればTLS1.2への移行がスムーズになります。

このSSL接続のバージョン判定をPHPで手軽にできる方法はないかなと検索してみたのですが、意外に有用な情報が見つかりませんでした。そこで私が実現した方法を紹介いたします。

PHPでバージョン判定する

.htaccessにオプションを追加する

ちなみにStdEnvVarsを有効にするとサーバ側のCPU負荷が上がる傾向にあるようなので使用するディレクトリ限定にした方が良いと思います。

PHPを書く

StdEnvVarsを指定すると環境変数SSL_PROTOCOLが使えるようになるので、これを使ってSSL接続を判定します。

たったこれだけです。

ブラウザでアクセスするときちんとTLS1.2と判別できました!

ちなみにインターネットオプションでTLS1.2を無効にしてアクセスするときちんとTLS1.1と判定してくれます。

なおCGI版PHPを使用している場合はSSL_PROTOCOLではなくREDIRECT_SSL_PROTOCOLを使用する必要があります。

まとめ

ニッチな内容でしたがいかがでしたでしょうか。
GoogleのSEO対策としても注目されているSSL接続ですが、本来のSSL導入の目的は暗号化通信によるセキュリティ担保です。単純にSSLを導入するだけでなくどのバージョンを利用しているかを把握して、脆弱性のない暗号化通信を行いましょう。

カレンダー

     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

PRODUCE ネディアプロデュース
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
ワイドオフィス
イヤホンのブランドでハイクラスを誇る | n+um(エニューム)