Hatena::ブログ(Diary)

Dマイナー志向 このページをアンテナに追加 RSSフィード

2011-06-14

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 がいいかも #perlless than a minute ago via web Favorite Retweet Reply

http://twitter.com/kjur/status/2541664878993408

@matsuu さん、いつもつぶやき楽しみに観てます。githubワイルドですがgithub.comにマッチするのは証明書のSubjectAltName拡張にgithub.comそのものがあるためで*.github.comとのマッチではないです。既知だったらごめんなさい(^^;less than a minute ago via web Favorite Retweet Reply

http://twitter.com/nahi/status/2544601332195328

@kjur @matsuu SubjectAltNameに*.github.comもありますね。SubjectAltNameにDNS/IPがあったらそっちしか見ちゃいけないルールなのでこのパターン多いですよね。wgetが古い?less than a minute ago via m.ctor.org Favorite Retweet Reply

http://twitter.com/matsuu/status/2566213544714240

@nahi @kjur なるほど。wgetのリポジトリをおっかけてみたところ、2009-10-24にsubjectAltName対応がコミットされてますが未リリースでした。次のリリースで対応になると思います。less than a minute ago via web Favorite Retweet Reply

2011年6月上旬までの状況(一部環境のgit,curl,wgetでcertification error)

  • 2011年5月末以降、github.comにはEV SSL証明書(DigiCert HighAssurance EV CA-1)が使われるようになった。
  • が、RHEL5など一部のディストリビューションにはこのDigiCertのEV SSL用ルート証明書(DigiCert High Assurance Ev Root CA)が標準パッケージに含まれていない。
  • そのため、curlとwgetでcertification errorが出ていた。

2011年6月上旬以降の状況(gitまたは一部環境かつ特定のURLでcertification error)

参考

Gist の raw ファイルの URL が変わった

https経由のgithub.comへのアクセスでcertification errorになる問題の対処方法

  • github.comのEV SSL証明書に対応するためには、ca-certificatesパッケージをインストールすればok。Debian/Fedora/Gentoo/RHEL(6以降)/SUSE/Ubuntu、すべて同じパッケージ名。*BSDはしらん。
  • RHEL(CentOS)5以前にはca-certificatesはパッケージに含まれていない。DigiCertの公式サイトでルート証明書をダウンロード、インストールすれば良い。

gitでcertification errorになる問題の対処方法

wgetによるダウンロードでcertification errorになる問題の対処方法

  • wgetに拘らないのであれば、subjectAltNameに対応しているcURLを使う。
  • どうしてもwgetを使う必要があるのであれば、Bazaarリポジトリから最新版を取得するか、パッチを当てる。
  • gentooはnet-misc/wget-1.12-r3でsubjectAltName対応パッチ適用済。Gentooで適用されているパッチはこちら
  • wget --no-check-certificateは最終手段。

*1:subjectAltNameとしてDNS:github.com, DNS:www.github.comが設定されている。

*2:bzrリポジトリ上のwgetは修正済だが未リリース

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証