CentOS6でcurlを実行すると「curl: (35) SSL connect error」と出ます。

2021.04.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

テクニカルサポートの丸屋 正志(まるちゃん)です。

困っていた内容

AWS Marketplace 【CentOS 6 (x86_64) - with Updates】 を用いた EC2 インスタンスに 【AWS CLI 2】 を入れようとすると、下記のようなエラーが出てインストール出来ませんでした。
どのようにすれば、CentOS6 に 【AWS CLI 2】 をインストールすることができますでしょうか?

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     7    0     7    0     0     26      0 --:--:-- --:--:-- --:--:--     0
curl: (35) SSL connect error

更には、yum -y update をしようしたけどもアップデートが下記の様に失敗してしまう。
【CentOS6】 のサポートが 2020-11-30 に終了致したため、yum -y update を実行すると失敗してしまいます。

$ sudo yum -y update
Loaded plugins: fastestmirror, presto
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

原因

古めの CentOS6.x では、curl で SSL サイトに接続をする際は、古い規格の TLS1.2 での接続方式や、SSLv3 が繋ぎにいこうとしてエラーになります。

どう対応すればいいの?

ここでは、一般ユーザーで実行していますが、ご利用の環境に合わせてコマンドの実行をしてください。

1, CentOS-Base.repo ファイルの中身の置換

$ sudo sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
$ sudo sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo

2, curl と nss のアップデート

$ sudo yum -y update curl nss

3, unzip のインストール

$ sudo yum -y install unzip

4, AWS CLI2 のインストール

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

参考資料