我正在运行WCF服务,该服务应该只接受能够通过ssl客户端证书对自己进行身份验证的客户端。作为安全模式,我正在使用传输安全性。要求身份验证过程由PeerTrust完成。遗憾的是,传输安全性与PeerTrust不兼容 - 这意味着ChainTrust始终是首选方法。在这种情况下,每个客户端都是可信的,其中包含由CA签名的证书,该证书存储在我的“可信CA Store”中。这不是我需要的行为。
我试图通过自定义的certificatevalidator来解决这个问题。这似乎有效。我得到了证书的回调,我可以验证我是否信任证书。
我的问题是,我不确定将证书提供给自定义验证器中的“验证”方法时的状态。 SSL通常通过提供客户端证书来检查客户端是否具有相应的私钥。换句话说,我的问题是,我不确定,如果我正在与之交谈的客户,我认为他是客户。
<serviceBehaviour>
<behavior name="sslbehaviour">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentSessions="2000000000" maxConcurrentCalls="2000000000" maxConcurrentInstances="2000000000"/>
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="Custom" customCertificateValidatorType="Package.MyX509CertificateValidator, server"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
欢迎获得PeerTrust客户端验证的其他方法。
亲切的问候, 迈克尔