Forefront TMG 新特性之HTTPS
扫描
在Forefront TMG 新特性之HTTP 非法软件扫描一文中,我曾经提及在TM G 中,为了保护用户Web 访问的安全性,新增了许多安全防护功能,其中一个就是针对HTTP/HTTPS协议的非法软件扫描功能,在那篇文章中,我已经就针对HTTP 的非法软件扫描进行了介绍,而今天就给大家介绍一下TMG 的HTTPS 扫描功能。
HTTPS是加密的HTTP传输,标准的传输端口为TCP 443。由于HTTPS 加密传输的特性,传输内容不可知,导致很多的非法软件(例如木马)使用HTT PS 协议来进行传输,甚至不使用标准的HTTPS协议,仅使用TCP 443 端口来进行传输,这样看起来就像是HTTPS 协议传输。但是由于绝大部分防火墙(包括硬件和软件)缺乏针对HTTPS 传输内容的访问控制,因此只能开放T CP 443 端口,导致企业网络的安全性得不到有效的保障。
在Forefront TMG 中,提供了针对HTTPS 传输内容的扫描检查功能,因此可以阻止病毒、木马、间谍软件等非法软件通过HTTPS 协议来实现传播,提高企业网络的整体安全性。
此时,可能大家会有一个疑问,既然HTTPS 为加密传输,那么TMG 又如何实现针对HTTPS 传输内容的检查呢?
在执行HTTPS 传输内容检查时,TMG 实际上扮演了一个中间人的角色:对于发起请求的原始客户端来说,TMG 被访问的远端Web 服务器;而对于远端的Web 服务器来说,TMG 是发起请求的客户端。具体的处理过程如下:
1.内部客户端向外部的Web 服务器发起HTTPS 连接请求;
2.此时,TMG 截获到该HTTPS 访问请求。首先,TMG 检查远端的We
b 服务器的证书是否有效,例如是否信任该证书、证书名称是否匹配站
点名称、证书是否被吊销等;
3.如果证书有效性检查通过,则TMG 基于远端Web 服务器的证书的属
性,自行生成一个证书,然后出示给原始的客户端(客户端需要信任T
MG 生成的服务器证书);
4.当客户端接受到TMG 出示的证书之后,认为TMG 就是自己所要访问
的Web 服务器。此时,客户端和TMG 之间进行HTTPS 传输协商,并将访问内容请求发送给TMG;
5.当TMG 接受到客户端的访问请求后,经扫描检查之后,如果没有问题,
则TMG 将该访问请求转发到远端的Web 服务器;
6.当Web 服务器返回响应给TMG 之后,TMG 首先进行扫描检查。确
认没有问题之后,再发送给内部的客户端。
在整个流程中,最关键的地方就是让客户端相信TMG 就是远端的Web 服务器(客户端信任TMG 生成的服务器证书)。在此又充分的体现除了微软在系统平台方面的整合能力,基于活动目录的统一管理功能,你可以很容易的实现这一点。
在安装完TMG 运行Web 访问策略向导时,会让你选择是否启用HTTPS 扫描功能,具体可以参考ForeFront TMG 标准版安装指南(http://www.isac https://www.doczj.com/doc/e216804653.html,/info/info.php?sessid=&infoid=349&page=6)。接下来,我给大家展示如何配置HTTPS 扫描功能。
首先,在TMG 的管理控制台中的左边节点中定位到Web 访问策略,然后在右边的任务面板中选择配置HTTPS 扫描,
在常规标签,具体选项的含义如下:
?启用HTTPS 扫描:是否启用HTTPS 扫描,如果启用,则可以选择HTTPS 扫描方式:
o扫描HTTPS 传输内容并检查Web 站点的证书:如果选择该选项,则除检查远端Web站点的服务器证书是否有效(具体验证
内容可以在证书验证标签进行设置)外,对HTTPS 传输的内容
进行非法软件扫描;
o不扫描HTTPS 传输内容,检查Web 站点的证书。如果证书无效则阻止访问:如果选择该选项,则只检查远端Web站点的服
务器证书是否有效(具体验证内容可以在证书验证标签进行设置),
如果远程Web站点的服务器证书无效则阻止访问,不对HTTPS
传输的内容进行非法软件扫描;
?HTTPS 扫描的证书设置:我们在前面讲述HTTPS 扫描工作原理时已经强调,客户端需要信任TMG 生成的服务器证书。而具体实现过程则
为TMG 所使用的CA证书必须是受到客户端计算机信任的。这个可以通过以下两种方式来实现:
o让TMG 自行生成CA 证书:点击生成按钮,则TMG 会自动生成一个CA 证书;
o导入一个证书:导入一个证书,如果企业里面已经有企业CA,则可以为TMG 颁发一个CA证书(该证书需要具有证书签名SK
U,建议直接使用从属证书颁发机构模板来创建TMG 所需要的C
A证书)。
考虑到大多数企业的情况,在此我直接让TMG 自行创建CA 证书,因此点击生成按钮,然后在弹出的生成证书对话框上,点击生成证书,
生成的证书如下图所示,注意,目前由于计算机尚未信任该CA 证书,因此显示为无效证书,点击确定返回;
目前CA证书生成完毕,但是最关键的地方在于如何让客户端计算机信任该证书。如果是具有活动目录的场景,那么是非常容易的,如果没有活动目录,那就比较麻烦了,只有在客户端计算机一台一台添加了...
在此为具有活动目录的场景,并且TMG 服务器加入到了活动目录,因此可以通过TMG 自身的功能直接通过活动目录完成该CA证书到客户端计算机的部署。点击HTTPS 扫描信任根CA 证书选项按钮,
然后在弹出的证书部署选项中,点击域管理员凭据按钮并输入域管理员的相关用户名和密码信息,
此时,TMG 会自动将该CA证书发布到活动目录的受信任的根CA证书存储中,因此所有属于活动目录的客户端计算机和用户将会信任TMG 的CA证书。
点击确定完成部署。如果需要手动部署TMG 的CA证书,则可以选择手动部署到每个客户端计算机,然后点击导出到文件...按钮将TMG 的CA 证书导出到文件。但是手动部署是一个非常麻烦的事情(纯属浪费体力),因此如果没有自动化的部署方式(例如活动目录),建议大家不要使用针对HTTPS 内容的扫描功能...
在目标例外标签,你可以设置对于哪些目的地,不进行HTTPS 扫描。需要注意的是,由于HTTPS 扫描的工作原理,有些Web 服务器站点(例如要求客户端证书验证的Web 站点)是不支持HTTPS 扫描的,另外一些表面上使用HTTPS端口、实际上使用伪装协议的SSL VPN也不支持HTTPS 扫描。对于这部分站点,你需要在此设置例外,并且可以点击验证按钮来切换是否检查对方的服务器证书有效性。
在源例外标签,你可以设置对于哪些源地址,不进行HTTPS 扫描;
在证书验证标签,可以设置在验证服务器证书时的处理策略,包括:
?当服务器证书过期多少天后,阻止访问:默认为15天;
?阻止无效的服务器证书:是否阻止无效的服务器证书。其实最简单的检查一个服务器证书是否有效的的方式,就是在未启用HTTPS 扫描的场景下,通过IE 去访问该Web站点,看IE是否有告警的提示,如果有则代表该证书存在无效的情况;
?检查服务器证书吊销:是否检查服务器证书吊销,该选项可能会增加客户端访问时的时延;
在客户端提示标签,选择是否提示防火墙客户端用户正在进行HTTPS 检查。由于HTTPS 传输通常为加密数据,对它的传输内容进行检查时,涉及到个人隐私方面的问题,因此基于国外相关法律的要求,是需要及时通知用户的。该功能需要TMG 最新的防火墙客户端的支持,原有的ISA Server 的防火墙客户端不支持。
在此我启用针对HTTPS 传输内容的扫描,并且检查服务器证书。完成配置后,在TMG 的管理控制台中点击应用按钮保存设置并且等待TMG 配置完成同步。
我们在一台客户端计算机上登录进行访问测试。首先检查该计算机的受信任的根证书颁发机构计算机存储,如下图所示,我们可以看到TMG 的CA证书已经通过活动目录自动下发到了客户端计算机;
然后,我们访问一台外部的HTTPS Web站点进行访问。访问成功,然后检查一下当前使用的Web 证书,如下图所示,可以很清楚的看到是TMG 颁发的证书,
而从TMG 的访问日志中,也可以很清楚的看到TMG 对客户端的访问进行了HTTPS 扫描,
如果HTTPS Web 站点要求客户端证书验证,则会访问失败,具体错误如下图所示,此时我们需要对该站点设置例外;
一文读懂对话式交互技术原理及流程设计 一、对话式交互技术 以智能音箱、智能电视为代表的对话式交互,是时下非常火热的、且能够走近我们生活的人工智能子领域。 什么是对话式交互呢?我们首先从一个例子开始。贾维斯,电影《钢铁侠》中那位钢铁侠的AI 管家,他能独立思考、可以实时帮钢铁侠处理各种事情,包括计算海量数据。其中最让观众印象深刻的就是,贾维斯可以随时随地像人一样进行口语交流,来解决钢铁侠的问题。 贾维斯能听、会说,能实时理解主人的对话意图并根据实际场景进行下一步的对话,如果在对话过程中碰到有歧义的情况,他还会追问钢铁侠,让他提供更多的信息来消除歧义。贾维斯的这些能力就是对话式交互要提供的,其中的核心是VUI (V oice User Interface,语音用户界面)的设计。相对于GUI(Graphical User Interface,图形用户界面),VUI 解放了人的双手,某些场景下,简单的一句语音命令就能代替GUI 下鼠标/ 遥控器的多次点击,这带来的不只是方便,还节省了时间。一个好的VUI 系统,能够让用户尽可能通过最少轮次的对话实现既定意图的执行。贾维斯总能在危机时刻帮到钢铁侠,他是一个具有完美VUI 的语音助手。 嗯,我们不要入戏过深,贾维斯是一部电影里的虚拟系统。那么,现实生活中,我们能创造出来一个接近贾维斯的对话式交互系统吗?我们该怎么做呢?呃,很遗憾,以当前的科技发展水平,我们还做不到电影里那么智能,更不用说让机器有意识。但人机交互并不是昨天才发明出来的,人类在这个领域已经探索了几十年,我们可以实现钢铁侠与贾维斯的交互方式,并用这种方式来帮我们处理一些数据或控制我们身边的一些硬件设备(比如让语音助手根据天气提供穿衣建议或者控制厨房和卧室的各个家电),这就是我们要聊的对话式交互技术。 对话式交互技术包括了语音识别/ 合成、语义理解和对话管理三个部分。当下的对话式交互产品主要分两类:以微软小冰为代表的开放域(Open Domain)对话系统和以亚马逊
基于安全协议的https的页面测试脚本 一、loadrunner8.1 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。 在使用https协议不管是服务器端还是客户端都需要使用到ca证书来进行访问。 一般来说,性能测试为所常见的为客户端使用https打开页面的方式。 在这个情况下,首先是处理https访问过程中的证书 1.证书的准备 常见的证书为:*.pfx,*.p12格式,该种格式的证书可以通过双击运行安装到IE浏览器上。用户在访问的时候就可以使用到。 但这些证书并不是LoadRunner所使用的类型,因此需要对其进行转换。将其转换为*.pem 格式。 转换方法如下: ●安装openssl后 ●运行C:\
选择后,单击New Enty 红框中的配置为服务器的ip(或者域名)和端口号(ssl默认端口443),按照测试所需要的实际地址进行配置。 配置后,将Use specified client-side certificate[Base64/PEM]钩选,为使用客户端证书访问。 单击...选择刚刚转换生成的客户端证书。 如果你为证书有设置密码,在这里也需要输入。
Java获取http和https协议返回的json数据 现在很多公司都是将数据返回一个json,而且很多第三方接口都是返回json数据,而且还需要使用到http协议,http协议是属于为加密的协议,而https协议需要SSL证书,https是将用户返回的信息加密处理,然而我们要获取这些数据,就需要引入SSL证书。现在我提供两个方法,帮助各位如何获取http和https返回的数据。 获取http协议的数据的方法,如下: public static JSONObject httpRequest(String requestUrl, String requestMethod) { JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); try { URL url = new URL(requestUrl); // http协议传输 HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); // 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod); if ("GET".equalsIgnoreCase(requestMethod)) httpUrlConn.connect(); // 将返回的输入流转换成字符串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); // 释放资源 inputStream.close(); inputStream = null; httpUrlConn.disconnect(); jsonObject =
交互设计概述 1. 探索思想 如果我们问,交互设计是什么??家从 IxDC 的定义中能很快知道答案。 交互设计,又称互动设计(Interaction Design, 缩写 IxD 或者 IaD),是定义、设计?造系统的?为的设计领域。在于定义?造物的?为?式(the “Interaction”,即??制品在特定场景下的反应?式)相关的界?。[]1 很显然,如果根据定义去看,我们应该是云?雾?,根本看不懂它的定义,也?法理解交互设计是什么,又为何如此去定义的。?然,这种?法就不可取。?当?法理解?个东西是什么的时候,不妨问问??,为什么这个东西不是其他什么。 所以与其从正?去理解交互设计是什么,不如进?对它进?质疑与攻讦。当然,我们进?质疑与攻讦的?的,不是为了搞个?新闻,去否定交互设计的价值,?是通过这种质疑,去理解交互设计的合理性,存在的意义,从?加深对于交互设计的理解,在宏观层?去触及交互设计为什么是这样的。毕竟,?个合理的东西,从任何?度进?攻击都不应该会有破绽。 所以,第?件事,我们应该问问,交互设计是不是应该必须存在在世界上的?它的存在是有什么必然性吗?世界上没有交互设计,还能不能正常运作? 交互设计是如何诞?的?交互设计有什么??我们为什么需要去研究交互设计? 只有我们肯定了交互设计存在的合理性,我们才能更好地去理解,什么是交互设计。 2.交互设计存在的合理理性 2.1.界定交互设计的标准是什什么? 既然我们质疑交互设计存在的合理性,我们?先要做的,应该是界定,什么能够称得上是交互设计?能被称为交互设计的界定标准是什么?因为如果没有这个标准,?切皆可以被称为「交互设计」,那么我们所有讨论的案例、理论、设计都将会是没有意义的。我们出?个问题?问?下: ??瓶?的包装设计能不能被称为交互设计? ??个栏杆的指?设计设计能不能被称为交互设计? ?飞机的控制系统仪表盘设计能不能被称为交互设计?
:利用Wireshark软件进行数据包抓取 1.3.2 抓取一次完整的网络通信过程的数据包实验 一,实验目的: 通过本次实验,学生能掌握使用Wireshark抓取ping命令的完整通信过程的数据包的技能,熟悉Wireshark软件的包过滤设置和数据显示功能的使用。 二,实验环境: 操作系统为Windows 7,抓包工具为Wireshark. 三,实验原理: ping是用来测试网络连通性的命令,一旦发出ping命令,主机会发出连续的测试数据包到网络中,在通常的情况下,主机会收到回应数据包,ping采用的是ICMP协议。 四,验步骤: 1.确定目标地址:选择https://www.doczj.com/doc/e216804653.html,作为目标地址。 2.配置过滤器:针对协议进行过滤设置,ping使用的是ICMP协议,抓包前使用捕捉过滤器,过滤设置为icmp,如图 1- 1
图 1-1 3.启动抓包:点击【start】开始抓包,在命令提示符下键入ping https://www.doczj.com/doc/e216804653.html,, 如图 1-2
图 1-2 停止抓包后,截取的数据如图 1-3 图 1-3 4,分析数据包:选取一个数据包进行分析,如图1- 4
图1-4 每一个包都是通过数据链路层DLC协议,IP协议和ICMP协议共三层协议的封装。DLC协议的目的和源地址是MAC地址,IP协议的目的和源地址是IP地址,这层主要负责将上层收到的信息发送出去,而ICMP协议主要是Type和Code来识别,“Type:8,Code:0”表示报文类型为诊断报文的请求测试包,“Type:0,Code:0”表示报文类型为诊断报文类型请正常的包。ICMP提供多种类型的消息为源端节点提供网络额故障信息反馈,报文类型可归纳如下: (1)诊断报文(类型:8,代码0;类型:0代码:0); (2)目的不可达报文(类型:3,代码0-15); (3)重定向报文(类型:5,代码:0--4); (4)超时报文(类型:11,代码:0--1); (5)信息报文(类型:12--18)。
spring cloudspring boot同时支持http和https访问 前言 关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例子。 在这里,我向大家讲述一下,我是怎么实现的。 方式一 一、相关配置 server: port: 4000 https: port: 8443 ssl: key-store: classpath:sample.jks key-store-password: secret key-password: password 可以看到,只是简简单单添加端口的信息,sample.jks可以
自己生成(记得对应密码),也可以在官网例子里面下载。 二、spring boot启动文件读取配置信息(注:请添加必要的jar) @SpringBootApplication public class GatewayApplication { public static void main(String[] args) throws Exception { SpringApplication.run(GatewayApplication.class, args); } @Value("${https.port}") private Integer port; @Value("${https.ssl.key-store-password}") private String key_store_password; @Value("${https.ssl.key-password}") private String key_password;
HTTPS请求 package com.sunzk.dreamsunlight.weixin.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import https://www.doczj.com/doc/e216804653.html,.ConnectException; import https://www.doczj.com/doc/e216804653.html,.URL; import https://www.doczj.com/doc/e216804653.html,.ssl.HttpsURLConnection; import https://www.doczj.com/doc/e216804653.html,.ssl.SSLContext; import https://www.doczj.com/doc/e216804653.html,.ssl.SSLSocketFactory; import https://www.doczj.com/doc/e216804653.html,.ssl.TrustManager; import net.sf.json.JSONException; import net.sf.json.JSONObject; import org.apache.log4j.Logger;
import com.sunzk.dreamsunlight.weixin.certificate.MyX509 TrustManager; import com.sunzk.dreamsunlight.weixin.model.Menu; import com.sunzk.dreamsunlight.weixin.token.AccessToken; /** * * @ClassName: WeiXinHttpsUtil * * @Description: TODO(微信HTTPS请求工具类) * * @author sunzk-dreamsunlight-QQ(1131341075) * * @date 2016-11-14 上午10:05:56 * */ public class WeiXinHttpsUtil {
she强制http跳转https页面 简介 https在现在网络中是公认的安全的访问方式,但是在访问的过程中很多站点是没有强制https访问的,这样会导致有些客户可以通过http访问,从而对服务器造成一些不安全因素。下文将介绍几种强制https访问的方法。 一,wordpress中设置https强制访问。 默认登录wordpress的后台是使用http协议,这协议是明文发送的。这可能会导致你的用户和密码被窃听。如果使用ssl登录,这种情况则可以避免。下面是设置方法。 1、设置wp-config.php /* That's all, stop editing! Happy blogging. */ ... require_once(ABSPATH . 'wp-settings.php'); 2、在上面的代码之前加上如下代码: define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true); define(‘FORCE_SSL_LOGIN’, true);#是启用登录时使用ssl define(‘FORCE_SSL_ADMIN’, true);#后台管理也使用ssl 如果担心后台使用ssl影响速度,可以不用。但还是建议使用,因为这将有可能cookie 被劫持导致黑客伪造cookie登录后台。 wordpress只需要几步设定就可以启用强制使用HTTPS登入后端管理界面首先到wp-config.php中找到下面这段:
if ( !defined(‘ABSPATH’) ) define(‘ABSPATH’, dirname(__FILE__) . ‘/’); 找到它以后,請在它上面加入下列此行: define(‘FORCE_SSL_LOGIN’, true); 接下來请在VHOST上设定好SSL的相关设置..这里就不再叙述了 以下附上nginx上如何使用vhost并且自动rewrite url跳转到https管理页面的设定值: 请在rewrite rule上面加入rewrite ^.*/wp-admin(.*) https://wp.littlecho.tw/wp-admin$1 last; 即可 例如下: location / { try_files $uri $uri/ /index.php; rewrite ^.*/wp-admin(.*) https://wp.littlecho.tw/wp-admin$1 last; } 设定完毕后当输入http://xxxx.domain.tld/wp-admin时就会自动跳转了。 二,tomcat中的跳转配置 在tomcat中设置强制https的方法有2种,下面分别介绍下这2种方法的配置: 1,调整web.xml文件,将HTTP使用的server.xml文件重定向端口 在记事本中打开 SGMS4\Tomcat\webapps\sgms\WEB-INF\web.xml文件,在web.xml的文件末尾的前一句添加以下内容:
http与https的区别: http协议传输的数据都是未加密的,也就是明文的,因此使用http协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了ssl(secure sockets layer)协议用于对http协议传输的数据进行加密,从而就诞生了https。 简单来说,https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。 https和http的主要区别: 一、https协议需要到ca机构申请ssl证书(如沃通ca),另外沃通ca还提供3年期的免费ssl证书,高级别的ssl证书需要一定费用。 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 三、http和https使用的是完全不同的连接方式,用的端口也不一样,http是80端口,https是443端口。 四、http的连接很简单,是无状态的;https协议是由ssl+http 协议构建的可进行加密传输、身份认证的网络协议,比http协议安全.
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
使用wireshark分析HTTPS流程的建立
使用wireshark分析HTTPS流程的建立 摘要: https流程 一、概要 为了网站以及用户的安全性,现在很多的网站都是https,大家都知道tcp通过三次握手建立连接,并且还有很多的同学对https连接建立的流程不太明白,包括我自己,通过借助于wireshark这种抓包工具,我们可以尝试着了解一下大概的流程。 (图1) 本图是客户端(10.0.45.103)访问服务端(114.215.88.85)通过wireshark 抓包显示出来的双方交互数据,访问是通过https访问服务器上的一台nginx 服务器服务。请关注第一列的No。下文中很多时候会用no表示一次交互。 图中可以很明显的看出tcp的三次握手以及之后的TLS加密流程的建立。二、tcp的三次握手 通过流程图可以看出(也可以看图1 的19368到19370这三个编号),首先客户端向服务端发起一个SYN的请求,序号(Seq)为0,确认号(ACK)也为0,这代表是本次是由客户端发起的首次请求。本次请求的数据长度为0 然后服务端给客户端响应,此时服务端的Seq也是0,值得是服务端的第一回应,并且给客户端说,你的请求我已经收到了(ACK=1),
最后返还给客户端以后,客户端的序号+1,并且对服务端的响应做出确认,最后回给服务端,此时ACK=1,Seq=1 tcp的握手过程建立成功。 三、ssl连接的建立 通过以上可以看出,SSL也是建立在TCP的基础上的,经过tcp的三次握手,接下来才是加密信道的建立。 客户端和服务端建立安全连接大致经过以下几个步骤 1.客户端:ClientHello 2.服务端:Server Hello,Server certificate,Server Exchange,Server Hello Done 3.客户端:client Exchange 4.客户端:Application Data 5.服务端:New Session 6.服务端:Application Data 接下来看这几个步骤中具体的每一个步骤传输的内容 ClientHello client首先给服务端打招呼,对服务端说hello 应用层没什么特别的
1 HTTP及HTTPS HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像,本质上是一种不安全的请求交互方式。 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https://URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 2 HTTP和HTTPS区别 https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http 和https使用的是完全不同的连接方式用的端口也不一样:前者是80,后者是443。 http的连接很简单,是无状态的HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全 HTTPS解决的问题: (1)信任主机的问题。 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书。 该证书只有用于对应的server 的时候,客户度才信任次主机。所以目前所有的银行系统网站,关键部分应用都是https 的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的server,采用的证书不管自己issue 还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server。 (2)通讯过程中的数据的泄密和被窜改。 1)一般意义上的https,就是server 有一个证书。 a) 主要目的是保证server 就是他声称的server。这个跟第一点一样。 b) 服务端和客户端之间的所有通讯,都是加密的。 i、具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥。一般意义上的握手过程。 ii、加下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义。因为他没有密钥。当然窜改也就没有什么意义了。 2)少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
一、什么是HTTP?什么又是HTTPS? 1、想要了解http的同学可以先点击这个链接谈谈HTTP协议的流程。 2、至于https,一眼看上去似乎是http的加强版,如果你也是这么下意识认为的话,那么恭喜你你的下意识完全正确。 https即Hyper Text Transfer Protocol over Secure Socket Layer,望文知意便是基于安全套接层的超文本传输协议。我们可以将https理解为http的安全加强版。至于如何安全加强的我会在后文详细讲解。 二、HTTP和HTTPS的现状 1、我们发现如今浏览器地址栏中大多是以" https://"开始的URL(统一资源定位符/网址)而不再是“http://” 如知乎 如腾讯
再如百度 还有淘宝 实际上,现如今国外很多网站包括国内都在使用https。 那么看到这里我们可能会想到,为什么现如今大多数网址中都是" https://"而不是“http://”呢?进一步地讲,https相比于http的优势在哪里? 三、HTTPS的优势 要知道HTTPS 的优势在哪我们首先要知道什么是明文传输,什么是抓包,什么是SSL。 1、明文传输:明文传输一般常指计算机于计算机之间进行数据传输时的方式,这种方式下数据传输是没有加密的。 2、抓包:抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。
而http协议是采用的就是明文传输,这种方式下很容易被抓包。 如图一所示:http协议中传输的不加密的数据容易被黑客截取。 图一 若是传输的数据中有用户的密码等信息被黑客截取到了,那么带来的后果是灾难性的。 为了避免数据被抓包,应用SSL技术的HTTPS协议应运而生。 3、SSL即Secure Sockets Layer ,望文知意即安全套接层。 通过下面一组图,我们可以看出SSL是如何实现数据加密的。
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1]。HTTPS 在HTTP 的基础下加入SSL层,HTTPS 的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS 存在不同于HTTP 的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。 http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。 两者不同之处: 一、传输信息安全性不同 1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。 2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。 二、连接方式不同 1、http协议:http的连接很简单,是无状态的。 2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份
认证的网络协议。 三、端口不同 1、http协议:使用的端口是80。 2、https协议:使用的端口是443. 四、证书申请方式不同 1、http协议:免费申请。 2、https协议:需要到ca申请证书,一般免费证书很少,需要交费。
1.1跟我学人机交互界面理论与技术及应用——Web前端开发工程师 1、Web前端开发相关技术简介 (1)Web前端开发工程师是一个很新的职业 在国内乃至国际上真正开始受到重视的时间不超过5年,Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。 在互联网的演化进程中,网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。2005年以后,互联网进入Web 2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化。 网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。 (2)RIA技术不断地深入和普及 随着Web 2.0概念的普及和W3C组织的推广,网站重构的影响力正以惊人的速度增长。XHTML+CSS布局、DHTML和Ajax像一阵旋风,铺天盖地席卷而来,包括新浪、搜狐、网易、腾讯、淘宝网等在内的各种规模的IT企业都对自己的网站进行了重构。 为什么它们会对自己的网站进行重构呢?有两个方面的原因: 第一,根据W3C标准进行重构后,可以让前端的代码组织更有序,显著改善网站的性能,还能提高可维护性,对搜索引擎也更友好; 第二,重构后的网站能带来更好的用户体验,用XHTML+CSS重新布局后的页面,文件更小,下载速度更快。 2、了解网站重构的基本目的 网站重构的目的仅仅是为了让网页更符合Web标准吗?不是!重构的本质是构建一个前端灵活的MVC框架,即HTML作为信息模型(Model),CSS控制样式(View),JavaScript 负责调度数据和实现某种展现逻辑(Controller)。同时,代码需要具有很好的复用性和可维护性。这是高效率、高质量开发以及协作开发的基础。 3、Web前端开发工程师 DHTML可以让用户的操作更炫、更吸引眼球;Ajax可以实现无刷新的数据交换,让用户的操作更流畅。对于普通用户来说,一个网站是否专业、功能是否强大,服务器端是用J2EE+Oracle的强大组合,还是用ASP+Access的简单组合,并没有太明显的区别。 但是,前端的用户体验却给了用户直观的印象。随着人们对用户体验的要求越来越高,
HTTPS为什么比较安全 HTTP和HTTPS的安全性 1. HTTP协议为什么是不安全的 HTTP协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,因此通信过程非常容易遭遇劫持、监听、篡改。严重情况下,会造成恶意的流量劫持、个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题。 可以把HTTP通信比喻成寄送信件一样,A给B寄信,信件在寄送过程中,会经过很多的邮递员之手,他们可以拆开信读取里面的内容(因为HTTP是明文传输的)。A的信件里面的任何内容(包括各类账号和密码)都会被轻易窃取。除此之外,邮递员们还可以伪造或者修改信件的内容,导致B接收到的信件内容是假的。 这边举例几个HTTP通信不安全的列子:在HTTP通信过程中,“中间人”将广告链接嵌入到服务器发给用户的HTTP报文里,导致用户界面出现很多不良链接;或者是修改用户的请求头URL,导致用户的请求被劫持重定向到另外一个网站,用户的请求永远到不了真正的服务器。 2. HTTPS如何保证安全 我们都知道HTTPS是安全的HTTP,那么HTTPS是如何保证通信过程的安全的呢? 如果服务器给客户端的消息是密文的,只有服务器和客户端才能读懂,就可以保证数据的保密性。同时,在交换数据之前,验证一下对方的合法身份,就可以保证通信双方的安全。(和我们平时开发中RSA加签验签,加密解密的过程比较像)。HTTPS就是利用了类似的原理来保证通信的安全性。 所以HTTPS保证安全通信的步骤主要分为两步: ?通信前验证对方的合法身份; ?将通信的报文加密,通过密文进行通信。 下面来看看HTTPS的具体实现。
///
对于https协议的接口的抓包方法 一、使用fiddler 1.使用fiddler对浏览器访问的https接口抓包 默认设置下的fiddler是不能解密https协议的请求的内容的,在fiddler上抓到的https 协议的请求都是如下图所示,但是看不到其中的传参以及返回结果的内容: 如果想要用fiddler抓到浏览器访问的https接口,需要在fiddler做如下设置: a)进入菜单栏,Tools->Fiddler Options: b)切换到https选项卡,勾选如下选项: c)按照上面步骤勾选后,会弹出如下提示框,提示意思大概就是fiddler会生成 一个唯一的根证书,我们要配置Windows,使Windows信任这个CA证书,
所以点击Yes即可: d)点击Yes之后,Windows会马上弹出下面的弹窗,我们点击“是”,就能将 DO_NOT_TRUST_FiddlerRoot这个由fiddler生成的CA证书导入到浏览器,也就 完成了上面C步骤所述的配置Windows,使Windows信任这个CA证书的步 骤: 完成了上面的配置后,即可以在浏览器发起一个https协议的请求: 此时可以在fiddler抓到这个请求,并能看到传参内容和返回的内容
返回的内容: 2.使用fiddler对app访问的https接口抓包 首先要先在fiddler进行设置,步骤与上面的一样,但是不用导入证书到浏览器,这里不再赘述。 Android: 要使用fiddler抓到app发出的https请求,需要在app端安装fiddler生成的CA证书,在Android的app端安装fiddler生成的CA证书步骤如下: a)设置手机代理服务器,代理到自己的电脑:
HTTP的配置 在Linux上运行https://www.doczj.com/doc/e216804653.html,网站或WebApi 我们使用Jexus5.8.1制作的一款无需安装mono就能使用的“独立版”,该“独立版”支持64位的CentOS6.5、Ubuntu12.04以上版本的操作系统,能运行WebForm、Mvc3-5、WebService以及WebApi,支持PHP,支持OWIN,支持反向代理,也就是说,无需安装mono的“独立版”与需要安装mono的“通用版”在功能上是完全相同的。下面具体谈谈Jexus“独立版”的使用。 一、下载: 把jexus压缩包下载到linux临时文件夹中。 cd/tmp https://www.doczj.com/doc/e216804653.html,/down/jexus-5.8.1-x64.tar.gz 该命令执行完成后,jexus独立版就被下载到了/tmp文件夹 二、解压: tar-zxvfjexus-5.8.1-x64.tar.gz 解压完成后,会在/tmp中得到一个jexus文件夹。 三、移动: 把jexus文件夹移动或复制到一个指定的工作位置,这个位置你自己决定,建议大家统一使用/usr路径。 sudomvjexus/usr 然后清理/tmp中的jexus: sudorm-rf/tmp/jexus* 四、建一个简单的aspx网页用于测试: 由于jexus的默认的网站配置文件指向的物理路径是/var/www/default,所以,我们在/var下创建www文件夹(创建文件见命令:mkdir文件夹名),在www下创建default 文件夹。创建完成后,进入default文件夹,用vim编写一个简单的index.aspx,仅如下两句: <%@PageLanguage="C#"%> <%=DateTime.Now.ToString()%> 保存后退出。 五、启动jexus并尝试访问默认网站: cd/usr/jexus sudo./jwsstart 六,Jexus的“卸载”: Jexus是“绿色软件”,除了jexus文件夹外,它不会在系统的其它地方写入任何文件,也不会注册任意信息,所以,它的卸载很简单:删除jexus文件夹就行了。 七,Jexus的常用命令:(需要进入/usr/local/jexus运行如下命令) 启动:sudo./jwsstart 重启:sudo./jwsrestart 停止:sudo./jwsstop 启动某个网站:sudostart网站名 重启某个网站:sudorestart网站名 停止某个网站:sudostop网站名
Web之http协议(四) 一、HTTP的缺点 1.通信使用明文可能会被窃听 (1)TCP/IP是可能被窃听的网络 按TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。(2)加密处理防止被窃听,加密的手段有 通信的加密:一种方式就是将通信加密。HTTP 协议中没有加密机制,但可以通过和SSL (Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP 的通信内容。与SSL 组合使用的HTTP 被称为HTTPS(HTTP Secure,超文本传输安全协议)或HTTP over SSL。 内容的加密:即把HTTP 报文里所含的内容进行加密处理。 2.不验证通信方的身份就可能遭遇伪装 (1)任何人度可以发送请求。服务器只接受请求,不管对方是谁都会返回结果。这样就导致了客户端可以伪装,服务器可以伪装。导致了无意义的请求会照单全收,无法阻止DOS 攻击。 (2)可以使用证书来避免这一问题的发生。虽然使用 HTTP 协议无法确定通信方,但如果使用 SSL 则可以。SSL 不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。 3.无法证明报文完整性,可能已遭篡改 (1)接收的内容可能有误。由于 HTTP 协议无法证明通信的报文完整性,因此,在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉。 (2)如何防止篡改。提供文件下载服务的 Web 网站也会提供相应的以 PGP(Pretty Good Privacy,完美隐私)创建的数字签名及 MD5 算法生成的散列值。PGP 是用来证明创建文件的数字签名,MD5 是由单向函数生成的散列值。不论使用哪一种方法,都需要操纵客户端的用户本人亲自检查验证下载的文件是否就是原来服务器上的文件。浏览器无法自动帮用户检查。可惜的是,用这些方法也依然无法百分百保证确认结果正确。因为 PGP 和 MD5 本身被改写的话,用户是没有办法意识到的。为了有效防止这些弊端,有必要使用 HTTPS。SSL 提供认证和加密处理及摘要功能。仅靠 HTTP 确保完整性是非常困难的,因此通过和其他协议组合使用来实现这个目标。 二、HTTP+ 加密 + 认证 + 完整性保护 =HTTPS 1.HTTP 加上加密处理和认证以及完整性保护后即是HTTPS 2.HTTPS 是身披SSL 外壳的HTTP HTTPS 并非是应用层的一种新协议。只是HTTP 通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。通常,HTTP 直接和TCP 通信。当使用SSL 时,则演变成先和SSL 通信,再由SSL 和TCP 通信了。简言之,所谓HTTPS,其实就是身披SSL 协议这层外壳的HTTP。SSL 是独立于HTTP 的协议,所以不光是HTTP 协议,其他运行在应用层的SMTP 和Telnet 等协议均可配合SSL 协议使用。可以说SSL 是当今世界上应用最为广泛的网络安全技术。