c#中https通讯如何添加证书
c#如何在https在通讯中需要添加证书密码
public static class HTTPS
{
// byte[] certificate = Properties.Resources.client1;
//2.定义方法:
private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
//为了通过证书验证,总是返回true
return true;
}
public static int HttpRequest(string GetOrPost, string Url, string RequestInfo, ref string ResponseInfo, int TimeOutMs)
{
try
{
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(RemoteCertificateValidate);
// CookieContainer CookieContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
X509Certificate2 cer = new X509Certificate2(@"./cl1.p12", "123");
X509Store store = new X509Store(StoreName.My,StoreLocation.LocalMachine);
store.Open(OpenFlags.MaxAllowed);
store.Remove(cer);
store.Add(cer);
store.Close();
// request.ProtocolVersion = HttpVersion.Version11;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
//ServicePointManager.Expect100Continue = false;
request.ClientCertificates.Add(cer);
request.Method = GetOrPost;
request.KeepAlive = false;
// request.CookieContainer = CookieContainer;
request.AllowAutoRedirect = false;
request.Timeout = TimeOutMs;
// request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
int RequestLength = Encoding.UTF8.GetByteCount(RequestInfo);
request.ContentLength = RequestLength;
//3.在WebRequest请求之前调用:
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
if (GetOrPost == "POST")
{
Stream RequestStream = request.GetRequestStream();
RequestStream.Write(Encoding.UTF8.GetBytes(RequestInfo), 0, RequestLength);
RequestStream.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream ResponseStream = response.GetResponseStream();
StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.UTF8);
ResponseInfo = StreamReader.ReadToEnd();
StreamReader.Close();
response.Close();
return 0;
}
catch (Exception ex)
{
ResponseInfo = "HTTP通讯异常:" + ex.Message;
return -1;
}
}
}
以上代码写的很乱,包含了许多不用的设置,仅供参考。
作者:_蓝染_
来源链接:https://blog.csdn.net/c1149884598/article/details/86494735