https和http的区别

https和http的区别
https和http的区别

一直困扰于HTTP和HTTPS的区别,现在专门找一个时间来抓住痛点,解决掉该麻烦。

1. HTTP + 加密 + 认证 + 完整性保护 = HTTPS

我们知道HTTP是明文传输的,就必不可免存在如下问题:

?重要数据被明文获取

?通信双方可能被伪冒

?数据被篡改

一般获取简单数据用于展示的,可能无所谓以上的安全缺陷。但假如涉及类似银行密码的数据,就必须慎重考虑这一点了。

所以能够规避以上缺陷的HTTP就是HTTPS(HTTP Secure)。

1.1 如何做到加密 + 认证 + 完整性保护

我们都知道OSI7层模型,其中HTTP属于应用层协议,HTTP下一层是TCP(传输层协议)。完全性是一个难题,专注于传输速率的传输层协议TCP为了单一职责的理念,自是不会多管闲事去保证安全性而降低自身的传输速率的。

HTTP本身假如要去保证部分数据的安全性而去专注安全性的开发,也是得不偿失。想到这里,很是有一些学java感受到的职责单一、职责分离这样的思想,哈哈。所以应该就是这样,HTTP与TCP之间再加上一层SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议。

图1 截自《图解HTTP》

这样就算是明白HTTP、HTTPS的区别了吗?怎么可能呢?不去搞懂为啥就能安全了、为啥是SSL/TLS这两个什么东西、为啥用TLS而不是SSL?不搞明白这些问题,怎么能安心呢?

2. SSL/TLS是什么

图2 截自wikipedia

上一小节讲到,SSL/TLS是HTTP和TCP之间的中转协议。如图,可知SSL/TLS也是一个应用层的协议。

那么我们可以把SSL/TLS当作一个黑盒子,就像TCP、HTTP,我们知道数据先丢给HTTP,HTTP丢给SSL/TLS加密,然后SSL/TLS丢给TCP传输...诸如此类,其中具体细节,暂先不表。

3. SSL和TLS的区别与历史

Android 8.0禁用了SSL,所以我们一定非常好奇二者之间的区别,为什么会有两种协议,而且总是并列提起。

SSL是TLS的前身,SSL从1.0、2.0到3.0一步步修订,但安全性都不是非常完美。知道后来SSL3.0摇身一变变成TLS1.0,发展至今已经达到TLS1.2的稳定版本。另外18年今年,TLS1.3的草案也已经提出,在不断开发中吧

?SSL 1.0,未发布公开,因为严重的安全性漏洞

?SSL 2.0,1995.02,包含一些需要在SSL3.0解决的安全漏洞

SSL 2.0 在2011年被RFC 6176禁止

?SSL 3.0,1996,代表着该协议的完整重新设计,

SSL 3.0也在后来June 2015被RFC 7568禁止.

?TLS 1.0在January 1999首次在RFC 2246中定义,作为SSL 3.0的升级版本

?TLS 1.1April 2006在RFC 4346中定义

?TLS 1.2August 2008 在RFC 5246定义,基于TLS 1.1进行升级

所有TLS版本在2011年3月rfc 6176中进一步完善,取消了它们

对SSL的向下兼容,TLS再也不支持安全套接字层(SSL)2.0版。

TLS各个版本的更新情况可以看这里 - 维基百科

所以日常提起总是SSL/TLS,TLS是后来的所以放在后面。而维基百科是TLS/SSL,考虑的应该是TLS现在是主流吧。我们现在差不多也可以说成是TLS了,毕竟SSL 已经被禁用了。

以下有几张图,可以比较直观地说明,为什么用TLS,TLS相对于SSL有哪些优势:

图3 个版本支持的密钥交换/认证协议

图4 对抗公开的可行攻击的加密安全性

图5 数据完整性校验的支持

图6 网站支持程度以及安全性

图7 浏览器安全性发展历史

