【发布时间】:2015-02-18 08:15:57
【问题描述】:
我正在尝试与需要证书才能进行调用的 REST Web 服务通信。我从我的客户那里得到了两个文件——一个*.pem 和一个*.key 文件。
使用这两个文件,我可以在命令行上使用curl 调用该网络服务:
curl.exe -k -v "MyUrl" --cert mycert.pem --key mycertkey.key
这行得通。但我想使用 Fiddler 并最终使用我自己的 C# 代码来进行调用 - 但是如何?
在 Fiddler 中,我正在阅读有关必须在特定目录中以 ClientCertificate.cer 文件的形式提供证书.....但我有一个 .pem 和一个 .key文件 - 如何将这些“翻译”成*.cer 文件?
我如何在自己的 C# 代码 中使用这些 *.pem 和 *.key 文件来调用该 Web 服务(使用 RestSharp 或只是一个普通的 WebRequest)?
更新:按照 Drew Burchett 的回答,我将我的 .pem 文件导入我机器上的证书存储区,然后将其导出到 .cer 文件(“DER 编码, binary") 并将其放在 Fiddler 的文件夹中。尝试调用 REST 服务时,我仍然从 Fiddler 收到此错误:
[Fiddler] 与“......”的连接失败。
System.Security.SecurityException 无法与 server.fiddler.network.https 协商 HTTPS 连接;与 (url) 的 HTTPS 握手失败。
System.Security.Authentication.AuthenticationException SSPI 调用出错,请参阅内部异常;收到的消息的格式是意外或错误的
有趣的是,最后一段(System.Security.Authentication.AuthenticationException 段)在我的系统上显示为德语,而其余的则为英语......奇怪......
更新 #2:
在 C# 代码中使用带有 https:// 前缀的 WebRequest 和安装在证书存储中的证书(我自己的证书、受信任的根证书)尝试此操作失败并出现错误:
System.Net.WebException 被捕获
HResult=-2146233079
Message=请求中止:无法建立安全的 SSL/TLS 通道。
有什么想法吗?
【问题讨论】:
标签: c# rest curl fiddler restsharp