はじめに
ローカル環境でAWS CLIを使って検証作業をしようとしたら、HTTPSの証明書関連でエラーが発生して困ってしまいました。とりあえず一時的な回避方法は見つけたものの、「これって本当にこれでいいの?」という疑問が湧いてきたので、色々と調べてみることにしました。
実際には試せていなくて曖昧な理解のままですが、、のちのち検証するときのためにメモとして残しておきます。
開発環境でよくある問題
ローカルPCで開発作業をしていると、HTTPSの証明書検証でエラーが発生するケースがありました。気にしなくてもいいときもあるので、デフォルトの証明書を見る権限がないのではとかいろいろ考えましたが、よくわかりませんでした。
--no-verify-sslオプションを使えば一時的に回避できることがわかりました。でも、これって本番ではやってはいけないですよね。
考えられる対応方法
1. 開発環境での一時的な対応
- --no-verify-sslオプションの使用(とりあえずこれでテストしてみて動くことは確認)
ただ、これはあくまで開発時の「応急処置」的な対応だと思います。本番環境では使えないですよね。
2. WSLを使用した対応
いろいろ調べていたら、WSL環境を使う方法を見つけました。:
- WSLのUbuntu環境には必要な証明書が最初から入ってるみたい
- AWSCLIはインストール直後デフォルトになっていて、/etc/ssl/certs/ca-certificates.crtを見ていそう
コンテナでのAWS SDK実装に向けて
実際にDockerコンテナでAWS SDKを使ったアプリケーションを動かすなどの場合、どうすればいいんでしょうか:
1. Dockerコンテナでの対応
- 証明書パッケージのインストールをDockerfileに書く(最初は空っぽの状態になっているはずで、これやらないとデフォルトの証明書すらありませんということになってしまいそう)
- AWS SDKのセットアップ(ここは普通にやればOK?)
- セキュリティ設定(ここが一番不安...デフォルトでいいのかな?)
まとめ
正直、まだ完璧な理解には至っていないですが、開発環境では一時的な回避策を使いつつ、本番環境ではこんな対応すればできるのではという方法は見えてきました。曖昧な理解でツッコミどころ多いとは思いますが、ご指摘いただけると嬉しいです。
参考にした記事
認証キーの作成はこちらの記事を参考にさせていただきました。わかりやすくスムーズにできました。ありがとうございました。
「CERTIFICATE_VERIFY_FAILED」のエラーが出た際の対処方法はこちらの記事を参考にさせていただきました。これを見て「証明書を見に行く設定がどこかしらにあるはず、、、」とかいろいろ考えることができました。ありがとうございました。