簡體   English   中英

Visual Studio 2017 Enterprise + TFS 2018 + Git Clone = 無法獲得本地頒發者證書

[英]Visual Studio 2017 Enterprise + TFS 2018 + Git Clone = Unable to get local issuer certificate

我是與 Git 交互的新手,我正在嘗試將它與 TFS 基礎設施結合起來,但遇到了 SSL 身份驗證問題。 沒有 Github,沒有 VSTS。 TFS 是本地的,因此是本地安裝。

服務器部分:

我已經在 Windows Server 2016 上安裝了 TFS 2018 並創建了一個企業自簽名證書並在該證書上綁定了 TFS Web 服務(IIS 管理器)。

TFS 配置為僅通過 HTTPS 運行。 HTTP 被重定向到 HTTPS。 我已經使用 Git 作為版本控制系統設置了一個新項目。

客戶端部分:

我有兩種 Windows 客戶端。 Windows 7 SP1 和 10 周年更新,它們都帶有 Visual Studio 2017 Enterprise。

我安裝了證書(作為受信任的根證書頒發機構)並通過瀏覽器連接我看不到任何項目信息。 沒有瀏覽器會發出有關證書真實性的任何類型的警報。 然后,我使用 Windows 安全通道庫安裝了 Git-2.15.1.2-64-bit.exe。

我按照本指南配置 Git 客戶端,因為我遇到了標題致命錯誤。 所以基本上我提取了自簽名的內容並附加到 ca-bundle.crt 文件中。 他們都:

  • C:/程序文件/Git/mingw64/ssl/certs/
  • C:\\users\\myname (就像指南說的那樣創建為全局一個)
  • C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\Git\\mingw32\\ssl\\certs(這是由 Visual Studio 2017 安裝創建的)

當我通過 Powershell 使用“git config --list --show-origin”命令時,我看到列出:file:"C:\\Program Files\\Git\\mingw64/etc/gifconfig" http.sslcainfo=C:/Program Files/ Git/mingw64/ssl/certs/ca-bundle.crt 文件:"C:/users/myname/.gifconfig" http.sslcainfo=C:/users/myname/ca-bundle.crt

如果我嘗試從 VS2017 團隊資源管理器面板克隆存儲庫,它會一直說:“ Git 失敗,出現致命錯誤。致命:無法訪問‘ https://tfs.blahblah/ ’:SSL 證書問題:無法獲得本地頒發者證書

但是當我使用 Git GUI 時,它會回答一個不同的錯誤:致命:找不到遠程引用 HEAD據我所知,它看起來很合理,因為沒有附加提交。

但是如果我不能與 Visual Studio 2017“配對”,我就不能提交任何東西。

我通讀了幾個鏈接,但我無法通過。 因此,在將其標記為重復之前,我請您注意我的特定系統/環境要求。

注意:請不要建議我關閉 SSL,因為正如已經說過的,它不是公司/企業環境中的解決方案

這是我為解決問題所做的工作:

在團隊資源管理器的 Git 設置、全局設置中,有一個選項可以在 OpenSSL 和安全通道之間進行選擇。

從 Visual Studio 2017(版本 15.7 預覽版 3)開始,在 Git 全局設置中使用 SChannel 修復了我的問題。

在系統管理員支持兩天后,我得到了解決方案。 我把它貼在這里以防它可以幫助別人。 Visual Studio 2017 看起來不接受自簽名證書,因為錯誤狀態(“本地發行者等等”)。 它必須是本地 CA 才能批准它。 步驟是:

服務器:

  1. 在 TFS 機器上安裝 Company/Trusted CA 作為 Trusted Authority root
  2. 為 TFS 准備證書並使其源自公司/受信任的 CA。
  3. 在 TFS 機器中將其安裝為 Trusted Authority root
  4. 配置 TFS-IIS 綁定以使 TFS 證書成為 HTTPS 連接的強制性證書

客戶:

  1. 在客戶端計算機上將 CA 證書安裝為 Trusted Authority root(在 Windows 7 和 10 中嘗試)
  2. 在客戶端機器上安裝 TFS 證書作為 Trusted Authority 根(您應該在瀏覽器中看到鎖定並通過它連接必須被識別為安全)
  3. 安裝 Git 客戶端(我有 Git-2.15.1.2-64 位)。
  4. 運行一個 shell(你喜歡的 cmd、Powershell、Git-bash)並將這個命令數字化: git config --global http.sslCAInfo C:/Users//ca-bundle.crt(因為 Git 和 Visual Studio 有多個文件夾存儲證書,您基本上是為它們創建一個全局路徑)
  5. 現在您應該能夠看到一個包含以下內容的新 .g​​itconfig 文件: [http] sslCAInfo = C:/Users//ca-bundle.crt
  6. 如果您使用數字命令“git config --list --show-origin”,您應該會看到添加的新路徑/配置
  7. 將 ca-bundle.crt 從 C:\\Program Files\\Git\\mingw64\\ssl\\certs 路徑復制到 C:/Users// 路徑
  8. 將 CA 證書導出為 Base 64 X.509 (.CER) 到您指定的路徑(您可以從 IE Internet Options/Content/Certificates 查看證書)。
  9. 使用 Notepad++ 等編輯器或您剛剛導出的任何 CA 證書打開它。 內容應該是: -----BEGIN CERTIFICATE-----publickey-----END CERTIFICATE-----
  10. 復制此內容
  11. 打開 C:/Users//ca-bundle.crt 並粘貼附加該內容
  12. 將 TFS 證書導出為 Base 64 X.509 (.CER) 到您的路徑。
  13. 用你喜歡的編輯器打開它並復制內容
  14. 打開 C:/Users//ca-bundle.crt 並粘貼附加該內容
  15. 保存文件

現在您應該能夠克隆存儲庫。

所以基本上關鍵是證書必須具有所有鏈授權,並且必須有一個

您可以通過以下方式快速解決:

git config --global http.sslVerify false

參考: https : //confluence.atlassian.com/bitbucketserverkb/ssl-certificate-problem-unable-to-get-local-issuer-certificate-816521128.html

在瀏覽器中打開 tfs url,然后單擊地址欄中的鎖定圖標,然后將根證書導出為 Base 64 X.509 (.CER),然后將根證書附加到此處的證書文件中:“C:\\Program Files ( x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\Git\\mingw32\\ssl\\certs\\ca-bundle.crt"

我遇到了同樣的問題。 以下是對我有用的兩個步驟來解決問題:

  1. 轉到 Tools > Options > Source Control > Git Global Settings 將Cryptographic network provider設置為Secure Channel
  2. 重新連接項目。 轉到團隊資源管理器 > 管理連接 > 連接到項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM