一千萬個為什麽

搜索

Git似乎從.gitconfig中識別http.sslcainfo屬性,但在執行時忽略它? SEC_E_UNTRUSTED_ROOT



所有,我有一個工作證書鏈(可用OpenSSL測試),但不知何故我無法告訴Git加載這些證書。

我的git配置指向的是現有證書鏈文件還是偽造的證書鏈文件,我得到相同的“不受信任的根權威”錯誤(SEC_E_UNTRUSTED_ROOT)獨立

For details, please check the attached screenshot.enter image description here

設置我在 .gitconfig 中使用假文件:

sslCAInfo = C:/tmp/foobar.crt

或者,對於適用於OpenSSL的真實文件:

sslCAInfo = C:/tmp/ca-bundle.crt

控制臺記錄:

C:\tmp>openssl version
OpenSSL 0.9.8h 28 May 2008

C:\tmp>git --version
git version 2.12.2.windows.2

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/ca-bundle.crt

C:\tmp>dir
24.04.2017 13:45 10.875 ca-bundle.crt

c:\tmp>openssl s_client -state -connect https://mygithost:443 -CAfile .\ca-bundle.crt

Verify return code: 0 (ok)

C:\tmp git clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

C:\tmp> git -c http.sslverify=false clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
Resoliving deltas: 100%, done.

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/foobar.crt

C:\tmp\xxx\git pull
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

轉載註明原文: Git似乎從.gitconfig中識別http.sslcainfo屬性,但在執行時忽略它? SEC_E_UNTRUSTED_ROOT

一共有 2 個回答:

剛剛完成全新安裝後,今天就碰到了這個問題:

從你的日誌(重點是我的):

致命:無法訪問...: schannel :next InitializeSecurityContext失敗:

git被配置為使用schannel(windows本地實現),但schannel使用windows certs bundle而不是cainfo bundle。

要切換到openssl以使用自定義包文件,請使用以下命令:

git config --system http.sslbackend openssl

現在,git將會遵循http.sslcainfo中傳遞的CA bundle。

或者,因為我的錯誤是密碼套件的問題,您可能會對以下鏈接感興趣:

我在一年前有類似的東西,所以我希望我記得 -

您應該擁有crt文件中的所有證書鏈。驗證您擁有您的bitbucket證書和根證書(包括)之間的所有中間證書。

你可以看看正確的格式,以便通過這裏

當我遇到問題時,我的證書由Comodo簽署,他們的證書和中間件不在大多數系統提供的默認ca-bundle中。

希望有所幫助!

Edit: Now I noticed it happens also with the fake one - try to check the systems default known certificates (each system has such). On windows you can go to the Windows Certificates mmc snap-in.