AWS-CLIを実行したら `CERTIFICATE_VERIFY_FAILED` というエラーメッセージが表示されてハマってしまった
背景
GWの10連休に入る直前に実行したところ、突然エラーメッセージが表示され正常に動作しなくなってしまいました。
どのようなエラーメッセージが表示された?
SSL validation failed for https://ec2.ap-southeast-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
実行環境
$ uname -moi
x86_64 MacBookPro11,4 Darwin
$ bash -version
GNU bash, バージョン 5.0.7(1)-release (x86_64-apple-darwin18.5.0)
$ aws --version
aws-cli/1.16.140 Python/3.7.3 Darwin/18.5.0 botocore/1.12.130
どのように aws-cl
を利用していたか?
- EC2 環境を構築するための簡易なシェルスクリプトを作成し、その中で何度か
aws
コマンドを実行していました。 - シェルスクリプトは
Bash
で動作するようにシバンを設定していました。#!/usr/bin/env bash
試してみたこと
aws
コマンドのバージョンアップ
はじめは aws-cli
のバージョンアップが原因かと思い、バージョンアップしてみたが、問題は解決しませんでした。
aws
コマンドのオプション追加
以下のエントリを見つけました。
aws
コマンドに --no-verify
というオプションを付与すればエラーを無視できるということですが、、以下の理由により他の方法で対処することにしました。
aws
コマンドを実行するたびにこのオプションを付与しないといけないのが煩わしい- 原因の根治となっていない
根治できないので他の作業をしていたところやはりハマる
根治できないので他の作業して時間のある時に調査しよう、と思ったのですがGithubからgit clone
しようとしたタイミングで関係ありそうなエラーでハマりました。
$ git clone https://github.com/kward/shunit2.git
Cloning into 'shunit2'...
fatal: unable to access 'https://github.com/kward/shunit2.git': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
HTTPSによる通信全般がエラーとなっているのでは?と思ったので以下のコマンドを試してみましたが、案の定同じ問題が発生しました。
curl
wget
[解決]再起動したら治りました(T_T)
これをヒントに更に調査してみると以下のエントリを見つけました。
macOSではSierra(10.12)まではOpenSSLを採用していたのですが、High Sierra(10.13)より、LibreSSLを使用するようになったようです。
なるほど。
読み進めるともっと関連ありそうな記載がありました。
ウィルス対策ソフトとしてカスペルスキーを使ってるのですが、これの可能性もありそうです。
(WindowsのWSLでSSL/TLS通信を行おうとするとカスペルスキーのせいで同様のエラーが出るそうです。)
確かに心当たりがあります。
最近会社のセキュリティソフトが ESET から カスペルスキー に変わりました。
インストールし直しましたが、確かにそれが怪しい。
結局再起動したら治りました。
まとめ
ハマったら再起動しましょう。
エンジニアとしては、根本原因をつかめなかった場合、再起動して治ったとしても負けた気分で一杯ではあります。
ディスカッション
コメント一覧
まだ、コメントがありません