Использовать сертификат X509 без пароля - PullRequest
0 голосов
/ 29 марта 2011

У меня есть сертификат, который мне нужно использовать для доступа к веб-сервису. Проблема в том, что всякий раз, когда я пытаюсь использовать сертификат X509, он запрашивает парольную фразу (PIN). Есть ли способ предоставить парольную фразу напрямую, без того, чтобы она каждый раз появлялась в одном и том же окне?

I hate this window

В сертификате используется ключ, изготовленный Oberthur Technologies, если он поможет. Вот код, который я использую для получения сертификата:

X509Store store = new X509Store("MY",StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;

if(collection.Count != 0)
    userCert = collection[0]; // everything's ok up to here

А вот где я использую сертификат:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
req.ClientCertificates.Add(userCert); // add the certificate I just got
// ...
WebResponse ret = req.GetResponse(); // here's where it asks me for my passphrase

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Закрытый ключ сертификата хранится в токене Oberthur. Он заставляет пользователя вводить ПИН-код для получения доступа к сертификатам закрытого ключа. Это сделано специально и не может быть отменено.

0 голосов
/ 27 апреля 2011

Я ищу способ сделать это с помощью управляемого кода, но еще не нашел его.В прошлом я только что вызывал функцию CAPI CryptSetProvParam с опцией PP_SIGNATURE_PIN и PIN-кодом в качестве данных.Это не позволяет CSP запрашивать у пользователя PIN-код.Системной службе довольно сложно ввести этот ПИН-код:)

Итак, вам нужно будет сделать это с помощью CryptSetProvParam.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...