概要
OSX標準のOpenSSLが古く、tls1.2で通信できず、curlが失敗する事案が発生してしまいました。 対処方法を調べても、
`brew update brew upgrade openssl brew link openssl --force
で治りました^^
という記事が多かったのですが、上記の対応でもopenssl version
が古いままだったので、その対処方法を書きます。
手順
手順は下記の通りです。
- homebrewで最新のOpenSSLをinstallし、リンクを張る
- OpenSSLのパスを確認
- 環境変数の設定
homebrewで最新のOpenSSLをinstall
この記事にたどり着いた人は、既に実行済みかつ、5,000万回は同じことを見ていると思いますが、 念のため記載しておきます。
$ which openssl #opensslのパスを確認 /usr/bin/openssl となってるはず $ openssl version #バージョンの確認 $ brew update #brewのアップデート $ brew list #opensslがインストールされているか確認 $ brew info openssl #最新版の情報取得 $ brew upgrade openssl #アップグレード $ brew link openssl
OpenSSLのパスを確認
だいたいの記事では、これで治りました報告が多かったのですが、自分の場合は、
この時点でopenssl version
をやっても古いままでした。
今一度、パスを確認してみると
$ openssl version OpenSSL 0.9.8zg 14 July 2015 $ which openssl /usr/bin/openssl $ brew info openssl openssl: stable 1.0.2j (bottled) [keg-only] ずらずら〜〜 /usr/local/Cellar/openssl/1.0.2j (1,695 files, 12M)
OSX 標準のOpenSSLのパスが/usr/bin/opensslだったのに対して homebrewでinstallしたOpenSSLが/usr/local/Cellar/openssl/1.0.2jなのが分かります。
環境変数の設定
これまでの結果から、読み込まれる順番が問題なのではないか?と推測し、 $PATHの設定を疑いました。
$ echo "export PATH=/usr/local/Cellar/openssl/1.0.2j/bin:$PATH" >> ~/.bash_profile $ source ~/.bash_profile $ which openssl /usr/local/Cellar/openssl/1.0.2j/bin/openssl $ openssl version OpenSSL 1.0.2j 26 Sep 2016
予想通りでした。
brew link openssl
だけでは正常に反映されておらず、基本的なパスなどの確認を怠っていたがために小一時間ハマってしまいました。