接続できない理由は他のブログなどでも言われている内容と同じ
curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: http://curl.haxx.se/docs/sslcerts.html
これだった。
https://japan.zdnet.com/article/35177496/
解決は・・・
開発環境で以下を実施した
sudo yum update ca-certificates
やりたかったことは
APIサーバ=がHTTPSであり、開発環境を使ってAPIサーバーから情報を取得したかった。
経緯
恐らくは上記の内容であろうことは検討がついていたが、上記が問題であると確定させる方法が不明だった。
開発環境のサーバーは、Amazon linux 2 であり、APIサーバーは又別に存在している。
まず、先駆者が書いてくれている情報から証明書の問題であることはわかるが、それがAPIサーバー側で必要なことか開発環境で必要なことかがわからなかった。
しかし、ローカル環境からはAPIサーバーに対してHTTPSでの通信が行えていることから開発環境が問題であることは分かった。
そこで更に、開発環境で本当に証明書が悪いという点を確認したかったので方法を探した。
結果的に以下の方法で該当したため、証明書が悪いと判断した。
開発環境に接続し、
trust list | grep -C3 'DST Root CA X3'
そして何が表示されるかを確認した。
pkcs11:id=%a8%e3%02%96%70%a6%8b%57%eb%ec%ef%cc%29%4e%91%74%9a%d4%92%38;object-type=cert
type: certificate
label: DST Root CA X3
trust: anchor
category: authority
何も表示されなければOKとのことだった。
書いている最中に参考になる記事が他にも無いか確認したところ、こっちのほうが参考になりそうだった。
https://iret.media/51301
https://www.yukkuriikouze.com/2020/12/27/4085/
下記を使うことで、SSL証明書の内容を調べることが出来るようだ。
openssl s_client -connect foo.bar.com:443 < /dev/null 2> /dev/null | openssl x509 -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
04:e3:91:24:eb:0e:28:a7:9e:e7:84:ac:b4:65:8d:4d:b9:c7
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
Validity
Not Before: Oct 26 13:34:11 2019 GMT
Not After : Jan 24 13:34:11 2020 GMT
:
余談
yum list installed
でパッケージを確認できる。
これで表示されたバージョンが以下だった。
ca-certificates.noarch 2019.2.32-76.amzn2.0.3 installed
これが問題になるのか分からなかった。
よくわからないながら実施したことだったが、yumがインストールされていない、使えない状況の場合は、
クロス署名されたLet’s Encryptの中間証明書を取得してシステムに組み込むという対応が正しいのだろう。
結局解決できているが詳しいことが理解できていない。
EC2インスタンスの場合はLet’s Encryptが使われているのだろうが、本番環境も同じという考えでいいのか、この辺りは未だ勉強する必要がある。