CentOS7@Dockerで curl: (77) Problem with the SSL CA cert (path? access rights?)

3行で

  • CentOS7環境でhttpsなサイトにcurlすると curl: (77) Problem with the SSL CA cert (path? access rights?) で失敗する
  • OSのバグなので
  • touch /etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned すると通る

詳細

M1 Macでのdocker run時のみに該当の事象が起きて七転八倒していた。
証明書周辺の問題はわりによくある*1のでノイズも多く、原因を探し当てるのに大変苦労した🥺

ログはこんなで

$ curl -vvv https://github.com
* About to connect() to github.com port 443 (#0)
*   Trying 13.114.40.48...
* Connected to github.com (13.114.40.48) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Closing connection 0
curl: (77) Problem with the SSL CA cert (path? access rights?)

CAfile, CApathの出力まで至らずにコネクションがクローズされているのが謎。
wgetは普通に通ることが確認できたので証明書には問題がないと判断し、インターネットの海に溺れていたところ以下を発見し解決に至った。

There was a curl bug in the distribution image of CentOS-7.

う、嘘だろ…

$ touch /etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned`
# 通るようになった!
$ curl https://github.com

なお今回の事象においては、同様のエラーメッセージで雑にググると出る

  • ca-certificates, opensslのreinstall
  • yum update, upgradeその他
  • update-ca-trust

なんかは関係ないので注意。んなわけないだろと思いつつも一応試したりして無駄足を踏んだ。

なおいまのところM1マシンでしか再現していないのも謎。でもとりあえず原因も特定できたし、もうゴールしてもいいよね?

*1:やれルート証明書がないだの、中間証明書がないだの、自己署名だと通らないだの