最后这一张太大了,截不完整,只能管中窥豹了。在此仅仅截下Android部分,毕竟是学习Android的。小伙伴们感兴趣自己到维基百科查看。

4. TLS/SSL工作机制

4.1 加密方法

共享密钥方式加密= 对称加密= 处理速度较快

公开密钥方式加密= 非对称加密= 更复杂,处理速度较慢

共享密钥方式加密只要密钥ok就足够安全,服务器只要把密钥交给客户端,然后通信过程中和客户端使用同一把密钥进行加密解密即可。毕竟是HTTP通信过程肯定是需要速度尽量快才是最好。

Q1:但是共享密钥如何安全地递交给对方?比如服务端如何把共享密钥安全交给客户端?

这时候就需要使用公开密钥方式加密。想用密文和公钥恢复到信息原文是异常困难的,相当于对离散对数进行求值,这不是轻而易举能达到的。(还是没有一个很好的概念,总之这很安全就对了)

发送方使用接收方的公钥对数据进行加密,然后接收方收到密文后使用密钥对数据进行解密。

接上一个问题:通信双方持有对方的公钥,发送共享密钥时使用公钥加密,就不怕共享密钥被获取了。

Q2:公钥毕竟是要发放出去的,如何证明发给客户端的过程中,公钥没有被替换掉呢?假如公钥被替换掉,伪冒者就可以假装成服务端和用户进行通信。

接下来就是数字证书认证机构出场。

HTTPS中,服务端将公钥发给数字证书认证机构进行安全认证并对公钥进行数字签名,完成后公钥和签名组合成数字证书。在和客户端通信时,服务端将数字证书发给客户端,客户端通过第三方安全认证机构发布的公钥(一般会在浏览器开发时,内置在浏览器中)对数字证书上的签名进行验证,假如验证通过,则能证明以下事实:

?认证该服务器的公钥的机构是真实有效的数字证书认证机构

?该服务器发过来的公钥是值得信赖的

因为通信双方都需要证明自己发出的公钥真实可靠,所以也就存在两种目的性不同的数字证书:可证明组织真实性的EV SSL证书、用以确认客户端的客户端证书

4.2 工作流程

TCP需要三次握手四次挥手,TLS/SSL也需要握手。

灵魂画手展示基本建立连接过程:

图3 TLS握手基本流程

以上这些ClientHello都是报文的名称,一个箭头表示一次报文发送。

?ClientHello:包含支持的TLS最高版本、随机数、加密组件(cipher suites)列表、支持的压缩方法

?ServerHello:根据ClientHello选择的TLS版本号、加密组件、压缩方法,以及随机数。假如连接需要从异常关闭中恢复,还会发送一个Session id。

?Certificate:包含公钥证书。(该次报文也可能不发送,取决于加密组件的选择)?ServerKeyExchange:取决于加密组件,所有DHE 和DH_anon 加密组件都会发送该报文。但google已经弃用DHE加密组件了,所以该报文在《图解HTTP》一书中甚至没有提及。

?ServerHelloDone:通知客户端,最初阶段的握手协商完成了。

?ClientKeyExchange:可能包含称为PreMasterSecret的随机密码串、公钥或者啥都不包含(取决于使用的加密组件),其中PreMasterSecret会使用Certificate报文中的数字证书中的公钥进行加密。

?The client and server then use the random numbers and PreMasterSecret to compute a common secret, called the

"master secret". All other key data for this connection

is derived from this master secret (and the client- and

server-generated random values), which is passed

through a carefully designed pseudorandom function.

粗劣翻译:客户端和服务器使用随机数和

PreMasterSecret,通过精心设计的伪随机函数来计算出一

个共同的密钥,称为“master secret”。当前连接的所有

其他密钥公钥数据都需由master secret(以及客户端和服

务器生成的随机值)派生。

?ChangeCipherSpec:告诉服务端,从现在起所有我发的信息都会经过认证了!

?Finished:该报文起就已经是加密认证过的报文了,其中包含了握手至今全部报文的整体散列值hash和MAC(Message Authentication Code)。服务端会试图解密该报文并验证hash和MAC。如果验证失败,这次握手就失败了,关闭。

