2010-07-12 157 views
2

我一直在努力與WCF一段時間,我似乎無法弄清楚。 我有一個啓用SSL的自託管WCF服務(使用來自自簽名根CA的簽名證書),迄今爲止都非常好。該服務用於企業對企業的溝通,因此證書似乎是最好的解決方案。WCF傳輸安全與peertrust和自簽名客戶端證書

(我使用的是WS此刻結合但那只是因爲所有綁定方法支持發展的目的(據我所知)與客戶端證書的傳輸層安全)。

一些相關的配置位服務:

<bindings> 
    <wsHttpBinding> 
    <binding name="wsHttpBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Certificate"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<!-- snip --> 

<serviceCredentials> 
    <clientCertificate> 
    <authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" /> 
    </clientCertificate> 
</serviceCredentials> 

當我在客戶端使用自簽名的證書是在運行失敗的WCF服務的用戶的「信任的人」商店。當我使用由我自己的根CA簽名的證書時,即使它不在「可信人員」存儲中,它也能正常工作。

我期待着我能夠使用自簽名證書,將它們存儲在「可信賴的人」存儲中,事情就會起作用。但似乎有一些額外的驗證正在進行,那裏有我失蹤的東西?有沒有更好的辦法?

回答

0

對,因此,傳輸安全和證書驗證在WCF無法控制的較低級別處理。因此,所有那些使用自定義驗證程序的奇特事物都不適用於傳輸安全性,而僅僅是消息安全性。 要在僅使用傳輸安全性的同時限制客戶端訪問,您需要設置CTL(證書信任列表)。以下網站應該給你一些指導。

http://www.leastprivilege.com/CertificateBasedAuthenticationAndWCFTransportSecurity.aspx http://viisual.net/configuration/IIS7-CTLs.htm

0

我同樣的問題掙扎其中,即使它是不是在「受信任人」存儲,儘管「PeerTrust」的驗證方式我自簽署客戶端證書將被驗證。我終於能夠限制服務通過使用以下服務行爲接受特定的客戶端證書:被要求指向正確的商店

<behaviors> 
    <serviceBehaviors> 
     <behavior ...> 
     ... 
     <serviceCredentials> 
      <clientCertificate> 
       <authentication certificateValidationMode="PeerTrust" 
           revocationMode="NoCheck" 
           trustedStoreLocation="LocalMachine" /> 
       <certificate findValue="NameOfClientCertificate" 
          x509FindType="FindBySubjectName" 
          storeLocation="LocalMachine" 
          storeName="TrustedPeople" /> 
      </clientCertificate> 
     </serviceCredentials> 
     ... 
     </behavior> 
     ... 

兩個認證要素和證書元素,在這case「LocalMachine」。

相關問題