2012-01-18 1 views
1

У меня есть приложение, которое использует сертификат, чтобы поговорить с веб-сервисом на сервере, который обеспечивает SSL.Поиск сертификата с .Net X509Store? Что-нибудь более поддерживаемое/управляемое, чем FindBySerialNumber?

Сейчас мы используем x509Store.Certificates.Find(X509FindType.FindBySerialNumber, certSerialNumber, true);.

Это всегда дает нам правильное решение, но оно требует, чтобы мы поддерживали серийный номер каждой рабочей станции необходимых нам сертификатов.

Учитывая, что мы должны использовать сертификат на рабочую станцию, есть ли что-то, что имеет смысл, или это сериал, что каждый делает? Я считаю, что серийный номер используется, потому что он всегда работает.

ответ

2

Это действительно зависит от того, что вы ищете. Если вы хотите всегда однозначно идентифицировать конкретный сертификат и не возражать против его изменения на одну машину, то единственными параметрами являются FindByThumbprint или FindBySerialNumber.

Если вы можете управлять другим атрибутом, вы можете использовать его вместо этого. Например, FindByIssuerDistinguishedName будет работать, если единственным сертификатом от конкретного эмитента является тот, который вы ищете. Аналогичным образом можно использовать FindByTemplateName (и несколько других), если у вас есть более ограниченный контроль над тем, какой сертификат используется. (т. е. вы можете определить уникальный атрибут для поиска).