GitHubにおけるSSLの認証エラーを回避するため、EV SSL用ルート証明書を追加する

概要

2011年5月末以降、github.comにはDigiCertのEV SSL証明書(DigiCert HighAssurance EV CA-1)が使われるようになりました。しかし、CentOS 5の標準パッケージにはDigiCertのEV SSLルート証明書(DigiCert High Assurance EV Root CA)が含まれていないため、cloneしようとしたところでSSLの認証エラーが発生します。
対策として、EV SSLルート証明書をダウンロードして、SSL証明書に追加しました。



構成

CentOS release 5.7 (Final)



問題

bundle installすると、GitHubからcloneしようとしたところでSSLの認証エラーが発生しました。

$ bundle install
...
Fetching https://github.com/hattori/opensocial-wap.git
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/hattori/opensocial-wap.git/info/refs

fatal: HTTP request failed
Git error: command `git clone 'https://github.com/hattori/opensocial-wap.git' "/home/tetsuyai/dev/projects/myapp/vendor/bundle/ruby/1.9.1/cache/bundler/git/opensocial-wap-b6d4c1ab787fe0d05a4483fea5d29b1752487a7d" --bare --no-hardlinks` in directory /home/tetsuyai/dev/projects/myapp has failed.



解決方法

DigiCert Root Certificates - Download & Test | DigiCert.comからEV SSLルート証明書(DigiCert High Assurance EV Root CA)をダウンロードして、SSL証明書に追加します。


EV SSLルート証明書のダウンロード
# wget -P /tmp https://www.digicert.com/testroot/DigiCertHighAssuranceEVRootCA.crt


SSL証明書への追加

SSL証明書の場所は環境によって異なるので、まずは所在を確認します。

# locate libcurl.so
/usr/lib64/libcurl.so.3
/usr/lib64/libcurl.so.3.0.0
# strings /usr/lib64/libcurl.so.3 | grep bundle
/etc/pki/tls/certs/ca-bundle.crt

所在を確認したら、追加します。

# cat /tmp/DigiCertHighAssuranceEVRootCA.crt >> /etc/pki/tls/certs/ca-bundle.crt



備考

Debian / Fedora / Gentoo / 6以降のRHEL / SUSE / Ubuntuでは、ca-certificatesパッケージをインストールすればいいようです。

残念ながら、5以前のRHELCentOS)にはca-certificatesパッケージが存在しないため、DigiCert Root Certificates - Download & Test | DigiCert.comからEV SSLルート証明書(DigiCert High Assurance EV Root CA)をダウンロードする必要があります。

$ yum --disableplugin=priorities info ca-certificates
Loaded plugins: fastestmirror
Excluding Packages in global exclude list
Finished
Error: No matching Packages to list