?ChangeCipherSpec:告诉客户端,从现在起所有我发的信息都会经过认证了!

?Finished:客户端同样去解密该报文并校验。解密校验失败,一样会关闭握手。

?HTTP request/response:接下来就可以进行HTTP的请求了。

?close_notify:最后由客户端通知服务端进行关闭,发送close_notify报文。当然此时关闭的是TLS连接,继续下一层TCP的四次挥手依旧会进行。

https与http的区别

HTTP: http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。 万维网WWW发源于欧洲日内瓦量子物理实验室CERN,正是WWW技术的出现使得因特网得以超乎想象的速度迅猛发展。这项基于TCP/IP的技术在短短的十年时间内迅速成为已经发展了几十年的Internet上的规模最大的信息系统,它的成功归结于它的简单、实用。在WWW的背后有一系列的协议和标准支持它完成如此宏大的工作,这就是Web协议族,其中就包括HTTP超文本传输协议。 HTTPS: HTTPS,是以安全为目标的HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS 存在不同于HTTP 的默认端口及一个加密/身份验证层(在HTTP与TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。 HTTP 原理 ① 客户端的浏览器首先要通过网络与服务器建立连接,该连接

是通过TCP 来完成的,一般TCP 连接的端口号是80。建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME 信息包括请求修饰符、客户机信息和许可内容。 ② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME 信息包括服务器信息、实体信息和可能的内容。 HTTPS 原理 ① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器; ② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数 [2] ; ③ 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/ 解密),并将加密后的信息发送给服务器; ④ 客户端与服务器端根据pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和MAC密钥(参考DH密钥交换算法); ⑤ 客户端将所有握手消息的MAC 值发送给服务器;

https和http区别

http协议和https协议的区别:传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同 传输信息安全性不同 1、http协议:是超文本传输协议,信息是明文传输。如果攻击者 截取了Web浏览器和网站服务器之间的传输报文,就可以直接读 懂其中的信息。 2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服 务器之间的通信加密,确保数据传输的安全。 HTTP与HTTPS介绍 超文本传输协议HTTP协议被用于在Web浏览器和网站服务 器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方 式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间 的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适 合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS 在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全 HTTPS协议的主要作用可以分为两种:一种是建立一个信息 安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 HTTPS和HTTP的主要区别

1、https协议需要到CA申请证书,一般免费证书较少,因而需 要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具 有安全性的ssl/tls加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也 不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的;HTTPS协议是由 SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTPS的测试

基于安全协议的https的页面测试脚本 一、loadrunner8.1 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。 在使用https协议不管是服务器端还是客户端都需要使用到ca证书来进行访问。 一般来说,性能测试为所常见的为客户端使用https打开页面的方式。 在这个情况下,首先是处理https访问过程中的证书 1.证书的准备 常见的证书为:*.pfx,*.p12格式,该种格式的证书可以通过双击运行安装到IE浏览器上。用户在访问的时候就可以使用到。 但这些证书并不是LoadRunner所使用的类型,因此需要对其进行转换。将其转换为*.pem 格式。 转换方法如下: ●安装openssl后 ●运行C:\/bin文件夹的openssl二进制文件,它将启动OpenSSL命令提示符●执行以下命令:pkcs12 -in c:\test1.pfx -out c:\test01.pem –nodes ●或者直接在cmd下面执行:openssl pkcs12 -in c:\test1.pfx -out c:\test01.pem –nodes ●执行后,将会在指定目录生成test01.pem文件,这个文件将会在下一个步骤,对 LoadRunner进行配置的时候使用到。 2.LR配置 启动LoadRunner,打开Recording Option选项。

选择后,单击New Enty 红框中的配置为服务器的ip(或者域名)和端口号(ssl默认端口443),按照测试所需要的实际地址进行配置。 配置后,将Use specified client-side certificate[Base64/PEM]钩选,为使用客户端证书访问。 单击...选择刚刚转换生成的客户端证书。 如果你为证书有设置密码,在这里也需要输入。

