Клиент сертифицирует без использования хранилища ключей

StackOverflow https://stackoverflow.com/questions/473494

Вопрос

Я пытаюсь выяснить, есть ли способ, чтобы клиент .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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top