Клиент сертифицирует без использования хранилища ключей
-
19-08-2019 - |
Вопрос
Я пытаюсь выяснить, есть ли способ, чтобы клиент .NET использовал сертификат клиента без какого-либо участия хранилища ключей Windows.
У меня есть такой фрагмент кода:
test1.Service s = new test1.Service();
X509Certificate c = X509Certificate.CreateFromCertFile(@"C:\test.pem");
s.ClientCertificates.Add(c);
int result = s.TestMethod();
Однако это работает, только если у меня есть сертификат, указанный в " test.pem " установлен в моем магазине сертификатов. Я предполагаю, что это потому, что ключ необходим для переговоров. Если у меня нет сертификата / ключа в магазине, сертификат не отправляется с запросом.
Я хочу предоставить сертификат и закрытый ключ из файла или файлов и никоим образом не использовать хранилище сертификатов Windows. Р>
Есть ли способ сделать это?
Решение
Я собираюсь опубликовать ответ на собственное сообщение, но оставлю его открытым, чтобы посмотреть, могут ли другие решить его по-другому.
По сути, я собираюсь Если у вас есть файл PKCS12 (с ключом и сертификатом в нем), вы можете использовать класс X509Certificate2 для загрузки и использования этого файла, и он не будет запрашивать хранилище ключей. Р>
Я не смог найти способ сделать это с помощью плоских ключей PEM и файлов сертификатов (например, то, что вам нужно для Python).