【发布时间】:2014-12-23 15:46:40
【问题描述】:
我正在开发的网站的一项功能是能够使用客户端证书和 TLS 将数据发布到远程服务器。
我已获得 p12 客户端证书,并将其安装/添加到系统中。证书在代码中的使用如下,(但似乎也只有安装到系统才能工作):
using (var client = new CertificateWebClient("~/ccert.p12"))
{
client.UploadFile(endpoint, filepath);
}
public class CertificateWebClient : WebClient
{
private readonly string _certificateUri;
public CertificateWebClient(string certificateUri)
{
_certificateUri = certificateUri;
}
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var clientCertificate = new X509Certificate(HostingEnvironment.MapPath(_certificateUri));
request.ClientCertificates.Add(clientCertificate);
return request;
}
}
在本地调试应用程序时,我可以选择允许使用证书:
在服务器上安装证书后,我设法在IIS之外运行了一个小测试程序,它可以在没有任何提示的情况下使用证书。
当在 IIS 的应用程序池下运行时,我不知道如何让网站使用证书。
到目前为止,我发现的一切都是关于添加绑定,以便证书可用于连接到应用程序的客户端,而不是使用客户端证书连接到其他服务器。
如果有任何区别,这是针对 Server 2008 R2 上的 IIS7。
【问题讨论】:
标签: c# asp.net ssl iis-7 windows-server-2008-r2