Почему нам нужно установить сертификат .pfx (в отличие от .cer) в Windows, прежде чем вы сможете совершать звонки с использованием сертификата клиента?

Я написал небольшое консольное приложение для HTTP-вызова сервера с использованием клиентского сертификата. Код, который я написал, читает файл .cer из указанного места, чтобы сделать запрос:

  X509Certificate Cert = X509Certificate.CreateFromCertFile("JohnDoe.cer");            
  HttpWebRequest Request = (HttpWebRequest)
  WebRequest.Create("https://10.135.12.166:4434");
  Request.ClientCertificates.Add(Cert);
  Request.UserAgent = "Client Cert Sample";
  Request.Method = "GET";
  HttpWebResponse Response = (HttpWebResponse) Request.GetResponse();

Однако этот код не работает, если сертификат не установлен в личной папке текущего пользователя в диспетчере сертификатов. В частности, он работает, только если у меня установлен сертификат .pfx, а не .cer.

Насколько я понимаю, сертификат клиента используется только для аутентификации, а не для шифрования, верно? Так,

  1. Зачем нам нужен сертификат для установки? Почему моя программа не может просто взять файл .cer из местоположения и отправить его с запросом? А также,

  2. Опять же, более конкретно, зачем нам установлен сертификат .pfx? Почему .cer не справляется с этой задачей?


person GrowinMan    schedule 11.08.2014    source источник


Ответы (1)


Файл .cer содержит сертификат. Сертификат содержит открытый ключ. Идентификация с помощью сертификатов включает в себя криптографическую операцию, чтобы показать, что вы владеете секретным частным ключом, совпадающим с открытым ключом в (открытом) сертификате. Этот закрытый ключ содержится в файле .pfx.

person Steffen Ullrich    schedule 12.08.2014
comment
включает в себя криптографическую операцию, чтобы показать, есть ли шанс, что вы могли бы немного подробнее рассказать об этом? Я придерживался мнения, что идентификация включает сопоставление .cer, который получает сервер, с одним из .cer, который он имеет с ним. - person GrowinMan; 12.08.2014
comment
Секретный частный ключ используется для создания цифровой подписи поверх данных подтверждения SSL, которая затем может быть проверена сервером с использованием открытого ключа, содержащегося в сертификате. См. Также security.stackexchange.com/ questions / 24577 / - person Steffen Ullrich; 12.08.2014