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

(Comments)

特定の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

Currently unrated

Comments

Recent Tweets

  • 大坂昌彦

    大坂昌彦 @masahiko_osaka

    ytyng

    ついに犯人がわかってしまいました! ナル、一昨日にも僕だったので、昨日の人しかいません!! ペダルにガムテープ貼っても良いけど、剥がして帰って欲しい。散々、自分の足で踏みつけたガムテープを何で次の人が剥がさなきゃならないの??自分… https://t.co/Contz66ZK9
    1 week, 2 days ago

  • ytyng

    ytyng @ytyng

    Shopify の在庫数更新API GraphQLの場合: 一括更新できる 絶対値更新できない REST API の場合: 一括更新できない 絶対値更新できる なんなのそれ https://t.co/0QyibNQXdt
    3 weeks, 4 days ago

  • ytyng

    ytyng @ytyng

    #bulma スペーシングヘルパー、マージされてる! もうこれBootstrapじゃん https://t.co/uI8fZ6lAOw
    3 weeks, 4 days ago

Recent Posts

Archive

2020
2019
2018
2017
2016
2015
2014
2013
2012
2011

Categories

Authors

Feeds

RSS / Atom