【发布时间】:2014-11-17 10:03:19
【问题描述】:
在我们的开发阶段,我们创建了一个自签名证书,这意味着我有.cer 和.pfx 文件。当我们尝试调用 API 时,是否可以使用任何方法将上述文件嵌入 HTTPS 请求中,以便不是每个客户端都将证书安装到本地受信任的证书存储中。
这可能吗?我发现了一些 API,看起来我们可以这样做,但就是无法成功:
try
{
var secure = new SecureString();
foreach (char s in "password")
{
secure.AppendChar(s);
}
var handler = new WebRequestHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.UseProxy = false;
var certificate = new X509Certificate2(@"C:\httpstest2.pfx", secure);
handler.ClientCertificates.Add(certificate);
using (var httpClient = new HttpClient(handler))
{
httpClient.BaseAddress = new Uri("https://www.abc.com");
var foo = httpClient.GetStringAsync("api/value").Result;
Console.WriteLine(foo);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
- 是否需要使用
X509Certificate而不是X509Certificate2? - 如果我们从第三方公司购买真正的证书,我们是否可以不关心证书问题只通过验证异常?
【问题讨论】:
标签: c# security ssl https dotnet-httpclient