curl (35) SSL connect error 対処法

Pocket

CentOS6のcurlは基本的に古い

Centosも7が主流になった今。Centos6のライブラリは古いものになりつつあります。

とはいえ、Centos7はコマンドも違うし、いきなり本番運用に使うにはハードルが高い。

結局、慣れ親しんだCentos6を使ってしまうのです。

TLS1.2への移行で障害が出た

私の場合も例外ではなく、主にCentos6のサーバーをメインで使っているのですが、ここ最近のTLS1.2への移行で障害が出てきたのです。TLS1.2に対応するには、OpenSSLやcurlなどのライブラリバージョンが関係してきます。

バージョンが古いと

curl: (35) SSL connect error

こんなエラーが出て接続できなくなるのです。サーバー側が切り替わる前に、クライアント側もちゃんと対応しておく必要があるのです。対応しておかないと、API通信で障害が発生して運用に支障をきたしてしまいます(><)

対処法

curlをバージョンアップします。

1.curlのバージョン確認

curl -V

[root@localhost ~]# curl -V
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

2.curlダウンロード&解凍

インストールディレクトリを変えたいので手動でインストールします。

wget https://curl.haxx.se/download/curl-7.60.0.tar.gz

tar xzf curl-7.60.0.tar.gz

cd curl-7.60.0

3.コンパイル&インストール

configureするときが非常に重要。既存を上書きしないようにする。

./configure –enable-libcurl-option –prefix=/usr/local/curl-7.60.0 # ←重要
make
make install

4.既存curlの退避&シンボリックリンク作成

既存curlの場所を確認

which curl

既存curlを退避

mv /usr/bin/curl /usr/bin/curl.org

シンボリックリンク作成

ln -s /usr/local/curl-7.60.0/bin/curl /usr/bin/curl

5.curlのバージョン確認

[root@localhost ~]# curl -V
curl 7.60.0 (x86_64-pc-linux-gnu) libcurl/7.60.0 OpenSSL/1.0.1e zlib/1.2.3
Release-Date: 2018-05-16
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets HTTPS-proxy

Protocolsにhttpsが含まれていない場合はOpensslが不足している!

6.https確認

curl https://接続先ドメイン/

OKになれば対応完了!

[PR]root権限付きVPS一覧