2016-03-05 137 views
6

我剛剛創建其中一個GitHub的賬戶和一個倉庫,而是試圖通過github上:服務器證書驗證失敗

git clone https://github.com/<user>/<project>.git 

創建使用recommende URL本地工作副本時,我得到這樣

錯誤

致命:無法訪問'https://github.com/<user>/<project>.git':服務器證書驗證失敗。憑證檔案錯誤:/家庭/ <用戶> /.ssl/trusted.pem CRLfile:無

我在Debian的傑西,我本來期望Debian和GitHub上既提供/依靠的是先進的普遍接受CA,但顯然我的系統不信任GibHub的證書。

任何簡單的方法來解決這個問題(沒有經常推薦的「GIT_SSL_NO_VERIFY = true」黑客和類似的解決方法)?

編輯:

其他信息:

  • 的CA證書軟件包安裝。
  • 安裝cacert.org的證書爲@VonC建議的 沒有任何改變。
  • 我個人的〜/ .ssl/trusted.pem文件的確包含幾個條目,但要 說實話,我不記得是哪所添加的證書從...
  • 來到時,刪除〜/。 SSL/trusted.pem,git的錯誤消息

    改變
    fatal: unable to access 'https://github.com/tcrass/scans2jpg.git/': Problem with the SSL CA cert (path? access rights?) 
    

編輯:

@ VonC的諮詢,以確定混帳https.sslCAinfo選項讓我在正確的軌道上 - 我剛纔添加的將cacert.org CA下載到我的電腦上rusted.pem,現在git不再抱怨了。

+0

提到的CA文件是什麼?也許你的SSL沒有找到電子證書?你安裝了它們嗎? – Reactormonk

+0

我編輯了答案,以確保git引用這些ca. – VonC

回答

18

首先確保您的證書已安裝在您的Debian中/etc/ssl/certs

如果沒有,重新安裝:

sudo apt-get install --reinstall ca-certificates 

自那package does not include root certificates,添加:

sudo mkdir /usr/local/share/ca-certificates/cacert.org 
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt 
sudo update-ca-certificates 

確保您的git不會引用這些CA:

git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt 

Jason C mentio ns另一個潛在原因:(in the comments):

這是時鐘。 NTP服務器關閉,系統時鐘設置不正確,我沒有注意到或者認爲最初需要檢查,並且不正確的時間導致驗證失敗。

Certificates are time sensitive

+0

我也收到相同的消息。具體來說,我說致命:無法訪問'網址/':服務器證書驗證失敗。 CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile:無。我通過ssh使用git。這會有所作爲嗎? –

+0

@CodedContainer是的確實:CA(證書頒發機構)驗證TLS證書的公鑰(在https中使用)。 ssCAinfo對ssh url沒有影響。你確定你的遠程URL不*以https開頭嗎? – VonC

+0

嗯。我今天突然開始出現這個錯誤,只在一個設備(一個Raspberry Pi)上,自上次工作以來一直沒有被觸及。我跑完了這個答案中的所有步驟,並且抓取了一些新的證書,但是我仍然得到了同樣的錯誤(git URL確實以https開頭,它在gitlab.com上)。任何其他想法? –

15

您也可以通過鍵入禁用SSL驗證:

git config --global http.sslverify false

謝謝:)

+1

Downvoted當然:這可以完成測試,但除此之外,您不應該禁用ssl驗證。 – VonC

+0

爲什麼不!如果你想改變登錄/密碼的認證類型! 如果您有確認「義務」的可靠來源:不要停用ssl,謝謝您將其提供給我。 感謝您的評論:) – mkebri

+1

這不是一個義務,只是一個(非常強)的建議。 SSL證書是關於您和*已知*端點之間的端到端加密的。取消激活ssl證書會使你受到MiM攻擊(https://en.wikipedia.org/wiki/Man-in-the-middle_attack) – VonC

3

它也可以自簽名證書等關閉SSL驗證全球範圍內是不安全的。您可以安裝證書,以便系統可以看到證書,但證書應該完全正確。

或者你可以用一個時間配置參數克隆,因此命令將是:

git clone -c http.sslverify=false https://myserver/<user>/<project>.git; 

GIT會記住假值,您可以檢查它在<project>/.git/config文件。

相關問題