SSL憑證問題:憑證鏈中的自簽章憑證

SSL憑證問題:憑證鏈中的自簽章憑證

在防火牆後面,使用 Chrome,我可以像這樣存取 github 儲存庫: https://github.com/Squirrel/Squirrel.Windows

Chrome 使用我們的憑證進行此存取。如果我嘗試使用存取相同的網址Git 擴充,我收到此錯誤:

SSL憑證問題:憑證鏈中的自簽章憑證

我可以讓 GitExtensions 使用我們的憑證來允許存取嗎?

編輯:更多資訊:

在我的機器上,我看不到 mysysGit,但我確實看到了 mingw/curl,所以我假設 Git 正在使用它們。這些在建立憑證鏈時顯然不使用 Windows 信任憑證。我得到的錯誤,SSL憑證問題:憑證鏈中的自簽章憑證,表示 Git/Github 使用的根憑證不存在於內建憑證授權單位 (CA) 根捆綁包中。正如 @Akber Choudhry 所指出的,作為 Github SSL 伺服器提供的憑證鏈的根的 CA 憑證是 DigiCert 高保證 EV 根 CA我確實在 C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt 中看到了該 CA。

為了驗證問題是否出在 Git 而不是 GitExtensions,我在命令列中執行了以下操作:

 >>git clone https://github.com/Squirrel/Squirrel.Windows.git

並收到相同的 SSL 憑證問題錯誤。

它看起來 Git 沒有使用這個證書,因此我嘗試像這樣配置 Git:

>>git config --system http.sslcainfo "C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt"

但這沒有效果..

答案1

在防火牆後面,...github ... Chrome 使用我們的憑證進行此存取。

根據這個描述,我假設「我們的」證書不是 Github 的原始證書,而是您使用帶有 SSL 檢查的防火牆,該防火牆會為連接中間的人產生自己的(「我們的」)證書。頒發此憑證的防火牆中的 CA(代理 CA)可能已新增至 Windows 信任儲存中,而此 Chrome 將信任它。

但 Git 不使用 Windows 信任存儲,因此不知道此代理 CA。因此,您需要將防火牆使用的代理 CA 新增到 Git 的 CA 儲存中,而不是為 Github 頒發憑證的原始 CA。

答案2

當您使用 Chrome 並透過 HTTPS 存取 Github 時,您只是根據瀏覽器和 Windows 中的內建根憑證驗證 Github 的憑證鏈。

在幕後,Gitextensions 使用 msysgit,它在建立憑證鏈時不會參考 Windows 信任憑證。

從錯誤來看,Github 使用的根憑證似乎不存在於內建憑證授權單位 (CA) 根捆綁包中。這可能只是由於 Gitextensions 捆綁了舊版本的 msysgit 或curl。

msysgit 確實包含DigiCert High Assurance EV Root CA在其 CA 捆綁包中,並且已經存在很多年了。在文件中搜尋該字串bin/curl-ca-bundle.crt

檢查您的電腦上是否安裝了舊版的 msysgit 或 mingw 工具。如果是這樣,請清理並重新安裝。最後,如果需要新增證書,請參閱msysgit證書新增流程。

相關內容