使用地端 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 內容,如下圖:
或是用以下方式
最後選擇 Version Control -> Azure DevOps Git,就可以建立工作區
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET