HttpWebRequest使用SSL串連的時候,處理伺服器憑證不安全的方法

來源:互聯網
上載者:User

ServicePointManager.ServerCertificateValidationCallback 屬性
ms-help://MS.MSDNQTR.v90.chs/fxref_system/html/dcd4157d-dba4-4b60-164a-9e433a045d3c.htm

RemoteCertificateValidationCallback 委託
ms-help://MS.MSDNQTR.v90.chs/fxref_system/html/b3a0c706-1033-a543-01ca-23d09fcc121a.htm

WebRequest and SSL (The underlying connection was closed. Could not establish trust relationship with remote server.)
http://weblogs.asp.net/wim/archive/2004/04/02/106281.aspx

WinForm 調 SSL VPN WebService
http://www.cnblogs.com/zhongzf/archive/2006/10/27/386902.html

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.IO;
using System.Net;
using System.Collections;
using System.Threading;

using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

namespace GetCWData {
  public partial class Form1 : Form {

    CookieContainer cc;

    public Form1() {
      InitializeComponent();

      BeginGetData();
    }

    private void BeginGetData() {
      this.cc = new CookieContainer();

      this.txtUsername.Text = GetCWData.Properties.Settings.Default.Username;
      this.txtPassword.Text = GetCWData.Properties.Settings.Default.Password;
      string url = GetCWData.Properties.Settings.Default.BaseURL + GetCWData.Properties.Settings.Default.LoginPage;

      //ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
      ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
      request.Method = "POST";
      request.ContentType = "application/x-www-form-urlencoded";
      request.ContentLength = 0;
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
      request.CookieContainer = this.cc;

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

      Stream stream = response.GetResponseStream();
      StreamReader reader = new StreamReader(stream, Encoding.UTF8);
      string result = reader.ReadToEnd();

      this.txtHTML.Text = result;
    }

    //internal class AcceptAllCertificatePolicy : ICertificatePolicy {
    //  public AcceptAllCertificatePolicy() {
    //  }

    //  public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb) {
    //    // Always accept
    //    return true;
    //  }
    //}

    public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) {
      //if (sslPolicyErrors == SslPolicyErrors.None) {
      //  return true;
      //}

      //Console.WriteLine("Certificate error: {0}", sslPolicyErrors);

      //// Do not allow this client to communicate with unauthenticated servers.
      //return false;

      return true;
    }

  }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.