转的 winform开发连接webservice中单向证书
http://hi.baidu.com/srxljl/blog/item/8849a6ef4304961efdfa3cd3.html
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;
}
}
}
如果是 webservice调用:
HttpsService.LoginService httpsls = new Addin.HostDemo.HttpsService.LoginService();
httpsls.ClientCertificates.Add(
X509Certificate.CreateFromCertFile(AppDomain.CurrentDomain.BaseDirectory + "CaresCA_ServerGrp_CA.cer"));
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(
(a, b, c, d) => { return true; }
);
httpsls.login("test1", "123456");