No.353


【Linux】curlでSSL接続に失敗する

先日まではhttpsでアクセスできてたのに…

 認証モジュールなどに接続したり、ファイルを持ってこようとしてcurlを使うと、下記のようなエラーが表示されて接続できないことがある。もちろんURLは正しい。

curl: (35) SSL connect error

 これは、古くから使っている環境にありがちなのだが、ネットワーク通信のライブラリが古いことが原因だ。
 ざっくり書くとSSLのハンドシェイクで

  1. TLSを使うがTLS1.2より前の規格なので拒否される
  2. やむを得ず古い規格のSSLv3を使おうとするも当然拒否される
  3. 接続失敗!

 ということが起きている。

 -vオプションで詳細を見ると

Error in TLS handshake, trying SSLv3

 というエラーが表示されるのでわかりやすい。


解決方法

 TLS1.2を使えるライブラリに更新すればよい。

 SSL接続に使用しているライブラリはnssであり、こちらのサイトによると、nssのバージョンが3.19.1-6以降であれば問題ないようだ。

 というわけで、関連モジュールも含めupdateしてしまおう。

yum update nss