×

htts与http的区别
  

sailyang 12133

{{ttag.title}}
 HTTP(Hypertext transfer protocol,超文本传输协议)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。简单来说,HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

  HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

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

  HTTPS和HTTP的区别主要如下:

  ①https协议需要用到ca申请证书,一般免费证书较少,因而需要一定费用。

  ②http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  ③http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  ④http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议更安全。

  一般来说,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等安全级别较高的服务都会采用HTTPS协议。客户端在使用HTTPS方式与Web服务器通信时的示意图如下:

上面示意图的步骤可以描述如下:

  ①客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

  ②Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

  ③客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

  ④客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

  ⑤Web服务器利用自己的私钥解密出会话密钥。

  ⑥Web服务器利用会话密钥加密与客户端之间的通信。


尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

  ①使用HTTPS协议可以认证用户和服务器,确保数据发送到正确的客户机和服务器;

  ②HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

  ③HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

  ④谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

  虽然HTTPS有很大的优势,但是相对来说,还是存在一些不足之处:

  ①HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

  ②HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

  ③SSL证书需要花钱,功能越强大的证书费用越高,个人网站、小网站没有必要,一般不会用。

    ④SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

  ⑤HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

  那么,http如何切换到https呢?

  这需要将页面中所有的链接,例如js,css,图片等链接都由http改为https。例如:http://www.baidu.com改为https://www.baidu.com

  接下来,我们演示实现一个https。

  JDK自带工具keytool可以生成ssl证书,也就是自己生成的证书,并不是官方生成的证书。如果官方生成的证书,通常需要为其支付一定费用。

  以win7系统为例,打开cmd窗口,在里面按照下述步骤操作:

1.为服务器生成证书
keytool -genkey -alias dahuang -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore C:\Users\Administrator\Desktop\https\ssl\dahuang.keystore -storepass 123456

其中,
-alias dahuang(别名)
-keypass 123456(别名密码)
-keyalg RSA(算法)
-keysize 1024(密钥长度)
-validity 365(有效期,天单位)
-keystore C:\Users\Administrator\Desktop\https\ssl\dahuang.keystore(指定生成证书的位置和证书名称)
-storepass 123456(获取keystore信息的密码)

2.为客户端生成证书
keytool -genkey -alias dahuangClient -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore C:\Users\Administrator\Desktop\https\ssl\dahuangClient.p12 -storepass 123456

3.由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件
keytool -export -alias dahuangClient -keystore C:\Users\Administrator\Desktop\https\ssl\dahuangClient.p12 -storetype PKCS12 -keypass 123456 -file C:\Users\Administrator\Desktop\https\ssl\dahuangClient.cer

4.将客户端的cer文件导入到服务器的证书库,添加为一个信任证书
keytool -import -v -file C:\Users\Administrator\Desktop\https\ssl\dahuangClient.cer -keystore C:\Users\Administrator\Desktop\https\ssl\dahuang.keystore -storepass 123456

5.让客户端信任服务器证书
keytool -keystore C:\Users\Administrator\Desktop\https\ssl\dahuang.keystore -export -alias dahuang -file C:\Users\Administrator\Desktop\https\ssl\dahuang.cer
  上述命令执行完毕后,会相继在指定路径产生这些文件:


接下来,双击dahuang.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。

  接着,以IE浏览器为例,打开浏览器   - 工具  -  internet选项-内容- 证书-受信任的根证书颁发机构里,导入我们上述生成的证书就OK了。

  这时,在tomcat的conf/server.xml文件中添加下述配置(文件路径请跟进自己的实际情况进行,还要避免端口冲突):

<Connector  port="2443"
                        protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
                        maxThreads="150"
                        scheme="https"
                        secure="true"
                        clientAuth="false"
                        sslProtocol="TLS"
                        keystoreFile="C:\Users\Administrator\Desktop\https\ssl\dahuang.keystore"
                        keystorePass="123456"
                        truststoreFile="C:\Users\Administrator\Desktop\https\ssl\dahuang.keystore"
                        truststorePass="123456" />
  注意:上述配置信息中的双引号"务必确保英文状态下,避免中文状态下的双引号,否则会使得tomcat无法启动。

  属性说明:

  port:要访问https请求,需要访问2443端口,访问http请求则访问Tomcat默认端口(默认8080)即可。

  clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证。如果设置clientAuth属性为True时,需要手动导入客户端证书才能访问。

  keystoreFile:服务器证书文件路径。

  keystorePass:服务器证书密码。

  truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书。

  truststorePass:根证书密码。 

  接下来,在tomcat的webapps中放置了demo/data.txt,开启tomcat服务器,在浏览器中访问https://localhost:2443/demo/data.txt,如果有提示"安装证书问题"可以忽略,便可以实现https访问,也就是经过SSL信息加密。总的来说,客户端与服务器通信双方,必须都拥有证书,才能进行会话。

  另外,如果我们想要使得正常的http访问均强制改为https访问,可以在tomcat的conf/web.xml 中的 </welcome-file-list> 后面加上这样的配置:

<login-config>
        <!– Authorization setting for SSL –>
        <auth-method>CLIENT-CERT</auth-method>
        <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
        <!– Authorization setting for SSL –>
        <web-resource-collection>
            <web-resource-name>SSL</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
  这是,在浏览器中中输入http的访问地址也会自动转换为https了。

260475c2ca894d51e8.png (12.01 KB, 下载次数: 282)

260475c2ca894d51e8.png

打赏鼓励作者,期待更多好文!

打赏
4人已打赏

大white 发表于 2019-1-4 13:12
  
这种好文章要收藏
文文哒 发表于 2019-1-7 09:15
  
学习了https与http的区别,没看懂
airbus 发表于 2019-1-15 16:09
  
要赞好文章
avic 发表于 2019-1-17 14:58
  
太牛逼了!!
念友真爱 发表于 2019-1-18 04:50
  
好帖,专业,有时间的话,我得挨个抠字眼,认认真真的学习一下。
jimes 发表于 2019-2-28 09:21
  
学习了,谢谢分享!
新手589624 发表于 2020-2-7 08:34
  
先收藏,再学习
新手589624 发表于 2020-3-2 08:12
  
学习感谢
新手325719 发表于 2020-3-4 21:16
  
打卡学习
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
安全效果
干货满满
西北区每日一问
技术笔记
新版本体验
功能体验
【 社区to talk】
技术咨询
标准化排查
2023技术争霸赛专题
产品连连看
GIF动图学习
信服课堂视频
每周精选
自助服务平台操作指引
秒懂零信任
技术晨报
技术圆桌
通用技术
答题自测
安装部署配置
每日一记
原创分享
玩转零信任
场景专题
升级&主动服务
社区新周刊
畅聊IT
专家问答
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
故障笔记
排障那些事
高手请过招
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版版主

12
185
6

发帖

粉丝

关注

121
316
352

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人