本文討論 WinUI 應用程式中憑證的使用。 數位憑證用於公開金鑰密碼學中,將公開金鑰綁定於個人、電腦或組織。 綁定身份最常用來將一個實體與另一個實體進行驗證。 例如,憑證常用於將網頁伺服器認證給使用者,以及將使用者認證給網頁伺服器。 你可以建立憑證請求,並安裝或匯入已核發的憑證。 你也可以在證書階層中註冊證書。
共享憑證儲存
WinUI 應用程式採用了 Windows 8 引入的新隔離主義應用程式模型。 在此模型中,應用程式運行於低階作業系統架構中,稱為應用程式容器,除非明確允許,否則該應用程式無法存取外部資源或檔案。 以下章節將說明此對公鑰基礎架構(PKI)的影響。
每個應用程式容器的憑證儲存
用於特定應用程式容器的憑證會儲存在每位使用者、每個應用程式容器的位置。 在應用程式容器中執行的應用程式,僅能寫入其自身憑證儲存空間。 如果應用程式將憑證加入任何儲存庫,這些憑證將無法被其他應用程式讀取。 如果應用程式被卸載,所有與該應用程式相關的憑證也會被移除。 應用程式還能讀取除 MY 和 REQUEST 儲存庫外的本地機器憑證儲存庫。
緩存
每個應用程式容器都有一個隔離快取,可儲存驗證所需的發行憑證、憑證撤銷清單(CRL)及線上憑證狀態協定(OCSP)回應。
共享憑證與金鑰
當智慧卡插入讀卡器時,卡片上的憑證和金鑰會傳播到使用者的 MY 儲存庫,讓使用者執行的任何全信任應用程式都能共享。 不過預設情況下,應用程式容器無法存取每位使用者的 MY 商店。
為了解決此問題並讓主體群組能存取資源群組,應用程式容器隔離模型支援了能力概念。 一項能力允許應用程式容器程序存取特定資源。 sharedUserCertificates 功能賦予應用程式容器對使用者 MY 儲存庫及智慧卡 Trusted Roots 儲存庫中憑證與金鑰的讀取權限。 此功能不會授予使用者 REQUEST 儲存的讀取權限。
你在清單中指定 sharedUserCertificates 功能,如下範例所示。
<Capabilities>
<Capability Name="sharedUserCertificates" />
</Capabilities>
證書欄位
X.509 公鑰憑證標準隨著時間不斷修訂。 每一代資料結構都保留了先前版本的欄位,並新增更多欄位,如下圖所示。
其中一些欄位和擴充功能可以在使用 CertificateRequestProperties 類別建立憑證請求時直接指定。 大多數人無法做到。 這些欄位可以由發行權威填寫,也可以留空。 欲了解更多相關欄位資訊,請參閱以下章節:
版本 1 欄位
| 領域 | 說明 |
|---|---|
| 版本 | 指定編碼憑證的版本號。 目前,這個欄位的可能值是 0、1 或 2。 |
| 序號 | 包含由認證機構(CA)指派給該證書的正且唯一的整數。 |
| 簽章演算法 | 包含物件識別碼(OID),指定 CA 用於簽署憑證的演算法。 例如,1.2.840.113549.1.1.5 規定了結合 RSA 實驗室的 RSA 加密演算法的 SHA-1 雜湊演算法。 |
| Issuer | 包含創建並簽署憑證的 CA 的 X.500 識別名稱(DN)。 |
| 有效期 | 指定證書有效的時間區間。 截至2049年底的日期使用協調世界時(格林威治標準時間)格式(yymmddhhmmssz)。 從2050年1月1日開始的日期採用一般時間格式(yyyymmddhhmmssz)。 |
| 主旨 | 包含與證書中公開金鑰相關聯實體的 X.500 區別名稱。 |
| 公開金鑰 | 包含公開金鑰及相關演算法資訊。 |
版本 2 欄位
X.509 版本 2 憑證包含版本 1 中定義的基本欄位,並新增以下欄位。
| 領域 | 說明 |
|---|---|
| 發行者唯一識別碼 | 包含一個唯一值,可用於讓 CA 的 X.500 名稱在不同實體隨時間重複使用時保持無歧義。 |
| 主體唯一識別碼 | 包含唯一值,可用於使憑證主體的 X.500 名稱在不同實體隨時間重複使用時保持無歧義。 |
版本 3 擴充功能
X.509 版本 3 憑證包含版本 1 與版本 2 定義的欄位,並新增憑證擴充功能。
| 領域 | 說明 |
|---|---|
| 授權單位金鑰標識碼 | 識別與用於簽署憑證的CA私鑰對應的認證機構(CA)公開金鑰。 |
| 基本限制 | 規定該實體是否可作為憑證授權機構使用,若可,則可在憑證鏈中存在於其下方的次級憑證授權機構數量。 |
| 憑證原則 | 規定憑證的發行政策及可用於何種目的。 |
| CRL 發佈點 | 包含基礎憑證撤銷清單(CRL)的 URI。 |
| 增強金鑰使用方式 | 規定憑證中公開金鑰的使用方式。 |
| 發行人替代名稱 | 指定一個或多個憑證要求的簽發者的替代名稱形式。 |
| 主要用法 | 規範憑證中公開金鑰可執行的操作限制。 |
| 名稱限制 | 指定憑證階層中所有主體名稱必須位於的命名空間。 該擴充功能僅用於 CA 憑證。 |
| 政策限制 | 限制路徑驗證,禁止政策映射,或要求階層中的每個憑證包含可接受的政策識別碼。 該擴充功能僅用於 CA 憑證。 |
| 政策映射 | 指定下屬 CA 中與發布 CA 政策對應的政策。 |
| 私鑰使用期間 | 規定私鑰的有效期與所關聯憑證的有效期不同。 |
| 主體別名 | 指定一種或多種證書申請對象的替代名稱形式。 範例的替代形式包括電子郵件地址、DNS 名稱、IP 位址及 URI。 |
| 主題目錄屬性 | 傳達身份特徵,如證書主體的國籍。 擴展值是一串的 OID 值對序列。 |
| 主體金鑰識別碼 | 區分憑證主體持有的多個公鑰。 擴充值通常是金鑰的 SHA-1 雜湊值。 |