博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#创建https请求并使用pfx证书
阅读量:6231 次
发布时间:2019-06-22

本文共 1847 字,大约阅读时间需要 6 分钟。

常规情况下创建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
你可能感兴趣的文章
使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...
查看>>
13个在企业中持上升势头的开源编程工具
查看>>
sql server 2005附加数据库错误:尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误...
查看>>
彻底搞定C指针-函数名与函数指针
查看>>
win7快速启动栏
查看>>
一个网络项目招标书,大神们会几个?
查看>>
基于x86和JVM浅谈32bit与64bit的区别
查看>>
NSPredicate笔记
查看>>
cocos2d里面如何实现mvc
查看>>
unicode解码小工具
查看>>
Excel电子表格中如何做数据查找,重复数据删除,标记重复数据
查看>>
检测是否为HTML5新标签
查看>>
在升级过内核的机器上安装docker遇到的一个错误
查看>>
hibernate一个注册小例子
查看>>
zz 圣诞丨太阁所有的免费算法视频资料整理
查看>>
电信无限流量卡
查看>>
Java反射机制的适用场景及其利与弊 ***
查看>>
wine 运行Call of Duty Modern Warfare 2以及starcraft2方法
查看>>
找出表的记录数
查看>>
实现WCF和Unity 的集成
查看>>