如何使用当前日期&对于x509FindType使用“FindByTimeValid”时,time为ServiceCertificate配置中findValue属性的值?使用DateTime.Now如下所示不起作用,但“2010-10-20 14:35:28Z”也不起作用。我在服务器上有两个证书具有相同的详细信息,因为其中一个证书已过期,这就是我使用此查找类型值的原因。
例如:
<serviceCredentials>
<serviceCertificate findValue="DateTime.Now" x509FindType="FindByTimeValid" storeLocation="LocalMachine" storeName="My"/>
</serviceCredentials>
编辑:我通过删除过期的证书来修复此问题,但如果可能的话,我仍然很好奇。
由于
基思
答案 0 :(得分:0)
由于没有人似乎对这个问题略感兴趣(一个月内有两个观点,我认为其中至少有一个是我)我决定打破Reflector并查看过程并找到以下内容。 / p>
在System.ServiceModel程序集的X509Certificate2Collection.FindCertInStore(SafeCertStoreHandle safeSourceStoreHandle, X509FindType findType, object findValue, bool validOnly)
方法中,我们有以下代码
case X509FindType.FindByTimeValid:
if (findValue.GetType() != typeof(DateTime))
{
throw new CryptographicException(SR.GetString("Cryptography_X509_InvalidFindValue"));
}
正如您从签名中看到的那样,findValue作为一个对象进入,我认为该对象又由配置解析器作为字符串加载,这意味着它永远不会起作用。
所以答案是你不能通过xml配置执行此操作,但如果以编程方式执行此操作,则可以。