我们运行使用(相互)证书进行加密和签名的WCF服务。到目前为止一切正常。
问题在于:几周后我们需要更换服务证书。 我们希望彼此独立地在服务器和客户端上实现更改,因此不需要密切协调活动。 以下是我们理想的步骤:
我的问题在于第2步。我找不到关于如何配置服务的任何参考,因此它能够使用两个证书并根据请求中的参数选择正确的证书(例如SubjectKeyIdentifier)。 看来我特意要告诉WCF使用哪个服务证书。 下面是我们服务器配置的相关片段(我们使用自定义绑定,但我想这不重要)。 在这种情况下,我们根据主题名称识别证书。
<serviceBehaviors>
<behavior name="SecurityBehavior">
...
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</clientCertificate>
<serviceCertificate findValue="MyCertName" x509FindType="FindBySubjectName"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
问题:是否有可能摆脱具体的定义(并且仍有服务工作),以便服务动态选择正确的证书?这会怎么样?
非常感谢您的投入!
答案 0 :(得分:0)
我相信你只能拥有一张服务证书。如果您无法同时在客户端和服务器之间进行更改,请尝试设置2个差异服务,一个使用旧证书,另一个使用新服务。然后逐步迁移客户端以使用新服务url / cert。如果您无法更改客户端URL但只是证书,您可以构建一个服务器代理,该代理知道根据证书将请求路由到rigth服务器,但请尽量避免使用。