首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >asp.net,使用服务器证书生成httpwebrequest C#

asp.net,使用服务器证书生成httpwebrequest C#
EN

Stack Overflow用户
提问于 2012-12-13 14:44:10
回答 1查看 823关注 0票数 2

抱歉,这是我的第一篇文章,我会尽量做到描述性的…

我有一个问题,转换一个HTTPWebRequest,以访问HTTPS网站,需要一个证书。在我的本地开发机器上,我可以使用我的CAC卡上的客户端证书,使用CAC卡读卡器来创建对站点的web请求。当我不得不将此代码推送到我们的开发/生产服务器以访问此站点时,我的问题就出现了。当我在服务器上时,我无法读取我的CAC卡,但是我有一个服务器证书可以使用,它在我们的IIS 6.0上。

您可以在服务器上获取客户端的CAC卡证书吗?有可以看的商店吗?或者,有没有服务器商店可以查看?

我不知道使用此服务器证书的步骤,我是否必须对其进行编码或使用IIS服务器管理器来启用它。这是我在本地开发机器上运行的代码。我添加了要在开发服务器上测试的ServerCertficateValidationCallback。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   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卡中的用户客户端证书。我有困难把所有这些放在一起,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-07-22 21:07:04

您的服务器必须信任您的(CAC)证书的根ca (颁发者)。将ca根证书添加到服务器的windows证书存储区的受信任的根证书颁发机构部分,然后重新启动iis。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13862222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文