[英]Access client certificate properties from WCF Service
我正在編寫一個WCF服務,我需要訪問用於連接服務的客戶端證書的哈希代碼。
我正在尋找一個類似於ASP.NET 2.0天的Request.ClientCertificate的屬性或方法,但找不到任何允許輕松訪問客戶端證書的東西。
我們的服務設置為使用basicHttpBinding和“Transport”安全模式運行SSL。
IIS已設置為“需要SSL”和“接受證書”。
需要注意的一點是,用於保護端點的服務器證書來自與客戶端證書不同的CA.客戶端證書僅通過自定義代碼進行驗證(因此需要獲取連接的哈希碼)證書)。
我已經創建了IDispatchMessageInspector的自定義實現,以查看是否可以從那里訪問客戶端證書,但無濟於事。
有人試過這個並且之前有過成功嗎?
看起來您最好的選擇是為您的服務實現自定義證書驗證器。 這基本上是一個派生自X509CertificateValidator的類,然后通過配置文件注冊 。
有關如何在本文中執行此操作的更完整信息。
如果有其他人嘗試應用客戶端證書身份驗證,則需要以下步驟才能使其工作(我們在WCF中為此實例使用basicHttpBinding並在IIS的本地實例中運行):
確保根證書(用於創建任何客戶端證書的證書)位於運行IIS的本地計算機的“受信任的根證書頒發機構”中。
注意如果您在開發環境中,可能需要生成自己的根證書,那么makecert命令行應用程序對此非常有用; 只需運行以下命令:makecert -n“CN = My Test Auth”-r -cy authority -a sha1 -sv“My Private Key.pvk”TestAuth.cer
這將創建名為TestAuth.cer的證書(需要將其添加到計算機的“受信任的根證書頒發機構”)和名為“My Private Key.pvk”的私鑰文件。
現在要生成客戶端證書,您可以運行以下命令:makecert -a sha1 -n“CN = myConnectionCert”-ic“TestAuth.cer”-iv“My Private Key.pvk”-ss My
這創建了一個myConnectionCert主題的證書,並將其添加到您的個人證書存儲區 - 當您現在訪問該站點時(例如,查看服務頁面),IE應該提示您選擇證書 - 選擇您剛剛創建的證書和你應該正常看到服務頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.