No.353
【Linux】curlでSSL接続に失敗する
先日まではhttpsでアクセスできてたのに…
認証モジュールなどに接続したり、ファイルを持ってこようとしてcurlを使うと、下記のようなエラーが表示されて接続できないことがある。もちろんURLは正しい。
curl: (35) SSL connect error
これは、古くから使っている環境にありがちなのだが、ネットワーク通信のライブラリが古いことが原因だ。
ざっくり書くとSSLのハンドシェイクで
- TLSを使うがTLS1.2より前の規格なので拒否される
- やむを得ず古い規格のSSLv3を使おうとするも当然拒否される
- 接続失敗!
ということが起きている。
-v
オプションで詳細を見ると
Error in TLS handshake, trying SSLv3
というエラーが表示されるのでわかりやすい。
解決方法
TLS1.2を使えるライブラリに更新すればよい。
SSL接続に使用しているライブラリはnss
であり、こちらのサイトによると、nss
のバージョンが3.19.1-6
以降であれば問題ないようだ。
というわけで、関連モジュールも含めupdateしてしまおう。
yum update nss