https与http的区别

https与http的区别: 第一:http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议 http与https有什么区别 http和https使用的是完全不一样的连接方式,端口也不一样,前者默认是80端口 http与https有什么区别 http是无状态的协议,而https是由ssl+http构建的可进行加密传输、身份认证的网络协议。 http的无状态是指对事务处理没有记忆能力,缺少状态意味着对后续处理需要的信息没办法提供,只能重新传输这些信息,这样就会增大数据量。另一方面,当不需要信息的时候服务器应答较为快。 HTTP: HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。 HTTPS: HTTPS,是以安全为目标的HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS 存在不同于HTTP 的默认端口及一个

加密/身份验证层。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。 HTTP 原理 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP 来完成的,一般TCP 连接的端口号是80。建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符、协议版本号,后边是MIME 信息包括请求修饰符、客户机信息和许可内容。 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME 信息包括服务器信息、实体信息和可能的内容。 HTTPS 原理 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器; 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数; 客户端对服务器的证书进行验证,并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密,并将加密后的信息发送给服务器; 客户端与服务器端根据pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和MAC密钥(参考DH密钥交换算

https与http区别

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协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

Java获取http和https协议返回的json数据

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 =

https和http的区别

一、什么是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是如何实现数据加密的。

spring cloudspring boot同时支持http和https访问

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与http的区别

超文本传输协议(HTTP)用于在Web浏览器和Web服务器之间传输信息。HTTP协议以纯文本形式发送内容,而没有任何数据加密。如果攻击者拦截了Web浏览器和Web服务器之间的传输消息,则可以直接读取信息。因此,HTTP协议不适合传输一些敏感的兴趣消息,例如:信用卡号,密码和其他付款信息。 为了解决HTTP协议的这一缺陷,我们需要使用另一种协议:安全套接字层超文本传输协议(HTTP)。为了数据传输的安全性,SSL / TLS在HTTP的基础上添加了SSL / TLS协议。SSL / TLS通过证书验证服务器的身份,并对浏览器和服务器之间的通信进行加密。 HTTPS协议是由SSL / TLS + HTTP协议构建的网络协议,可用于加密传输和身份验证,并且比HTTP协议更安全 HTTPS协议的主要功能可以分为两种:一种是建立信息安全通道,以确保数据传输的安全性;另一种是建立信息安全通道。另一种是确认网站的真实性。 HTTPS和http之间的主要区别 HTTPS协议需要从ca申请证书。通常,免费证书很少,因此需要一定的费用。 HTTP是超文本传输协议,信息是纯文本传输,HTTPS是具有安全性的SSL / TLS加密传输协议。 HTTP和HTTPS使用完全不同的连接方法并使用不同的端口。前者是80,后者是443。 HTTP的连接非常简单且无状态。HTTP协议由SSL / TLS +

HTTP协议构建,可用于加密传输和身份验证,并且比HTTP协议更安全。 客户端使用HTTPS与Web服务器通信的步骤 客户端使用HTTPS的URL访问Web服务器,并要求与Web 服务器建立SSL连接。 收到客户端的请求后,Web服务器将向客户端发送网站证书信息的副本(证书包含公钥)。 客户端的浏览器和Web服务器开始协商SSL / TLS连接的安全级别,即信息加密级别。 客户端的浏览器根据双方同意的安全级别建立会话密钥,然后用网站的公共密钥对会话密钥进行加密,并将其传输到网站。 Web服务器使用其自己的私钥解密会话密钥。 Web服务器使用会话密钥来加密与客户端的通信。

https和http有什么区别

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申请证书,一般免费证书很少,需要交费。

强制http跳转https页面

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的文件末尾的前一句添加以下内容:

https和http区别

HTTPS和HTTP的主要区别: https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 HTTP和HTTPS的基本概念: HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 http切换到HTTPS: 如果需要将网站从http切换到https到底该如何实现呢?

这里需要将页面中所有的链接,例如js,css,图片等等链接都由http改为https。例如:https://www.360docs.net/doc/dc5493374.html,改为https://https://www.360docs.net/doc/dc5493374.html, BTW,这里虽然将http切换为了https,还是建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https 头。例如:将https://www.360docs.net/doc/dc5493374.html,改为//https://www.360docs.net/doc/dc5493374.html,。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

HTTPS原理及交互过程

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)少许对客户端有要求的情况下,会要求客户端也必须有一个证书。

