それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

CygwinでSSLがエラーになる対応に、ルート証明書のアップデートが書いてあった

CygwinSSL関連がエラーになり困っていました。githubからCloneしてもエラー。CurlHTTPSしてもエラー、Wgetもエラー。SSLチェックで落ちました。

wget/curlに関してはca-certificatesを指定すれば行けました

FireFoxからルート証明書取り出して、コマンドオプションや、環境変数で参照設定すればエラー無く通信できました。しかし、アプリ毎に設定しているので、gitには反映されない。

curlだけ動いたって気に入らないのでさらに調べた

そもそも証明書が古いのか。不足があるのが原因だと思う。libcurlで行けてもRubyPythonから使うにはまた証明書エラーが出そうなのでちゃんと更新しておきたかった。

ルート証明書全体を更新する方法を見つけた

git - SSL certificate rejected trying to access GitHub over HTTPS behind firewall - Stack Overflow

cd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem \
| awk 'split_after==1{n++;split_after=0}\
 /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

をすればいいと書いてありました。

やってみたら解決した

GitもCurlWgetもコレで解決した。安心。なるほど

Debianに比べてssl base が若干違うのが気になるけど、これで解決した。

2011-05-04追加

Wgetで適当な証明書を取ってくるのが不安ですか?

ブクマコメントに at your own risk で。と描いてあったので。
証明書は、確かに神経を使う問題ですが.証明書の妥当性をチェックするのは第三者で・・・

とか書いてもめんどくさいんで

に書いてあるとおり firefox の証明書を取り出すのが、次善の策です.

SSL エラーが出るときは

いきなりPushしてませんか?とりあえず適当なレポジトリをclone して証明書を受け入れるダイアログだしてYESと答えてお来ましょう。すると嬉しくなれます.