1.1和2.0下进行https请求的不同实现 错误页面:根据验证过程,远程证书无效

1.1和2.0下进行https请求的不同实现

今天做项目中进行https请求时遇到这样的调试错误,内部错误:未能为 SSL/TLS 安全通道建立信任关系。错误页面:根据验证过程,远程证书无效。经过分析,在浏览器中打开要进行一个安全确认。就是这个对话框引起的问题。在网上搜了一下一般的解决办法,但是搜的内容比较少,现在在这里总结一下。

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Net;

using System.IO;

using System.Text;

using System.Net.Security;

using System.Security.Authentication;

using System.Security.Cryptography.X509Certificates;

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        //for 1.1 在2.0下ServicePointManager.CertificatePolicy已经过时

        //ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();

        //for 2.0

        //ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://someurl");

        request.Method = "GET";

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Stream receiveStream = response.GetResponseStream();

        StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

        Page.Response.Write(readStream.ReadToEnd());

        response.Close();

        readStream.Close();

    }

    //for 2.0

    public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

    {   //   Always   accept   

        return true;

    }

    //for 1.1

    internal class AcceptAllCertificatePolicy : ICertificatePolicy

    {

        public AcceptAllCertificatePolicy()

        {

        }

        public bool CheckValidationResult(ServicePoint sPoint, System.Security.Cryptography.X509Certificates.X509Certificate cert, WebRequest wRequest, int certProb)

        {

            //   Always   accept  

            return true;

        }

    }

}

posted on 2006-11-06 16:19 david 阅读(1900) 评论(5)  编辑 收藏 所属分类: ASP.NET.NET Framework

#1楼 eason.cou [未注册用户]

你么能用!

能发个详细点的页面上来吗?

  回复  引用  查看    #2楼 david

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://someurl 换成你要请求的地址就可以了呀

  回复  引用  查看    #3楼 回复  引用  查看    #4楼 David Fan

@Davy_yan

framework版本

  回复  引用  查看    #5楼 回复  引用  查看  

posted @ 2010-08-15 14:49  rob_2010  阅读(1077)  评论(0)    收藏  举报