日期:2014-05-18  浏览次数:21070 次

小妹请教WinFrom通过Https访问网站
操作系统Win7旗舰版,IIS7

我创建了一个自签名的证书,然后创建了一个网站。配置好了SSL环境。

导出了一个公钥的cer文件。

这个网站通过https访问,这个网站很简单,代码如下。

我想用一个WinFrom的程序来访问这个网站。我WinFrom里应该如何写啊!

WinFrom里我仿了很多例子,但是都不成功!代码贴出如下。请各位前辈指正。

应该如何改正。

Default.aspx
C# code

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SSLWeb
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string user_name=Request.QueryString["user_name"];
            string password = Request.QueryString["password"];

            if (user_name == "admin" && password == "admin")
            {
                Response.Write("OK");
            }
            else
            {
                Response.Write("Error");
            }
        }
    }
}



WinFrom窗体代码
C# code

private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://192.168.0.62/Default.aspx");

                 ServicePointManager.CertificatePolicy   =   new   MyPolicy1(); 

            //创建证书文件
                X509Certificate objx509 = new X509Certificate("D:\\zhengshu\\tom_test.cer");

            //添加到请求里
            request.ClientCertificates.Add(objx509);

            //User-AgentHTTP标头的值
            request.UserAgent = "Client Cert Sample";
            request.Method = "POST";

            //我还想Post两个数据过去,同样不知道怎么处理。user_name和password
            //读返回的流
            StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());
             MessageBox.Show(reader.ReadToEnd());


             }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
public   class   MyPolicy1   :   ICertificatePolicy 
    { 
        //这个方法应该是在client和server已经进行了初步验证之后才调用的。 
        //不能实现我的要求。 
        public   bool   CheckValidationResult(ServicePoint   srvPoint,   X509Certificate   certificate,   WebRequest   request,   int   certificateProblem) 
        { 
                Console.WriteLine( "now   CheckValidationResult....... "); 
                //Return   True   to   force   the   certificate   to   be   accepted. 
                return   true; 
        }   //   end   CheckValidationResult 
    }   //   class   MyPolicy 




------解决方案--------------------
...
直接连那个网站也是行的!
你这样你的证书有问题的!
------解决方案--------------------
检查证书