C#创建https请求并使用pfx证书
常规情况下创建Web请求,并获取请求数据的代码如下:
WebRequest req = WebRequest.Create(url);
req.Timeout = 15000;
WebResponse result = req.GetResponse();
Stream ReceiveStream = result.GetResponseStream();
如果需要在代码中加入证书,则需要使用HttpWebRequest对象进行请求,代码如下:
//添加验证证书的回调方法
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(strQueryURL);
X509Certificate cerCaiShang = new X509Certificate(System.Web.HttpContext.Current.Server.MapPath(setting.PfxFile), setting.key);
httpRequest.ClientCertificates.Add(cerCaiShang);
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
Stream receiveStream = httpResponse.GetResponseStream();
// 回调方法
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
return false;
}
本来这就算是完成了,但总是失败,原因未知,与万恶的Windows有关,还需要将客户端的证书+私钥(pfx 或p12 文件),导入到操作系统(windows)的相关证书区域,步骤:
Windows xp/2003
1. 单击 开始 ,单击 运行 ,键入 mmc ,然后单击 确定 。
2. 在 文件 菜单上单击 添加/删除管理单元 。
3. 在 添加/删除管理单元 对话框中,单击 添加 。
4. 在 添加独立管理单元 对话框单击 证书 ,然后单击 添加 。
5. 在在 证书管理单元中 对话框中单击 计算机帐户 ,然后单击 下一步
6. 在 选择计算机 对话框中,单击 完成 。
7. 在 添加独立管理单元 对话框单击 关闭 ,然后单击 确定 。
8. 展开 证书 (本地计算机) ,展开 个人 ,然后单击 证书 。
9. 右键 -》 所有任务-》导入 选择你的证书导入
Windows 7
1. 单击 开始 ,单击 运行 ,键入 mmc ,然后单击 确定 。
2. 在 文件 菜单上单击 添加/删除管理单元 。
3. 在 可用的管理单元 列表中选择 证书 ,点击 添加 。
4. 在 证书管理 对话框中选择 计算机账户 ,然后单击 下一步
5. 在 选择计算机 对话框中,单击 完成 。
6. 在 添加或删除管理单元 对话框单击 确定 。
7. 展开 证书 (本地计算机) ,展开 个人 ,然后单击 证书 。
8. 右键 -》 所有任务-》导入 选择你的证书导入
再次测试,就可以使用了。
参考:http://blog.wsdd.org/?p=510
本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2011/03/28/1997694.html,如需转载请自行联系原作者
C#创建https请求并使用pfx证书相关推荐
- WinInet:HTTPS 请求出现无效的证书颁发机构的处理
首先,微软提供的WinInet库封装了对网页访问的方法. 最近工作需要从https服务器获取数据,都知道https和http网页的访问方式不同,多了一道证书认证程序,这样就使得https在请求起来比h ...
- 小程序ssl报错java,抖音(字节跳动)小程序遇到request(https)请求报错,SSL证书验证失败...
今天做抖音小程序时遇到的奇怪问题: 本地测试都正常,真机调试时也正常,准备上线了,把http改成https,调用tt.request()时就报错. tt.request()报错如下: "re ...
- 【Spring】Feign客户端发送HTTPS请求绕过认证
1.概述 转载:https://www.jianshu.com/p/ea627708ab52 一个Spring Boot项目,为了使用Harbor仓库,起初通过Spring RestTemplate完 ...
- Spring Boot配置SSL实现https请求
Spring Boot配置SSL实现https请求 1. 生成SSL证书 专业的SSL证书较为昂贵,可以在腾讯云或者阿里云上申请免费的SSL证书. 如果只是做简单的demo,可以使用java自带的ke ...
- Charles 抓包 Idea IntelliJ 的 HTTPS 请求
默认情况下,Idea IntelliJ 的https请求,不会被 Charles 抓包抓到的.本文将介绍如何通过 Charles 来抓包Idea IntelliJ 的https请求. 1 安装 证书到 ...
- pfx证书密码怎么查询_网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境...
对于小程序request请求需要https域名.navigator.geolocation定位也需要在https环境下才可以生效等问题: 前端开发越来越需要https环境来来测试一下API接口和各类问 ...
- Android——自建CA证书,实现https请求
Android 使用https 协议请求客户端 server端操作 自己创建 CA 证书 拿自建CA 证书创建 server 端证书 创建 https 服务 Android客户端操作 创建项目并引入相 ...
- iOS使用自签名证书实现HTTPS请求
原文链接:http://www.jianshu.com/p/e6a26ecd84aa 由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求,否则无法上架,因此研究了一下在iOS ...
- iOS 用自签名证书实现 HTTPS 请求的原理实例讲解
在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求.默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info ...
最新文章
- Linux操作系统文件系统基础知识详解
- RabbitMQ 简介
- CSP认证201609-1	最大波动[C++题解]:遍历
- 在ArcGIS中认识 Python工具箱
- table表头固定4种方法_移动式、半移动式、半固定式、固定式4种破碎站详细介绍及优缺点对比...
- 需要gmail的朋友请留下你们的email,还有86个
- 谈谈控制器技术SpringMVC与struts2
- jquery下插入标签以及clone的应用
- http抓包实践--(五)-常用的操作
- 深圳中技物流有限公司软件测试,国际空运
- DCDC电源中同步与异步的区别
- IE浏览器假死解决办法
- HIVE中 ROW_NUMBER() OVER() 函数
- Cisco Viptela SD-WAN实验
- java制作纯字rpg小游戏_初学JAVA时编写的rpg文字游戏
- PHP 获取当天凌晨时间戳
- 嵌入式开发对学历门槛要求高吗?
- 人生之路 — 切勿迷失自我
- Scala-Scala学习笔记
- 计算机视觉之目标检测一之SSD
热门文章
- freertos 定时器 不启动_FreeRTOS 从入门到精通8--软件定时器应用
- java实现三位数加减乘除_用Java位运算实现加减乘除四则运算
- python语言句块的标记_Python语言语句块的标记是()
- fiddler弱网测试_移动端质量体系之弱网测试
- 高中计算机室名言,高中教室励志标语名言
- python怎么new对象_Python使用__new__()方法为对象分配内存及返回对象的引用示例
- python的property用法_python @property的用法及含义全面解析
- Python之try except异常处理工作机制和案例解析
- 【知识便利贴】ImageNet得的比Best Paper还牛的Longuet-Higgins奖是啥?
- 中国煤制甲醇产业发展形势与产量预测报告2022版