抱歉,这是我的第一篇文章,我会尽量描述得尽可能...
我在转换 HTTPWebRequest 以访问需要证书的 HTTPS 网站时遇到问题。在我的本地开发机器上,我可以使用 CAC 读卡器使用我的 CAC 卡上的客户端证书来创建对站点的 Web 请求。当我必须将此代码推送到我们的开发/生产服务器以访问此站点时,我的问题就出现了。当我在服务器上时,我无法读取我的 CAC 卡,但我确实有一个我可以在 IIS 6.0 上使用的服务器证书。
能否在服务器上获取客户端的CAC卡证书?有什么店可以看吗?或者是否有服务器商店可供查看?
我不知道使用此服务器证书的步骤,我是否必须对此进行编码或使用我的 IIS 服务器管理器来启用它。这是我在本地开发机器上运行的代码。我添加了 ServerCertficateValidationCallback 以在开发服务器上进行测试。
protected void Page_Load(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.MaxServicePointIdleTime = 300000;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://url");
request.Accept = "text/xml, */*";
request.Method = "GET";
request.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-us");
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; .NET CLR 3.5.30729;)";
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
request.Credentials = CredentialCache.DefaultCredentials;
request.KeepAlive = false;
X509Certificate myCert = null;
X509Store store = new X509Store("My");
store.Open(OpenFlags.ReadOnly);
int i = 0;
foreach (X509Certificate2 m in store.Certificates)
{
if (i == 0)
myCert = m;
i++;
}
if (myCert != null)
{
request.ClientCertificates.Add(myCert);
}
//take the response and create the xml document to parse
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string str = reader.ReadToEnd();
...
}
public static bool ValidateServerCertificate(object sender, X509Certificate certificate,X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
//certificate is in here
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
sslPE = "SSLPolicyErros: " + sslPolicyErrors;
return false;
}
是否有人熟悉部署过程,以使用我向其发送请求的网站信任的服务器证书?我希望所有从我们站点访问该站点的用户(我们的站点需要 CAC 身份验证)使用服务器证书。除非有人更好地了解使用来自其 CAC 卡的用户客户端证书。我无法将所有这些放在一起,我们将不胜感激。
请您参考如下方法:
您的 (CAC) 证书的根 ca(颁发者)必须受到您的服务器的信任。将根 ca 证书添加到服务器的 windows 证书存储的受信任的根证书颁发机构部分,然后重新启动 iis。
