EzHttp 使用Https协议时证书如何部署
今天为EzHttp增加了https支持, EzHttp介绍见这里:使用EzHttp框架 开发基于HTTP协议的CS轻应用
服务端启动时会创建自签名证书,并将其绑定到启动参数url对应的端口上。
服务端导出的cer文件(证书的公钥部分)位于服务端程序运行目录下。
复制该文件到客户端目录并调用指定证书文件的初始化函数即可。
问:为什么需要手动部署而不使用客户端连接服务端自动下载?
答:因为是自签名证书,通过标准http协议传输有被劫持的风险。
如12306这种,中间人可以伪造一个名称和创建时间一样的证书替换来欺骗客户端。
所以如果发布客户端,最好是在客户端程序打包时一并打包。
部署方式
服务端不需要额外的处理。
将cer文件复制到客户端目录后,通过调用如下方法对客户端进行初始化即可。
EzClient.Initialize("https://127.0.0.1:9555/", ".\\ezhttp.cer");
服务安全性小贴士
大家可能都应该了解,一般C#客户端在使用https请求时,如果网站证书是无效证书(自签名、过期等),我们就需要添加一个证书回调函数来决定是否通过服务端证书验证
public RemoteCertificateValidationCallback ServerCertificateValidationCallback { get; set; }
一般我们写的工具的时候,回调实现都是这样的,因为网上的代码基本上都是这样的,于是越来越多的程序里面的回调函数也是如此简单而粗暴,所以这就带来了安全性问题。
private bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
这表示什么呢?这表示客户端接受一切服务端证书,不管真假。
但这在开发我们自己的基于https的服务时是绝对不可取的,特别是使用自签名证书的时候,操作系统通过回调将验证服务器证书的任务交给了客户端程序。
我们开发时候要保证客户端请求发送的目的地是我们自己web服务而不是某个中间人。
因此,我在开发EzHttp的时候,通过从服务端导出的客户端证书来验证服务端的合法性。遵循了基于https的服务的证书验证的最佳实践。
private bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
var data = certificate.GetRawCertData();
return EzClient.Certs.Any(x => x.SequenceEqual(data));
}
EzHttp 使用Https协议时证书如何部署的更多相关文章
- LR录制https协议报证书错误,导航已阻止
使用IE浏览器录制https协议报证书错误,导航已阻止,修改如下配置文件:
- ASP.Net连接WebServer使用Https协议(证书)
ASP.Net使用Https(证书)协议连接WebService 最近使用ASP.Net连接WebService,不过走的协议是Https的,我一般用的使用都是普通的http协议.所以刚开始有点不值从 ...
- nginx 使用HTTPS协议-SSL证书模块报错解决-附nginx安装 : [emerg] the "ssl" parameter requires ngx_http_ssl_module in nginx.c
Linux系统下ngnix使用HTTPS协议启动报错: nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_modul ...
- Fiddler抓取https协议的证书导入过程
fildder抓取https的设置以及证书导出 打开fiddler界面,选择左上角菜单栏Tools-Options 出现Options界面后,选择HTTPS选项卡 勾选上Capture HTTPS C ...
- Apache服务器配置https协议/SSL证书的方法
转载于:http://www.server110.com/apache/201309/1542.html
- 大型网站的 HTTPS 实践(1):HTTPS 协议和原理
转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...
- HTTPS协议简介
一.HTTPS简介 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义. HTTPS ...
- 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt387 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 ...
- 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理(转)
原文链接:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本 ...
随机推荐
- 算法模板——sap网络最大流 2(非递归+邻接表)
实现功能:同最大流 1 这里面主要是把前面的邻接矩阵改成了邻接表,相比之下速度大大提高——本人实测,当M=1000000 N=10000 时,暂且不考虑邻接矩阵会不会MLE,新的程序速度快了很多倍(我 ...
- 1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2148 Solved: 554[Submit][Status] ...
- 一个想法照进现实-《IT连》创业项目:三天的风投对接活动内幕分享
前言: 话说出来创业的,都有一颗寻找风投的心,只因都有一个共同的特征:缺钱. 有的只是缺几十万,有的缺几百万,有的缺几千万,有的缺几个亿. 中国的市场,只要有需求,就有服务,只要有服务,就多了套路. ...
- SVN的安装及使用指南
SVN的安装及使用指南 目录: 一. SVN的安装. 1. VisualSVN的安装 2. Server Port的选择及错误处理 3. TortorieseSVN的安装 二. SVN ...
- SQL_Join 小总结
原文出自 :http://www.nowamagic.net/librarys/veda/detail/936 对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多in ...
- web第十天总结
今天进入web学习第十天,学习了xml序列化,servlet,其他的想不起来了,回顾以前的java基础面向对象,多态,继承.封装,但是还不是很理解.对于map,list,set更是理解不透,2011年 ...
- springmvc基础学习3---注解简单理解
1:@Controller 用来注解这个bean是MVC模型中的一个C 会被spring的auto-scan扫到纳入管理.Spring mvc框架中的action层注入,也就是控制层.控制器Contr ...
- spring mvc和web-flow的整合方案
发现了一份整合spring MVC 和webflow的很好的资料,日后翻译出来发布.先记着. http://docs.spring.io/spring-webflow/docs/2.3.x/refer ...
- 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池
前言: 首先表示抱歉,春节后一直较忙,未及时更新该系列文章. 近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集. 这时候 ...
- TIME_WAIT 另一种解决方式 SO_LINGER
被TIME_WAIT问题烦得不行,又发现了另一种解决方式,SO_LINGER. 对SO_LINGER解释最通用的自然是<UNP>,现摘录如下 SO_LINGE ...