找不到符合条件的唯一证书

时间:2010-07-14 02:22:13

标签: x509certificate wif

尝试解析令牌时遇到以下错误:

Property name: 'certificateReference'
Error: 'ID1025: Cannot find a unique certificate that matches the criteria.
StoreName: 'My'
StoreLocation: 'LocalMachine'
X509FindType: 'FindByThumbprint'
FindValue: '‎41a8a59e537d4a00a8c4fa8dc2522388dbd13d27'

我的web.config中的部分是:

<serviceCertificate>`
    <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" />
</serviceCertificate>

我已经确认了IIS,MMC和Internet Explorer中存在的证书,并尝试将“查找”类型更改为主题,但无效。我还尝试将指纹设为大写,小写,有空格且没有空格。我还确认证书存在LocalMachine \ My,结果如下:

Matching certificate:
CN=kelly-pc

可以访问私钥的其他帐户和组包括:

NT AUTHORITY\SYSTEM
BUILTIN\Administrators
KELLY-PC\Kelly
BUILTIN\IIS_IUSRS

6 个答案:

答案 0 :(得分:23)

我有完全相同的问题。通过在Notepad ++(而非记事本)中复制我的web.config部分,我看到了一个不可见的字符:

<serviceCertificate>
        <certificateReference  x509FindType="FindByThumbprint" findValue="?e36df2f3e351a25adf8ffb6ad3619f10238f0317" />
</serviceCertificate>

删除此字符,它应该有效。

如果没有Notepad ++,您只需在指纹值前按退格键(尝试删除“char。

答案 1 :(得分:7)

首先,Oleg的“issuedTokenAuthentication”建议对我不起作用,因为我的应用程序是asp.net MVC。我假设asp.net MVC应用程序不支持此元素,但它可能在WCF服务配置中受支持。

在localhost和其他错误(如ID1024)上与此错误斗争了好几个小时后,我不得不撤消一些我通过以下建议做的事情,例如让Everyone读取%ALLUSERSPROFILE%\ Microsoft \ Crypto \ RSA \中的所有文件MachineKeys按照this博客(我在整个MachineKeys文件夹上授予读取权限,这不是一个好主意!)。通过这样做,所有授予私钥都停止通过MMC控制台工作!

我的解决方案是根据here

的说明创建一个新的自签名证书

然后,我将新创建的证书重新导入到正确的商店,并为运行Web应用程序的用户提供了对私钥的读取权限。我的问题是我之前使用的证书是自签名的,它一定是出了问题。

客户端绝对需要此部分:

<serviceCertificate>
   <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" />
</serviceCertificate>

在处理证书时,这也是一个非常好的建议,请记住:

如果您首先将证书导入个人商店进行开发,然后将其导入到机器商店进行部署,私钥将保留在个人商店位置,因此即使您已获得授权,也不会使用任何服务帐户PERMISSION。

最后,FindPrivateKey.exe工具非常便于找到实际的私钥文件并帮助解决问题,可以从here下载,并提供良好的说明here

我注意到当通过MMC控制台删除证书时,我必须从

手动删除私钥文件

C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys

如果从localMachine商店和

删除

C:\ Users [Username] \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ S-1-5-21-2106337540-114255811-1274951907-65121

如果从CurrentUser商店删除

答案 2 :(得分:3)

对我来说,这也是指纹前面一个看不见的角色。获取指纹的标准Microsoft指令是打开证书属性,复制十六进制编码字节的字符串,并删除其间的空格。我想这个复制过程会在字符串的开头添加一些不可见的字符。还需要删除这些字符或指纹不匹配。 当我发现能够按名称加载证书时,我知道拇指指纹一定有问题。

答案 3 :(得分:1)

您可能使用自行颁发的证书,并且还应添加行

<issuedTokenAuthentication allowUntrustedRsaIssuers="true" />

<serviceCertificate>,应与<certificateReference>一起使用。

答案 4 :(得分:0)

所以今天早上我的屏幕上出现了这个错误。我使用的是开发机器,所以我使用的是自签名(IIS)证书。安装Visual Studio 2015 RC后,IIS也进行了升级。原来这打破了链信任,因为根证书被删除或无效(IIS Express。

可能是显而易见的事情,但请确保所选证书仍然有效,包括链中的每一跳。

答案 5 :(得分:0)

在一台特定的服务器上,我必须将其添加到受信任的根证书颁发机构商店以及个人的代码以识别它。

在我的本地包装盒和其他服务器上,它仅在个人商店中正常工作。