解決 Rider 連接 Azure DevOps Server / Team Foundation Server 時憑證錯誤

使用地端 Azure DevOps Server 發生憑證的問題,java.lang.RuntimeException: An error occurred: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 估計是根憑證不被信任的問題,為了找出正確的憑證信任區,花了我不少的時間...

開發環境

  • VS Enterprise 2019
  • Rider 2020.2

 

問題重現,無法建立 Azure DevOps TFVC Workwork

跟 上一篇 一樣的操作步驟

 

在 Team Foundation Server 輸入帳號密碼登入,列出專案,按下 Create Workspace

原以為按下 Create Workspace 會很順利...

 

結果,出現了找不到憑證的錯誤訊息,如下圖:

java.lang.RuntimeException: An error occurred: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    at com.microsoft.alm.plugin.external.commands.Command.throwIfError(Command.java:438)
    at com.microsoft.alm.plugin.external.commands.CreateWorkspaceCommand.throwIfError(CreateWorkspaceCommand.java:114)
    at com.microsoft.alm.plugin.external.commands.CreateWorkspaceCommand.parseOutput(CreateWorkspaceCommand.java:96)
    at com.microsoft.alm.plugin.external.commands.CreateWorkspaceCommand.parseOutput(CreateWorkspaceCommand.java:22)
    at com.microsoft.alm.plugin.external.commands.Command$1.completed(Command.java:178)
    at com.microsoft.alm.plugin.external.ToolRunner$ListenerProxy.completed(ToolRunner.java:295)
    at com.microsoft.alm.plugin.external.ToolRunner$ProcessWaiter.run(ToolRunner.java:333)

 

推測:這個 Azure DevOps Server 所使用的是內部 CA Server 頒發的根憑證,不在預設的信任區內,所以得要將它加入信任區。

 

Java 的憑證並沒有集中管理,所以我得找出正確的信任憑證儲存區,憑證管理的工具我使用 KeyStore Explorer,預設密碼是 changeit,操作介面相當的簡單,自行 google 就可以了

 

Rider 個人儲存區

當訪問有憑證問題的網站時,可以在 Settings -> Tools -> Server Certificate,看到憑證已自動被安裝,這裡放的並不是 CA 憑證,嘗試手動匯入 CA 憑證但仍無法解決問題

 

偶然發現這張憑證是被放在 %userprofile%\AppData\Roaming\JetBrains\Rider2020.2\ssl\cacerts

 

既然這個儲存區有問題,我就到 JAVA_HOME 的路徑下去找

 

Java 內建儲存區

我分別用了兩個 JDK 版本,路徑如下

D:\Tools\AdoptOpenJDK\jdk-8.0.272.10-hotspot\jre\lib\security\cacerts

D:\Tools\AdoptOpenJDK\jdk-11.0.9.11-hotspot\lib\security\cacerts

 

並使用 KeyStore Explorer,匯入 Azure DevOps Server 憑證 和 CA 根憑證

 

花了好久的時間,仍然是宣告失敗....

 

Rider 應用程式儲存區

不同的安裝方式憑證路徑會不同

使用單一檔案安裝,路徑為 C:\Program Files\JetBrains\JetBrains Rider 2020.2.1\jbr\lib\security\cacerts

 

使用 Toolbox 安裝 Rider 路徑為 %userprofile%\AppData\Local\JetBrains\Toolbox\apps\Rider\ch-0\211.7142.19\jbr\lib\security\cacerts

Azure DevOps Git

TFCV 有憑證的問題,順手也測了一下,找到這篇文章照著做一下子就解決了

http://blog.majcica.com/2016/12/27/installing-self-signed-certificates-into-git-cert-store/

 

首先,將根憑證匯出成 base-64 編碼格式

在瀏覽器檢視站台憑證,如下圖:

 

選擇根憑證,如下圖:

 

選擇匯出格式,如下圖:

 

輸入存檔路徑,如下圖:

加入根憑證到 git 憑證信任區

信任區位置:C:\Program Files\Git\mingw64\ssl\certs

找到 ca-bundle.crt 檔案,然後用記事本打開,把 CA 憑證貼上去

 

ca-bundle.crt 內容,如下圖:

 

或是用以下方式

https://medium.com/@alex_cheng_9527/git-%E8%87%AA%E7%B0%BD%E6%86%91%E8%AD%89%E5%95%8F%E9%A1%8C-self-signed-certificate-1ebba5eaf61c

 

最後選擇 Version Control -> Azure DevOps Git,就可以建立工作區

 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo