抱歉,这是我的第一篇文章,我会尽量做到描述性的…
我有一个问题,转换一个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;
}
是否有人熟悉部署过程,以便使用受网站信任的服务器证书,im向发送请求?我希望从我们的站点(我们的站点需要CAC身份验证)访问此站点的所有用户都使用服务器证书。除非有人有更好的想法来使用他们的CAC卡中的用户客户端证书。我有困难把所有这些放在一起,任何帮助都将不胜感激。
发布于 2013-07-22 21:07:04
您的服务器必须信任您的(CAC)证书的根ca (颁发者)。将ca根证书添加到服务器的windows证书存储区的受信任的根证书颁发机构部分,然后重新启动iis。
https://stackoverflow.com/questions/13862222
复制相似问题