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.本 ...
随机推荐
- How to set up Tensorflow inception-v3 model on Windows
There is Inception-v3 model python implementation on GitHub at: https://github.com/tensorflow/models ...
- 记 suds 模块循环依赖的坑-RuntimeError: maximum recursion depth exceeded
下面是soa接口调用的核心代码 #! /usr/bin/python # coding:utf-8 from suds.client import Clientdef SoaRequest(wsdl, ...
- Python模块的动态加载机制
Python在运行环境初始化中,就将sys module加载到了内存中, 实际上,Python是将一大批的module加载到了内存中.但是为了使local名字空间能够达到最干净的效果,Python并没 ...
- Octave Tutorial(《Machine Learning》)之第四课《绘图数据》
第四课 Plotting Data 绘图数据 t = [0,0.01,0.98]; y1 = sin(2*pi*4*t); y2 = cos(2*pi*4*t); plot(t,y1);(绘制图1) ...
- Sublime Text 3下载-汉化-插件配置
Sublime Text 3下载 不用说是上官方下载地址:http://www.sublimetext.com/3 Sublime Text 3 免费使用方法 Sublime Text 2的时候还有一 ...
- SEQ序号与ACK序号理解总结
备查 SEQ序号与ACK序号理解总结
- 【iOS】7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
> 本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. --- > 本文相关目录: ================== 所属文集:[[ ...
- js全选与反选
HTML结构: <!doctype html><html><head><meta charset="utf-8"><title ...
- python之数据结构链表实现方式
#!/usr/bin/env python # --------------------------------------- # author : Geng Jie # email : gengji ...
- GWT开端
这篇文章是转载的,原地址:GWT开端 以前的基于GWT的项目中广泛使用的还是gwt-windows-1.5.3这个版本的. 1.下载地址:http://code.google.com/webtoolk ...