47 https和http的区别

http和https有什么区别 https是什么? https, 全称Hyper Text Transfer Protocol Secure,相比http,多了一个secure,这一个secure是怎么来的呢?这是由TLS(SSL)提供的,这个又是什么呢?估计你也不想知道。大概就是一个叫openSSL的library提供的。https和http都属于application layer,基于TCP(以及UDP)协议,但是又完全不一样。TCP用的port 是80,https用的是443(值得一提的是,google发明了一个新的协议,叫QUIC,并不基于TCP,用的port也是443,同样是用来给https的。谷歌好牛逼啊。)总体来说,https和http类似,但是比http安全。 https做得怎么样? 一般来说网络安全关心三个问题,CIA,(confidentiality, integrity, availability)。那https在这三方面做的怎么样呢?https保证了confidentiality(你浏览的页面的内容如果被人中途看见,将会是一团乱码。不会发生比如和你用同一个无线网的人收到一个你发的数据包,打开来一看,就是你的密码啊银行卡信息啊),intergrity(你浏览的页面就是你想浏览的,不会被黑客在中途修改,网站收到的数据包也是你最初发的那个,不会把你的数据给换掉,搞一个大新闻),最后一个availability几乎没有提供(虽然我个人认为会增加基础DOS等的难度,但是这个不值一提),不过https还提供了另一个A,authentication(你连接的是你连接的网站,而不是什么人在中途伪造了一个网站给你,专业上叫Man In The Middle Attack)。那https具体保护了啥?简单来说,保护了你从连接到这个网站开始,到你关闭这个页面为止,你和这个网站之间收发的所有信息,就连url的一部分都被保护了。同时DNS querying这一步也被保护了,不会发生你输入 https://www.360docs.net/doc/dc5493374.html,,实际上跑到了另一个网站去了。(这个其实也属于authentication,我这里不是很确定,最开始还写错了一次,应该来说,https保护了DNS Spoofing 和DNS Cache Poisoning等DNS攻击)那么有哪些没有被保护的?你是谁,你访问了什么网站(这个就是anonymity,想要上不好的网站但是不被人知道?可以用VPN或者TOR,当然可能要付出金钱或者速度变慢的代价啦。)https怎么做到的? 这个就很复杂了。有兴趣的朋友可以看一下这个“The First Few Milliseconds of an HTTPS Connection”。我来简单介绍一下里面的一些手段。比如你如何确信这个网站是一个好网站?好网站就会有一个“好网站证书”,也就是certification,这个证书是由CA(certificate authority)颁布的,每次链接,网站都先去找CA拿一份证书,然后把这个证书一起发给客户,来证明自己的清白。也许你会问,万一是一个坏网站自己伪造的证书呢?这就要牵扯到RSA的公钥,私钥加密。不过,google 的https是他们自己公司的一个CA发的,感觉怪怪的。总之,你基本可以相信这是一个好网站(历史上也有CA被入侵之类的事件发生)。这就是authentication (应该也是保护DNS的一步)。当然你也会需要向网站证明一下你自己的身份,然后你们就要决定用什么方式加密。加密的方式有很多种,比如各种AES啦什么的。客户告诉网站,我的浏览器支持哪些加密方式,然后网站选择其中一种,于

http与https的区别

