Как использовать текущую дату и время для значения FindByTimeValid в конфигурации WCF ServiceCertificate - PullRequest
0 голосов
/ 20 октября 2010

Как использовать текущую дату и время в качестве значения атрибута findValue в конфигурации ServiceCertificate при использовании «FindByTimeValid» для x509FindType? Использование DateTime.Now, как показано ниже, явно не работает, но не работает и «2010-10-20 14: 35: 28Z». У меня есть два сертификата на сервере с такими же деталями, поскольку срок действия одного из них истек, поэтому я использую это значение типа поиска.

Например:

<serviceCredentials>
        <serviceCertificate findValue="DateTime.Now" x509FindType="FindByTimeValid" storeLocation="LocalMachine" storeName="My"/>
</serviceCredentials>

Редактировать: я исправил это, удалив устаревший сертификат, но мне все еще интересно, возможно ли это.

Спасибо

Keith

1 Ответ

0 голосов
/ 17 ноября 2010

Поскольку никто не интересуется этим вопросом (2 просмотра в месяц, и я думаю, что по крайней мере один из них был мной), я решил использовать Reflector, взглянуть на процесс и найти следующее.

В методе X509Certificate2Collection.FindCertInStore(SafeCertStoreHandle safeSourceStoreHandle, X509FindType findType, object findValue, bool validOnly) сборки System.ServiceModel у нас есть следующий код

case X509FindType.FindByTimeValid:
if (findValue.GetType() != typeof(DateTime))
{
    throw new CryptographicException(SR.GetString("Cryptography_X509_InvalidFindValue"));
}

Как видно из подписи, findValue входит как объект, который, я думаю, находится вВключите загрузчик парсера конфигурации в виде строки, что означает, что это никогда не сработает.

Таким образом, ответ таков: вы не можете сделать это через конфигурацию xml, но можете, если вы делаете это программно.

...