Я написал небольшое консольное приложение для 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.
Насколько я понимаю, сертификат клиента используется только для аутентификации, а не для шифрования, верно? Так,
Зачем нам нужен сертификат для установки? Почему моя программа не может просто взять файл .cer из местоположения и отправить его с запросом? А также,
Опять же, более конкретно, зачем нам установлен сертификат .pfx? Почему .cer не справляется с этой задачей?