brew updateのSSL証明書エラーに対処した

いつものようにbrew updateを実行したらSSL証明書のエラーが発生したので、その対処の覚え書。

動作環境

症状

$ brew update
fatal: unable to access 'https://github.com/Homebrew/homebrew/': SSL certificate problem: Invalid certificate chain
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

方法その1

下記の方法に従って、有効期限が切れた証明書を削除した。

キーチェーンで「有効期限が2014-07-27の DigiCert High Assurance EV Root CA」を探して、これを消す方法で解決してる人がいた。試してみたところ、うまくいったっぽい。

[解決済み]OSXアップデートしたらGitHubでSSL証明書エラーが出て繋がらなくなった件と対処法 - MEMOGRAPHIX

結果として問題は上手く解決して、brew updateが成功するようになった。

方法その2

しかしながら、上記の方法では解決しない別マシンも有った。そこで下記の手順に従って、証明書の場所を「システムルート」から「システム」に変更した。(両者にどのような違いが有るのか分かっていない)

1. go to Keychain Access
2. find DigiCert High Assurance EV Root CA in System Roots keychain
3. drag'n'drop it to System keychain

homebrew install broken on OS X 10.9.2 · Issue #28844 · Homebrew/legacy-homebrew · GitHub

問題は上手く解決して、brew updateが成功するようになった。

本家のブログに情報が載っていたけど、互換性確保のために残してあった証明書が、今回のエラーの発端だったようだ。

The expired certificate in question is the “DigiCert High Assurance EV Root CA” [Expiration July 26, 2014] certificate. This temporary intermediate certificate was used in years past as part of a compatibility chain for older devices.

How to Fix an Expired Intermediate SSL Certificate Chain