C# IIS访问一个带证书的网站,提示SSL server requires client certificate;ErrorCode: 901

鲫瓜子 2014-07-06 05:51:34
HttpWebRequest 方式访问一个带证书的网站,在VS里本地调试可以显示出要获取的内容,但是部署到了IIS,访问的时候,就显示了SSL server requires client certificate;本地就可以通过,不知道怎么解决了。下面是我的访问代码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
X509Certificate objx509 = new X509Certificate(Server.MapPath("test.cer")); //添加证书到请求里
request.ClientCertificates.Add(objx509);
request.Method = "GET";
System.Net.ServicePointManager.Expect100Continue = false;
request.Referer = referer;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
//request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)";
request.KeepAlive = false;
//request.ProtocolVersion = HttpVersion.Version10;
request.Headers.Set("Cookie", runcookie);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
response.Close();
return result;

我已经把证书放到了程序的根目录了
Server.MapPath("test.cer")

这一句我也添加过,不好使,
request.ProtocolVersion = HttpVersion.Version10;

这个我也试过,也不起作用
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)";

另外我也用了跳过证书验证的方法,也不行

private static bool RemoteCertificateValidate(object sender, X509Certificate cert,X509Chain chain, SslPolicyErrors error)
{
return true;
}

恳求朋友的帮助!
QQ:594192769
...全文
9849 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengjunliguolimin 2015-03-17
  • 打赏
  • 举报
回复
X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);//线上发布修改成这样即可
jiao006 2015-03-13
  • 打赏
  • 举报
回复
我也遇到这个问题了,一直没解决,跪求楼主说下如何解决,十分感谢!! 在VS和本地IIS中都能正常运行,但是部署到阿里云的服务器上,就报证书的问题。 返回信息是“拒绝访问。”

X509Certificate2 cer = new X509Certificate2(certPath, password, X509KeyStorageFlags.MachineKeySet);
jiape 2015-01-06
  • 打赏
  • 举报
回复
我也遇到这个问题了,一直没解决,跪求楼主说下如何解决,十分感谢!!
wangnaisheng 2014-07-07
  • 打赏
  • 举报
回复
引用 6 楼 baobaobin123 的回复:
诚求帮助,IIS权限问题,如何通过IIS访问带证书的网站,顺利通过呢。
http://www.cnblogs.com/chnking/archive/2008/08/18/1270063.html 参考
鲫瓜子 2014-07-07
  • 打赏
  • 举报
回复
诚求帮助,IIS权限问题,如何通过IIS访问带证书的网站,顺利通过呢。
鲫瓜子 2014-07-07
  • 打赏
  • 举报
回复
引用 3 楼 findcaiyzh 的回复:
如果vs中调试可以.iis中不行的话,有可能是权限问题,试一试impersonation(http://support.microsoft.com/kb/306158) 另外,看看下面文章中的debug 段落,能不能发现你自己的原因 http://www.kerrywong.com/2006/12/01/using-x509-certificate-with-web-service-in-aspnet/
老兄,那个全英文的文章我真没看懂啊,不过说的好像是WebService, 我把证书已经导出来了,.cer格式的,放到了本地,加进了请求里,这一切看似是那么的正常,VS调试也通过,只要一通过IIS访问,就出现了服务器要求客户证书,这个拦截,IIS权限这块,怎么配置和修改呢
鲫瓜子 2014-07-07
  • 打赏
  • 举报
回复
引用 2 楼 wangnaisheng 的回复:
带证书的话,怎么你也得把你的网站加入可信任的站点吧,然后别人访问你的网站,怎么也得先导入你的证书吧。 SSL证书申请 IIS设置 配置 攻略 参考参考,能借鉴就好。
IIS服务需要访问带证书的网站,本地调试可以通过的,部署到IIS上访问的时候就会遇到问题,你说的是证书服务器
宝_爸 2014-07-07
  • 打赏
  • 举报
回复
如果vs中调试可以.iis中不行的话,有可能是权限问题,试一试impersonation(http://support.microsoft.com/kb/306158) 另外,看看下面文章中的debug 段落,能不能发现你自己的原因 http://www.kerrywong.com/2006/12/01/using-x509-certificate-with-web-service-in-aspnet/
DO_大龄码农 2014-07-07
  • 打赏
  • 举报
回复
双向认证的问题,
鲫瓜子 2014-07-07
  • 打赏
  • 举报
回复
感谢大家的解答与帮助,问题已经解决,正在火速完成项目,今晚挑灯写博客!与大家分享结果!
鲫瓜子 2014-07-07
  • 打赏
  • 举报
回复
引用 7 楼 wangnaisheng 的回复:
[quote=引用 6 楼 baobaobin123 的回复:] 诚求帮助,IIS权限问题,如何通过IIS访问带证书的网站,顺利通过呢。
http://www.cnblogs.com/chnking/archive/2008/08/18/1270063.html 参考[/quote] 感谢分享链接,这个链接我已经看过了,这个是如何配置IIS服务器证书,而我不需要让我的网站是https类型的,是别人访问我的网站,我的网站在同构HttpWebRequest去访问别人的网站(证书验证),但是在IIS里,无法获得证书,报错,本地VS调试没问题,可以通过。
鲫瓜子 2014-07-07
  • 打赏
  • 举报
回复
引用 8 楼 yuwenge 的回复:
IIS没有读取证书的权限。
恳请进一步说一下,怎么才能赋予IIS读取证书的权限呢?
卧_槽 2014-07-07
  • 打赏
  • 举报
回复
IIS没有读取证书的权限。
wangnaisheng 2014-07-06
  • 打赏
  • 举报
回复
带证书的话,怎么你也得把你的网站加入可信任的站点吧,然后别人访问你的网站,怎么也得先导入你的证书吧。 SSL证书申请 IIS设置 配置 攻略 参考参考,能借鉴就好。
鲫瓜子 2014-07-06
  • 打赏
  • 举报
回复
今天大家都休息啊,看来只能等到明白了

111,077

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