我正在尝试加载证书以保护我的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。我检查了两次。所以通用名称应该是正确的。
我错过了什么吗?
提前致谢。
答案 0 :(得分:0)
尝试将findValue设置为*.mycompany.net
。
请注意,当您向商店添加另一个具有相同名称的证书时(第一个证书过期后),使用DN作为查找值可能会出现问题。然后它会找到两个,不知道要使用什么证书。
即使使用序列号也不能保证证书的唯一性,因为另一个CA可能会颁发具有相同序列号的证书。只有发行人的DN和序列号的组合应该是唯一的,但是在这个世界上谁可以保证:)
安全的方法是使用指纹。我知道即使在SHA1中也可能存在碰撞,但机会非常低。但是,使用指纹不是非常用户/管理员友好,因为你不知道从一开始就知道正在使用什么证书。