http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。 万维网WWW(world wide web)发源于欧洲日内瓦量子物理实验室CERN,正是WWW技术的出现使得因特网得以超乎想象的速度迅猛发展。这项基于TCP/IP的技术在短短的十年时间内迅速成为已经发展了几十年的Internet上的规模最大的信息系统,它的成功归结于它的简单、实用。在WWW的背后有一系列的协议和标准支持它完成如此宏大的工作,这就是Web协议族,其中就包括HTTP 超文本传输协议。 HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的HTTP 通道,在HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS 存在不同于HTTP 的默认端口及一个加密/身份验证层(在HTTP与TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。 HTTP 原理 ① 客户端的浏览器首先要通过网络与服务器建立连接,该连接

是通过TCP 来完成的,一般TCP 连接的端口号是80。建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME 信息包括请求修饰符、客户机信息和许可内容。 ② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME 信息包括服务器信息、实体信息和可能的内容。 HTTPS 原理 ① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器; ② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数 [2] ; ③ 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/ 解密),并将加密后的信息发送给服务器; ④ 客户端与服务器端根据pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和MAC密钥(参考DH密钥交换算法); ⑤客户端将所有握手消息的MAC 值发送给服务器;

HTTPS为什么比较安全

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的具体实现。

C#Get请求区分http和https地址并压缩返回结果防止数据流截断

///

///请求数据 /// ///请求地址 ///是否需要压缩 ///接口返回信息 privatestring GetRequest(string Url, bool Gzip) { HttpWebRequest request = null; Encoding srcEncoding = Encoding.Default; Encoding dstEncoding = Encoding.Default; if (Url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { request = WebRequest.Create(Url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; //http版本,默认是1.1,这里设置为1.0 } else { request = WebRequest.Create(Url) as HttpWebRequest; } if (Gzip) request.Headers.Add("Accept-Encoding", "gzip"); request.ContentType = "application/json"; request.Method = "GET"; request.ReadWriteTimeout = 10000;//设置写入或读取流时的超时 string Result = string.Empty; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.ContentEncoding.ToLower().Contains("gzip")) { using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress)) { using (StreamReader reader = new StreamReader(stream)) { Result = reader.ReadToEnd(); } } } elseif (response.ContentEncoding.ToLower().Contains("deflate")) {

http和https有什么区别

http和https最主要的差别就是http是明文传输数据,而https传输的数据经过加密。 什么是http HTTP,英文全称Hyper Text Transfer Protocol,中文全称“超文本传输协议”,按照OSI参考模型,它属于第七层应用层的协议。HTTP的作用是提供了一组规则和标准,用于控制如何在万维网上传输任何信息,提供了Web 浏览器和服务器进行通信的标准规则。目前主要使用的是HTTP/1.0 和HTTP/1.1 两个版本,主流使用的是HTTP/1.1。

http使用场景 当在浏览器输入网址按回车之后,默认自动会在网址前面加上http://。它表示浏览器与web服务器通过http协议进行连接和传输数据。当浏览器获得http响应之后,会进行渲染,变成我们可以看到的网页。 http工作原理

http是基于C/S结构的协议,浏览器在向服务器发送请求之前,首先需要建立TCP连接,然后才能发送HTTP请求报文,并接收HTTP响应报文。 http请求响应过程大概可以分为四步: (1)客户端请求服务器建立连接; (2)连接建立后,客户端向服务器发送http请求; (3)服务器接收到http请求后,并根据请求做相应的响应; (4)完成请求之后,客户端与服务端断开连接。 什么是https https,英文全称Hyper Text Transfer Protocol over SecureSocket Layer,中文全称超文本传输安全协议。是在http的基础上加上TLS/SSL协议,通过加密传输和身份验证保证传输的安全性。https最初是基于ssl,后来 ssl协议升级并命名为tls协议,目前tls协议最新版本是tls1.3,主流使用的是tls1.2版本。

linux下https和http的配置方法

HTTP的配置 在Linux上运行https://www.360docs.net/doc/dc5493374.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.360docs.net/doc/dc5493374.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网站名

相关文档
最新文档