gitやcurlやwgetでGitHubにアクセスするとcertification errorになる原因を調べてみた
中の人に裏を取ったわけではなく私の推測です。間違っているかもしれません。
2010年11月から2011年5月末までの状況(gitやwgetでcertification error)
- 2010年11月頃、GitHubではすべてのアクセスにSSLを使うよう仕様が変わった。
- この時、SSL証明書にはワイルドカード証明書(*.github.com)が使われていた。
- *.github.comのワイルドカード証明書にgithub.comは含まれないのだが、SSL証明書にはX509v3 Subject Alternative Name(subjectAltName)が設定されている*1ため、subjectAltNameに対応したクライアントであれば問題ない。
- しかし、wgetの最新版1.12はsubjectAltNameに未対応*2。wgetではcertification errorが出ていた。
参考
http://twitter.com/matsuu/statuses/2206462784831488
*.github.comのワイルドカードSSL証明書ってgithub.comにもマッチするのが正しい?主要なブラウザはok、wgetはNG。で、cpanmのwget http://xrl.us/cpanm で影響でてます。 curl -L -o cpanm がいいかも #perl
http://twitter.com/kjur/status/2541664878993408
@matsuu さん、いつもつぶやき楽しみに観てます。githubワイルドですがgithub.comにマッチするのは証明書のSubjectAltName拡張にgithub.comそのものがあるためで*.github.comとのマッチではないです。既知だったらごめんなさい(^^;
http://twitter.com/nahi/status/2544601332195328
@kjur @matsuu SubjectAltNameに*.github.comもありますね。SubjectAltNameにDNS/IPがあったらそっちしか見ちゃいけないルールなのでこのパターン多いですよね。wgetが古い?
http://twitter.com/matsuu/status/2566213544714240
2011年6月上旬以降の状況(gitまたは一部環境かつ特定のURLでcertification error)
- 2011年6月上旬に、すべてのダウンロードはraw.github.comから行われるようになった。
- subjectAltNameに対応しないwgetもraw.github.comならワイルドカードに合致するためダウンロードできる。
- 従来のURLも自動的にraw.github.comへリダイレクトされる。
- しかし、例えばApp::CpanminusのダウンロードURLは http://xrl.us/cpanm なのだが、リダイレクトされる順番が次のようになる
- DigiCertのEV SSL用ルート証明書がインストールされていない環境では3番目のURLでcertification errorになる。