特定のwebサービスに、https (TLS1.2)で接続できない(固まる)場合

Linux
2015-06-11 14:50 (9年前) ytyng
View in English

特定のwebサーバーと、OpenSSL 1.0.1a 〜 OpenSSL 1.0.1f のバージョンで、TLS1.2 で通信をしようとすると OpenSSLが固まることがあります。

OpenSSL 1.0.1f は、2015年6月現在、Ubuntu 14.04, Ubuntu 15.04 などの apt で最新版で自動的に入るバージョンで、これ以上のバージョンアップは apt ではできません。

そこで、改修された OpenSSL 1.0.1g をインストールする方法です。

インストール前の状態

OpenSSLのバージョン

$ openssl version
OpenSSL 1.0.1f 6 Jan 2014

SSLコネクションの動作確認

$ openssl s_client -connect hoge.example.com:443  # サイト名は仮
→固まる

試しに、TLS1.2を回避して接続

$ openssl s_client -connect home.example.com:443 -no_tls1_2
→ コネクションできる

ビルド&インストール

$ wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz
$ tar -xzvf openssl-1.0.1g.tar.gz
$ cd openssl-1.0.1g
$ ./config
$ make
$ sudo make install_sw
$ sudo ln -sf /usr/local/ssl/bin/openssl \`which openssl\`

もしここで、make install としてしまうと、

cms.pod around line 457: Expected text after =item, not a number
cms.pod around line 461: Expected text after =item, not a number
cms.pod around line 465: Expected text after =item, not a number
cms.pod around line 470: Expected text after =item, not a number
cms.pod around line 474: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 71.
make: *** [install_docs] エラー 255

こうなってエラーで落ちます。manページのビルドに失敗しているらしい。 なので、make install_sw とします。manページのビルドを行わないらしい。

動作確認

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

$ openssl s_client -connect hoge.example.com:443
→コネクションできた!

ただし

これで、OpenSSLのバージョンアップはできましたが、これに依存する curl, PHP, Python, その他の更新が必要な場合、それらもビルドしなおしがいるかもしれませんので、けっこう面倒です。

curl, PHP, Python を使ってこのバグを踏んでいる場合、それらのアプリで TLS1.2 での接続を回避させた方が修正が容易かもしれません。

http://b.ytyng.com/a-62/ Curl, Python, PHP で HTTPS 接続する際固まるサイトがあるので、TLS1.2 を使わないようにする

参考

How To Upgrade OpenSSL to 1.0.1g To Guard Against Heartbleed in Ubuntu ~ Bauer-Power Media http://www.bauer-power.net/2014/05/how-to-upgrade-openssl-to-101g-to-guard.html#.VXaBpOdCLHM

Linuxbrew でインストールしてもいいかも

Linuxbrew のススメ - Qiita http://qiita.com/thermes/items/926b478ff6e3758ecfea

現在未評価
タイトルとURLをコピー

コメント

アーカイブ

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011