C#客户端模拟Https请求,证书验证不通过报错未能为 SSL/TLS 安全通道建立信任关系

悲伤的肉包子 2012-07-05 11:15:58
做了一个C# form客户端,从本地读取cer证书,往服务器页面发送Https的请求,但是证书验证老是报错System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系,网上有无视验证的方法,就是在客户端重写验证函数,让它一直返回true,但俺就想执行服务器对证书进行验证,因为要统计一个Https请求的时间(包括证书验证),所以想问问有没有其它的好方法,小菜鸟求助。
 //HTTPS请求
public static bool GetHttpsResponse(string url, string method, string content, string cerPath, out string response, out string errorMsg)
{
errorMsg = "";
response = "";

//方法返回的结果,当调用接口成功后返回
bool result = true;

//判断是参数是否合法
if (string.IsNullOrEmpty(url) == true)
{
result = false;
errorMsg = "url 不能为空";
}
//发送的内容不能为空
if (string.IsNullOrEmpty(content) == true)
{
result = false;
errorMsg = "content 不能为空";
}

if (File.Exists(cerPath) == false)
{
result = false;
errorMsg = "“" + cerPath + "” 指定的证书不存在";
}

try
{

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);


//User-AgentHTTP标头的值
req.UserAgent = "Client Cert Sample";
req.Method = method.ToString();
req.Timeout = 1000 * 10;//超时间10秒;
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";


//创建证书文件
X509Certificate objx509 = new X509Certificate(cerPath);

//添加证书到请求里
req.ClientCertificates.Add(objx509);

byte[] contentBytes = Encoding.GetEncoding("UTF-8").GetBytes(content);

req.ContentLength = contentBytes.Length;

Stream reqStream = req.GetRequestStream();
reqStream.Write(contentBytes, 0, contentBytes.Length); //添加参数到请求

reqStream.Close();

HttpWebResponse rep = (HttpWebResponse)req.GetResponse();

StreamReader smr = new StreamReader(rep.GetResponseStream());

response = smr.ReadToEnd();

}
catch (Exception ex)
{
errorMsg = ex.Message;
result = false;
}
return result;
}
...全文
777 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
harveyXXX 2012-08-28
  • 打赏
  • 举报
回复

//User-AgentHTTP标头的值
req.UserAgent = "Client Cert Sample";
req.Method = method.ToString();
req.Timeout = 1000 * 10;//超时间10秒;
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";
之后添加
req.ProtocolVersion=HttpVersion.Version10;
试一下。
悲伤的肉包子 2012-07-05
  • 打赏
  • 举报
回复
没有人给点指点嘛
悲伤的肉包子 2012-07-05
  • 打赏
  • 举报
回复
求链接

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