WCF NetTcpBinding Transport安全模式(7) ClientCredentialType證書驗證模式—-ChainTrust驗證模式
ChainTrust驗證模式使用證書鏈來驗證 X.509證書是否有效以及是否由受信任的頒發者所頒發。它指定每個證書都必須存在於某個證書層次結構中,而該層次結構以位於證書鏈頂端的根證書頒發機構結束。它將驗證 X.509證書是否由受信任的證書頒發機構頒發。通過搜尋證書儲存區並確定是否已將該證書頒發機構的證書指定為受信任的證書,可以做到這一點。為了使 WCF能夠做出此判斷,必須將證書頒發機構證書鏈安裝在正確的證書儲存區中。
因為 Windows附帶一組預設的用於受信任證書頒發機構的證書鏈,所以可能不必為所有證書頒發機構安裝證書鏈。
擴充套件閱讀 X.509的證書鏈說明
crt上有證書持有人的資訊、持有人的公鑰、簽署者的簽名。當安裝了一個證書後,就信任了這份證書。證書上會說明用途,例如伺服器認證、客戶端認證,或者簽署其他證書。當系統收到一份新的證書的時候,證書會說明是由誰簽署的。如果這個簽署者確實可以簽署其他證書,並且收到證書上的簽名和簽署者的公鑰可以對上的時候,系統就自動信任新的證書。
在系統開始的時候,會自動安裝信任一些證書機構,這些被稱為根證書機構(CA)。根證書機構會為其他公司頒發證書,用於各種用途。當然,被簽署的證書也可能是一份“可簽署證書”,這樣就要檢查對方的資質。這樣逐層簽署,就會形成“證書鏈”。
設定驗證模式為“ChainTrust”的配置如以下程式碼所示。
在服務端設定驗證客戶端憑據模式為“ChainTrust”:
<clientCertificate >
<certificate findValue=“XuanhunClient“
storeLocation=“CurrentUser“
storeName=“My“
x509FindType=“FindBySubjectName“/>
<authentication certificateValidationMode=“ChainTrust“ trustedStoreLocation=“CurrentUser“ />
</clientCertificate>
在客戶端設定驗證驗證服務端憑據模式為“ChainTrust”:
<serviceCertificate >
<defaultCertificate
x509FindType=”FindBySubjectName”
storeLocation=”CurrentUser”
storeName=”TrustedPeople”
findValue=”XuanhunServer”
/>
<authentication certificateValidationMode=“ChainTrust“ />
</serviceCertificate>
—————-注:本文部分內容改編自《.NET 安全揭祕》