2011-03-28 2 views
0

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

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 

ответ

1

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

+0

+1 за информацию. К сожалению, это не то, что я хотел услышать. Это сделано Обертуром, или это стандартная особенность всех токенов (просят о штыре)? Я спрашиваю об этом, потому что я должен использовать это в приложении, которое вызывается с консоли другими. Если они должны входить в контакт каждый раз, когда приложение запускается, это было бы ужасно. – alex

+0

Это стандартная функция токена. Как правило, вы можете настроить программное обеспечение токена только для первого запроса, а затем разрешить x минут доступа к сертификату перед повторным запросом. Извините, но я не знаю деталей реализации Oberthur. –

0

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

Итак, вам нужно будет вывести CryptSetProvParam, чтобы сделать это.

Смежные вопросы