SSL証明書が切れたと思ったら別の原因で通信できなかった件

Vagrant にていつもの通りCentOS上でサーバ構築するためにbundle install実行したらこんなエラーメッセージが表示されました。

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.global.ssl.fastly.net/gems/diff-lcs-1.2.5.gem)

最初に、昨年発生したSSLv3.0脆弱製が頭をよぎったのですが、google先生stackoverflow先生を見てみるとどうやら原因はそこではない空気が漂っている。 (httpsを使わずにhttpを使えって言う回答はちょっと違うような気が。。。)

最終的にVagrantのイメージ(CentOS6.3)もだいぶ変えてないし、SSLクライアント証明書が古いんじゃないかと思い、おもむろに更新を実行

yum install ca-certificates
Loaded plugins: fastestmirror, versionlock
Loading mirror speeds from cached hostfile
:
Setting up Install Process
Package ca-certificates-2014.1.98-65.0.el6_5.noarch already installed and latest version
Nothing to do

?????(最新バージョンだ。。。)

ここで数十分間悩み、以下を実行

curl -L -I https://rubygems.global.ssl.fastly.net --cacert /etc/pki/tls/certs/ca-bundle.crt
curl: (60) Peer certificate cannot be authenticated with known CA certificates
:

??????????(curlで最新のCA証明書を指定しても駄目)

さらに数十分間悩んだ末おもむろに以下を実行してみた所。。。

date
Sun Nov 22 21:02:03 UTC 2009

時刻が大幅に合ってねえw

ということで、原因はインスタンスの時刻がずれていたことでした。 (ntpは起動していたが差が大きすぎると補正できない)

以下のように手動で強制的にntpサーバに同期

sudo /etc/init.d/ntp stop
sudo /usr/sbin/ntpdate ntp.nict.jp
sudo /etc/init.d/ntp start
bundle install
# 成功!

良かった