WCF:无法通过通用名称查找证书,但按序列号查找

时间:2014-04-23 07:44:49

标签: .net wcf security certificate

我正在尝试加载证书以保护我的WCF服务。通过使用证书的序列号,它可以很好地工作。这意味着证书可以访问IIS进程并可以使用。

但在最终解决方案中,我需要使用通用名称来查找证书。这就是出现问题的地方。找不到证书。每次我从序列号更改为公共名称时,我都会收到InvalidOperationException,表示搜索条件无法找到证书。

<serviceCredentials>            
        <serviceCertificate findValue="‎CN=*.mycompany.net, O=MyCompany Inc, L=MyCity, S=Nordrhein-Westfalen, C=DE" x509FindType="FindBySubjectDistinguishedName" storeLocation="LocalMachine" storeName="My" />
</serviceCredentials>

与序列号版本相比,我改变的唯一内容是findValue和x509FindType。我检查了两次。所以通用名称应该是正确的。

我错过了什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试将findValue设置为*.mycompany.net

请注意,当您向商店添加另一个具有相同名称的证书时(第一个证书过期后),使用DN作为查找值可能会出现问题。然后它会找到两个,不知道要使用什么证书。

即使使用序列号也不能保证证书的唯一性,因为另一个CA可能会颁发具有相同序列号的证书。只有发行人的DN和序列号的组合应该是唯一的,但是在这个世界上谁可以保证:)

安全的方法是使用指纹。我知道即使在SHA1中也可能存在碰撞,但机会非常低。但是,使用指纹不是非常用户/管理员友好,因为你不知道从一开始就知道正在使用什么证书。