The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何正確安裝政府簽發的憑證到正式主機

我之前為了要讓我的 ASP.NET 可以寄出 S/MIME 簽章過的郵件費了好大一番功夫,在開發環境與測試環境解決了【ASP.NET 使用 X509Certificate2 類別匯入憑證檔時發生錯誤】與【CryptographicException: 控制碼無效(The handle is invalid)】問題,但是正式部署到正式機時竟然又出現另一個錯誤:A certificate chain could not be built to a trusted root authority.

由於本次安裝的憑證是由政府憑證管理中心所簽發的,會出現【A certificate chain could not be built to a trusted root authority.】的錯誤就是因為本機電腦不信任這張憑證的「根憑證」所致。

如下圖所示,你先開啟「本機電腦」的「個人/憑證」區,並點選開啟你先前匯入的憑證,再切換到「憑證路徑」頁籤,這時你可以看到這張憑證其實有兩個「根憑證」,你必須將這兩張憑證都匯入到「信任的根憑證授權」的憑證儲存區才行!

先開啟「本機電腦」的「個人/憑證」區,並點選開啟你先前匯入的憑證,再切換到「憑證路徑」頁籤,這時你可以看到這張憑證其實有兩個「根憑證」,你必須將這兩張憑證都匯入到「信任的根憑證授權」的憑證儲存區才行!

照理說 "TW Government Root Certification Authority" 這張憑證是不需要額外安裝到「信任的根憑證授權」的憑證儲存區中的,因為若你有正常定期執行 Windows Update 的話,這張憑證就會自動被安裝到信任的根憑證中!而這次我們安裝的主機看似已經很久沒有執行 Windows Update 了,所以才會遇到這個問題。

若要手動將這兩張憑證匯入到「信任的根憑證授權」的憑證儲存區必須依照以下步驟進行:

1. 先點選最上層的根憑證,並點選「檢視憑證」按鈕

先點選最上層的根憑證,並點選「檢視憑證」按鈕

2. 接著點選「詳細資料」頁籤,再點選「複製到檔案」進行憑證匯出

接著點選「詳細資料」頁籤,再點選「複製到檔案」進行憑證匯出

3. 憑證有許多種格式,你隨便選一種即可。假設我們選取 DER 編碼二位元 X.509 (.CER) 格式,然後設定匯出的檔名,你可以匯出到任何目錄下,假設我們將憑證匯出到 C:\TWGovRoot.cer

憑證有許多種格式,你隨便選一種即可,假設我們選取 DER 編碼二位元 X.509 (.CER) 格式

設定匯出的檔名,你可以匯出到任何地方,假設我們將憑證匯出到 C:\TWGovRoot.cer

4. 然後再匯出「政府憑證管理中心」的憑證,照著步驟 1 ~ 3 再做一遍

5. 最後我們就要將剛剛匯出的兩張憑證一個個匯入到「信任的根憑證授權」的憑證儲存區中

將剛剛匯出的兩張憑證一個個匯入到「信任的根憑證授權」的憑證儲存區中

將剛剛匯出的兩張憑證一個個匯入到「信任的根憑證授權」的憑證儲存區中

匯入完成之後程式終於可以正常運作了!