Я пытаюсь поговорить с веб-службой REST, для которой требуются сертификаты для совершения вызова. Я получил два файла от моего клиента - *.pem
и файл *.key
.Борьба с вызовом REST и сертификатами
Используя эти два файла, я могу сделать вызов на этот веб-службы в командной строке с помощью curl
:
curl.exe -k -v "MyUrl" --cert mycert.pem --key mycertkey.key
Это работает. Но я хотел бы использовать Fiddler и, в конечном счете, свой собственный код C#, чтобы сделать этот звонок, но как?
В Скрипач, я читаю о том, чтобы предоставить сертификат в качестве ClientCertificate.cer
файла в определенном каталоге ..... но у меня есть .pem
и .key
файл - как те, «перевести» в *.cer
файл?
И как я могу использовать эти *.pem
и *.key
файлы в моем C код # чтобы сделать вызов этой веб-службы (с помощью RestSharp или просто обычный WebRequest
)?
Update: после ответа Дрю Burchett, я импортировал мой .pem
файл в хранилище сертификатов на моей машине, а затем экспортировал его в .cer
файл («DER-закодированные, двоичный») и поместил его в Фиддлерз папка. Когда attemping вызова службы REST, я все еще получаю эту ошибку от Скрипач:
[Fiddler] The connection to '......' failed.
System.Security.SecurityException Failed to negotiate HTTPS connection with server.fiddler.network.https; HTTPS handshake to (url) failed.
System.Security.Authentication.AuthenticationException Error with SSPI call, see internal exception; the format of the received message was unexpected or erroneous
достаточно смешной, последний абзац (Абзац System.Security.Authentication.AuthenticationException
) появляется на немецком языке в моей системе, а остальное на английском языке. ... нечетным ......
Update # 2:
Попытка это в C# код, используя WebRequest
с https://
префикс и сертификат, установленный в хранилище сертификатов (мои собственные сертификаты, доверенных корневых сертификатов) с ошибкой:
System.Net.WebException was caught
HResult=-2146233079
Message=The request was aborted: no secure SSL/TLS channel could be established.
Любые идеи?
Спасибо, я выполнил ваши шаги, получил файл '.cer', сохранил его как' ClientCertificate.cer' в папке Fiddler - и ошибка все тот же .... [Fiddler] Соединение с '... ...' не смогли. System.Security.SecurityException Не удалось согласовать соединение HTTPS с server.fiddler.network.https; Подтверждение HTTPS на (url) не удалось. System.Security.Authentication.AuthenticationException Ошибка при вызове SSPI, см. Внутреннее исключение; формат полученного сообщения был неожиданным или ошибочным –
Я не знаком с использованием Fiddler, но когда я загружал свои собственные службы WCF с сертификатами и получил ошибку SSPI, это почти всегда означало, что ключ RSA либо не был связан с свойства сертификата или не существует. Файл .cer не будет содержать ключ RSA, так что это может быть проблемой. Я попытался импортировать файл .pem в папку доверенного корневого центра сертификации и посмотреть, устраняет ли это проблему. –
Я пробовал ваш отзыв - к сожалению, он ничего не меняет :-(Ошибка в Fiddler по-прежнему такая же .... –