こんにちは。
自分はコード管理は Bitbucket とVPS にインストールした redmine + Git を使ってるのですが、仕事などで他の素晴らしい方々がつくったコードとかを使わせてもらうのに Github も利用します。
ところがどっこいしょ。
ある日突然 Github にも Bitbucket にもアクセスできなくなってしまいました。(どういうわけかWindowsからは大丈夫だった ((後ほど書きますが、原因は証明書の有効期限切れだったようですので、Windows側は有効期限がまだ来てなかったってだけの可能性が高いです。詳しくないのではっきりとは言えませんが…。)) )
これは困った、ということで色々と調べてみましたところ、なんとか解決出来ましたのでやり方をメモしておきます。
ある日突然森のなか
何時頃からだったのでしょうか、気がついたら Github にアクセスできなくなり、かわりに SSLエラーという画面が表示されるようになりました。
そしてBitbucketにアクセスしてもご覧のとおり…
原因は証明書の有効期限切れ(+α)だった
SSL接続してると、Chromeなんかではアドレスバーの左端が緑色になり、https の文字も緑色になります。
しかし、エラー状態では https が赤字で取り消し線が引かれ、鍵マークに×印がついた状態になります。
このマークのところをクリックすると詳細を表示できるのですが、みてみるとどうも「DigiCert High Assurance EV Root CA」という証明書の有効期限が切れている模様。
因みにいろいろ調べて回っていたところ、どうも有効期限内でも今回の問題は出ていたようで、その時は「信頼されていない発行者に寄って署名されている」というエラーだったようですので、純粋に有効期限切れだけが原因ではなかったのかもしれません…。(いずれにせよ解決方法は同じでしたが)
消せばいいらしいよ。ただし慎重にね。
どんな問題でも検索すれば割とすぐ解決方法が見つかったりするもんです。いい時代ですね。
で、何個か解決方法を書いていたサイトを巡った内容をまとめてみますと、どうやらキーチェーンアクセスから件の証明書(DigiCert High Assurance EV Root CA)を削除すればいいらしいです。 ((Github も Bitbucket もおなじこの DigiCert の証明書を使っているため、どっちもアクセスできなくなってたらしいです。))
ということで、消すだけでOKらしいので、さくっと消してやりましょうか。
…の前に注意があります。
証明書の削除はちょっと慎重に行う必要があります。なぜならば、
※間違って消してはいけない証明書を消すと、ほかのサイトも見られなくなったりすることがあるようです。
※ついでに、似たような名前の証明書がちらほらとあったりします。
間違えて消してしまった場合でも、再度取得する方法はありますので最後に紹介します。
証明書が見つからない…なんで??
ではさっそくキーチェーンアクセスを立ち上げましょう。
「アプリケーション」→「ユーティリティー」→「キーチェーンアクセス」です。 ((因みにWindowsの場合は、「Windows+R」→「certmgr.msc」と入力して「OK」で開ける「証明書」というツールからできるっぽいですが、Windowsから離れて久しいので今回はこれ以上は触れません…。))
立ち上がったら左上の「キーチェーン」を「ログイン」、「分類」は「証明書」をそれぞれクリックすると右側にそれっぽいものがずらーっと並びますので、
DigiCert High Assurance EV Root CA
を探します。
さがします……
みつかりませんでした。
似たような名前の「DigiCert High Assurance CA-3」というのはみつけましたが、こいつは消しちゃダメなやつです。自分が利用しているサイトによってはこれ以外にも有るかもしれませんが、兎に角「DigiCert High…」くらいまで読んで先走ってこれ消すと上にも書いたようにこれらの証明書が必要な他のサイトとかも開けなくなる恐れがあります。
「気をつけろ、こいつは罠だ!」
では、肝心の「DigiCert High Assurance EV Root CA」はどこに居るのでしょうか。
更に調べてみると、さらなる罠が有りました。
キーチェーンアクセスは有効期限切れ証明書を隠す(非表示にする)オプションがある
はい。そうなんです。知りませんでした。
キーチェーンアクセスのメニューバーにある「表示」メニューのなかに「有効期限の切れた証明書を表示」という項目がありますのでこれをクリックしてください。 ((因みに有効期限の切れた証明書も表示する設定になっている場合は、ここのメニューが「有効期限の切れた証明書を隠す」に変化します))
と、いうことで、改めて一覧を見てみますと……
無事隠れていた「DigiCert High Assurance EV Root CA」が出てきました。
詳細を見てみると、やっぱり有効期限が切れていますね。
ということで、無事見つけましたのであとはこれを消すだけです。
消します。本当に消します。
削除は非常に簡単です。
削除したい証明書を右クリックして、「(証明書名)を削除」を押すだけです。
あ、ブラウザ立ち上がってた場合は一度再起動しておいたほうがいいかもです。
アクセス出来るようになったか確認してみます。
では早速 Github にアクセスしてみましょう。ドキドキの瞬間です。
やりました!私、やりました!!
ついでに Bitbucket も確認します。
こちらもOKです!お父さんコード管理まだ頑張れそうです!
一応、証明書情報も再確認しておきます。
有効期限が2031年11月まで伸びましたね。
ということは、もしかしたら次は2031年の11月ごろまたやる可能性があるのかもしれませんが…まぁ17年後の事を今悩んでもしょうがないですよね。
あと、エラーになっていた方の証明書は「中間認証局」だったのに対し、更新された証明書は「ルート認証局」となり、証明書のツリー構造も変化しましたね。これもなにか関係あるのかな?
ということで、Github / Bitbucket に SSLエラーで接続できない現象の対処方法でした。
間違えて違うのを消しちゃった場合は…
最後に、証明書を間違えて削除してしまったときの対処法も紹介しておきます。
今回の DigiCert が署名している証明書は、 DigiCert のサイトからダウンロードすることができます。
間違えて消してしまっても、焦らずにダウンロードしなおせば大丈夫ですので安心してください。(流石にどれを消したかさっぱり検討がつかない場合はアレかもですが…)
勿論さっき消しちゃダメな方として紹介した DigiCert High Assurance CA-3 もちゃんとありますよ。
ダウンロード先:DigiCert の root 証明書、中間証明書のダウンロード
参考リンク
- osx – Can not clone any git repository from github – Super User
- Mac OS X 10.9.2でGitHubにアクセスするとサーバー証明書のエラーが発生する場合の解決策 – orangain flavor
- MacのブラウザーでGitHubへアクセスするとSSL証明書エラーが発生する場合の対処法 – PC設定のカルマ
- MacでSSL証明書を復元する | しょ〜うぃん広場
[…] 参考にさせていただいたサイトはこちら。 MacからGithubやBitbucketにアクセス出来なくなった現象と解決方法(NeGiMeMo.net) […]