不知道小伙伴注意到没有,不知不觉中,我们常用的网站都已经采用了HTTPS加密;Chrome把HTTP网站标记为不安全,Apple要求所有IOS App全部采用HTTPS加密。那么本期我们就来介绍一下HTTPS。


01

HTTPS介绍



要介绍HTTPS,先得说一下HTTP。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP 协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,于是,诞生了HTTPS。简单来说HTTPS是HTTP的安全版,是使用 TLS/SSL 加密的 HTTP 协议。TLS/SSL 具有身份验证、信息加密和完整性校验的功能。

02

TLS介绍




TLS(Transport Layer Security,安全传输层),TLS是建立在传输层TCP协议之上的协议,服务于应用层,它的前身是SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。

我们一起来回顾一下SSL/TLS的发展历程:

SSL 1.0  版本从未公开过,因为存在严重的安全漏洞。

1995年:SSL 2.0 版本在1995年2月发布,但因为存在数个严重的安全漏洞而被3.0版本替代。

1996年:SSL 3.0  写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。SSL 3.0的漏洞允许攻击者发起降级攻击。

1999年:TLS 1.0  互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。

2006年:TLS 1.1  作为 RFC 4346 发布。主要修复了CBC模式相关的如BEAST攻击等漏洞。

2008年:TLS 1.2  作为 RFC 5246 发布 。提供现代加密算法(AEAD),增进安全性,目前主要使用的版本。

2018年:TLS 1.3  作为 RFC 8446 发布。,支持0-rtt,大幅增进安全性,砍掉了AEAD之外的加密方式。

目前通过wireshark抓包,可以看到,使用的都是 TLS 1.2,同时window服务器应该禁用默认的 SSL 2.0 和 SSL 3.0 只启用 TLS 1.2 保证安全。



03

HTTPS就绝对安全了吗

HTTPS就绝对安全了吗,也不是,下面说一种攻击方式--中间人攻击:



你以为你在跟服务器通信,其实不是……

在我们测试工作中,会用fiddler或者burpsuite抓取https包,利用的就是中间人攻击这个原理。

以后有机会再介绍如何抓取HTTPS包。




作者:测试之心
链接:https://www.jianshu.com/p/7422a96ecdf8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


.net项目,http升级为https,分为两种情况:1.有域名 2.无域名,网站通过ip访问


有域名

大多数网站是这种情况,通过域名访问系统,有域名就可以去腾讯云或者其他云平台申请经过CA认证的SSL证书,这样的证书配置后,在浏览器的地址前面显示该网站是安全的




1.证书的申请

Tomcat配置SSL证书实现https


2.证书部署

SSL 证书 IIS 服务器 SSL 证书安装部署


3.防火墙开通端口

如果有新增端口,需要在防火墙中开通对新端口的访问,如果没有开通新的端口,则无需操作。


没有域名

没有域名的网站,可以通过使用java JDK内置的Keytool工具创建证书。


创建的证书再转换成IIS服务器支持的数字证书,该方式生成的证书也叫自签名证书,这类证书部署后网站会提示不安全,如下图所示:




操作操作步骤:


1.下载java JDK

文件下载地址:


javajkd1.8.0-Java文档类资源-CSDN下载


2.在jdk的bin目录打开命令窗口



3.生成密钥

在命令行窗口中输入下面命令,生成密钥


keytool -genkeypair -alias sw -dname cn=192.168.7.2 -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 36500 -storepass 123456 -storetype PKCS12 -keypass 123456 -keystore H:\sw.keystore




以上命令执行后,会在电脑的H盘下生成 sw.keystore 文件(根据个人电脑的实际盘符选择生成密钥的位置)。 


下面是对命令中参数的说明: 


alias:证书的别名,可根据项目名来设定;


dname:证书的使用者签名,这里写入的是:cn=192.168.7.2,表示使用者名称是IP为192.168.7.2的服务器;


keyalg:密钥算法,有:RSA、DSA、DE,这里设置为RSA;


keysize:密钥长度,这里设置为2048;


sigalg:签名算法,当密钥算法设为RSA时,可以设置的签名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA,这里设置为:SHA256withRSA ;


validity:证书有效天数;


storepass :密钥库密码;


storetype :密钥库类型,这里设置为 PKCS12 ;


keypass :密钥密码,尽量与密钥库密码保持一致;


keystore :密钥库名称,可以是绝对路径。


也可以使用命令行查看各参数含义:




4. 将sw.keystore 转换成 pfx 格式文件

keytool -importkeystore -srckeystore H:\sw.keystore -destkeystore H:\sw.pfx -srcstoretype JKS -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456




下面是对命令中参数的说明: 


srckeystore :源密钥库路径,这里的设置值与步骤3中的keystore对应;


destkeystore :目标密钥库路径,目标证书库文件的后缀名要设置为pfx;


srcstoretype :源密钥库类型,设置为JKS;


deststoretype :目标密钥库类型,设置为PKCS12;


srcstorepass :源密钥库密码,这里的设置值与步骤3中的storepass对应;


deststorepass :目标密钥库密码,尽量与源密钥库密码保持一致。


5.证书部署

SSL 证书 IIS 服务器 SSL 证书安装部署


6.防火墙开通端口

如果有新增端口,需要在防火墙中开通对新端口的访问,如果没有开通新的端口,则无需操作。

————————————————

版权声明:本文为CSDN博主「梁萌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/liangmengbk/article/details/124377128


一、HTTP和HTTPS的基本概念

HTTP:超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:安全套接字层超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer)。是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和SSL支持使用X.509数字认证,用户可以确认发送者是谁,它的主要作用有两种:1、建立一个信息安全的通道,来保证数据传输的安全;2、确认网站的真实性。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据加密传输,网景公司设计了SSL(Sercure Socket Layer)协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。具体的区别如下:

1、HTTPS更安全:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议的信息明文传输安全;
2、HTTPS需要申请证书:HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费,费用大概与.com域名差不多,每年需要大约几十元的费用。而常见的HTTP协议则没有这一项;
3、端口不同:HTTP使用的是大家最常见的80端口,而HTTPS连接使用的是443端口;
4、安全性不同:HTTP的连接很简单,是无状态的。而HTTPS协议是SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全;

三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

image

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

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

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

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

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

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

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

四、http切换到HTTPS

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

再来看一下https协议:

我们都知道HTTP并非是安全传输,而HTTPS是相对安全的,在传输数据之前,需要客户端和服务进行一次握手,在握手过程中确立双方加密传输数据的密码信息,然后在后续通信过程中就使用协商密钥进行对称加密通信。具体过程见下图:

image

1)客户端发起HTTPS请求

即用户在浏览器里输入一个https网址连接到服务器端口。

2)服务端初步响应

采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥,可以想象成一把钥匙和一个锁头,只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。将证书发回给浏览器,证书包含证书的颁发机构、过期时间等。

3)客户端解析证书

客户端首先会验证证书是否有效,比如颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致、过期时间等,如果发现异常,则提示证书存在问题,如果证书没有问题,那么客户端就生成一个随机值,然后用证书对该随机值进行加密。

4)客户端发送加密信息

客户端发送的是用证书加密后的随机值。

5) 服务器解密信息

服务端用私钥解密后,得到了客户端传过来的随机值,然后把内容通过该值进行对称加密(所谓对称加密就是将信息和私钥通过某种算法混合在一起)。

6)服务器发送加密后的信息

服务器发送的是服务端用随机值进行对称加密后的信息。

7) 客户端解密信息

客户端用之前生成的随机值解密服务端传过来的信息,客户端就获取了解密后的内容。

五、HTTPS的优点

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

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

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

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

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

六、HTTPS的缺点

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

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

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

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

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

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



作者:凌云01
链接:https://www.jianshu.com/p/d0b6e69b27b7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


当这些年来HTTP已经“足够好”时,为什么要切换到HTTPS?开关和开关的成本是否值得花时间和精力?是什么让HTTPS比HTTP更可靠?为什么要购买SSL证书?好吧,当我们比较这两种协议并向您展示https的好处时,您会得到答案。



HTTPS提供额外的安全性



顾名思义,HTTPS比HTTP安全得多。SSL/TLS证书可帮助您保护在您的网站和客户端之间传输的数据。当数据通过互联网传输时,它会在到达最终目的地之前在许多服务器之间反弹。网络犯罪分子有很多机会来破坏它。



如果您使用的证书可以验证您的身份,它还可以保证您网站的真实性,以便用户知道他们可以相信他们的数据是安全的。这也可以帮助您使您的网站从冒名顶替(网络钓鱼)网站中脱颖而出。



HTTPS帮助您的网站避免显示丑陋的“不安全”消息



正如我们之前提到的,没有人喜欢在网站上看到警告信息,这些信息会大喊“这个网站是安全的——快跑!”但这基本上是当您在网站上使用不安全的HTTP协议而不是安全的HTTPS协议时发生的情况。



当您尝试打开HTTP网站时,Chrome中显示的“不安全”警告消息的屏幕截图。



“不安全”显然表明两个设备之间的连接不安全。这意味着任何查看连接的人都可以轻松查看正在传输的内容,包括登录凭据、社会保险号和信用卡号。



HTTP通过80端口发送数据,而HTTPS通过443端口发送数据。HTTP只运行在应用层,而HTTPS运行在传输层,使用PKI技术和流程。这些技术差异是使HTTP网站“不安全”的安全协议的一部分。



HTTPS通过身份增加信任



当您网站的访问者用挂锁阅读您网站上的“HTTPS”时,他将能够相信与您网站的连接是安全的,并且没有人能够拦截它。正如我们刚才提到的,如果大多数消费者在他们的屏幕上看到“HTTP”和“不安全”警告,他们将不会从您的网站购买。他们为什么要这样做?在您的网站上显示该消息表明您显然不关心他们的安全!



吸引消费者的最有效方法之一是保证其数据的安全性。但是安全和安全是有区别的。使用加密来保护数据是一回事,但如果用户不知道谁在另一端接收他们的数据,这对用户没有任何好处。这就是为什么您的组织的数字身份很重要。



拥有电子商务业务与经营实体店有很大不同。当您在网上开展业务时,您不一定了解您的客户个人——更重要的是,他们并不了解您。因此,在某些方面,这些交易是在两个陌生人之间进行的。在这种情况下,信誉良好且值得信赖的第三方有必要向用户(及其Web客户端/浏览器)保证您是真正的企业主,拥有良好的声誉并且值得信赖。



帮助人们了解他们真正在与谁交谈的最佳方法是通过可验证的方式确认您的身份。这就是使用OV或EV证书真正派上用场的地方。在CA可以颁发SSL/TLS证书之前,他们必须花费数天时间检查您的业务以确保它是合法的。这需要将网站所有者提供的信息与各种官方第三方来源进行比较,并使用其他验证方法。只有当他们确定您的业务合法时,他们才会为您的网站颁发证书。



HTTPS提高您网站的Google搜索引擎排名



在搜索引擎上排名对任何网站都至关重要。当访问者在搜索引擎上输入查询时,搜索引擎将使用许多不同的因素对网站进行排名。根据SearchEngineJournal报告,Google搜索中的第一个自然搜索结果的点击率最高,为28.5%。第二个和第三个结果的比率分别为15%和11%,而第10个结果则暴跌至区区2.5%。



因此,您应该尽一切努力提高您的搜索引擎排名。在您的网站地址之前拥有SSL证书和HTTPS是您可以实现该目标的方法。



拥有HTTPS可以保护您免受PCI/DSS处罚



支付卡行业数据安全标准(PCIDSS)是一项信息安全标准,通过任何主要信用卡接受付款的企业都必须遵守该标准。如果您不遵守协议,那么您可能会受到处罚,并面临Visa、MasterCard和AmericanExpress等信用卡公司的巨额罚款。



下图取自PCI安全标准指南。要求提供信用卡持有人数据的网站必须绝对确保此类数据受到保护。此外,数据在传输时被充分加密。因此,当您在这种情况下谈论HTTP与HTTPS时,您就知道支付卡行业站在哪一边。



如何为您的网站获取HTTPS



如果您想为您的网站获得HTTPS的好处,您可以从知名经销商处获得您的SSL证书。像Gworg这样的公司以合理的价格为客户提供各种证书。当您选择从我们这里购买SSL证书时,您可以享受许多折扣。



关于HTTP和HTTPS区别的结论



既然您知道HTTP和HTTPS之间的区别,您就可以指出哪些网站对您来说是安全的(和不安全的)购物。自2014年以来,Google将网站的安全性(或缺乏安全性)视为排名因素。您还将观察到大多数没有HTTPS的网站在您输入关键字以在其搜索引擎上搜索某些内容时不会出现。这些网站将隐藏在称为万维网(即谷歌的第一个搜索引擎结果页面之后的任何内容)的山谷中。除非您专门寻找它们,否则您将找不到它们。



在HTTP与HTTPS的战斗中,只有一个能够脱颖而出。显然,这是HTTPS,因为它依赖于身份和PKI安全优势。但是,作为一个互联网社区,我们在从整体上从HTTP切换到HTTPS方面走了多远?Google的透明度报告显示,截至2021年1月,所有网站中有95%已实现加密。因此,如果您仍有HTTP网站,现在是转换为HTTPS的时候了。



转载自品略图书馆 http://www.pinlue.com/article/2020/04/0611/3510119404305.html

  https为什么比http更安全?学过网络技术的小编来告诉你。

  防止运营商劫持

  如果你要访问.com,不是直接到.com的,需要中间有很多的服务器路由器的转发。

  假设你是可信的,.com也可信,但是中间的节点就未必。

  比如

 

  这11个节点,任何一个都可以串改你的信息和发给你的信息。

  实际上运营商劫持就是这些节点中一些小子为了盈利而修改发给你的html,嵌入他的广告。

  如果是https,这些节点个个都不知道你和.com到底在发些啥,也没有办法改,因为秘钥只有你和.com才有。

  所以,https防止的是中间节点使坏。这在我们的场景下,是非常好有价值的。

  https仅仅只是在传输过程中加密了。

  举个例子:

  A给B写信,写完邮寄给B,但是在邮寄的过程中,邮递员可能会偷偷的把信取出来看完后再放回去,收发室大爷可能也会偷偷取出来看一眼,B收到信的时候,可能在传输过程中已经被很多人看过了。如果信件中有一些银行卡账号密码什么的,可能在传输过程中已经被别人悄悄记下来了。这就是HTTP。

  A和B发现了这个问题,于是他们约定了下次写信要加密,A写信的时候加密,B收到信在解密,加密解密的方法只有A和B知道。同样在寄信的过程中,邮递员、收发室大爷偷偷看了信,但是完全看不懂,信件的内容不会泄露,就安全的多。这就是https。

  所以通常在浏览一般网页的时候,可能不会用https,而在用户登录需要输入密码时,会用https,因为登录肯定要传输用户名密码,不加密可能就会被别人看到。

  用https就告别了运营商劫持。

  什么是运营商劫持?

  运营商会在一些流量大的网站,加上一些小广告来增加收入。有时候你打开百度,会在右下角弹出一个广告,这个广告不是百度加上的,是运营商加的。

  也就像上面例子中,邮递员不但打开看了你的信件,而且在你的信件上加入小广告,让你以为是A加的。如果https加密,邮递员是无法将小广告加密放到你的信中。

  https比http安全指的是数据传输过程,而不是服务器后台的安全防护。https只能防止别人直接监听数据包拿到传输内容而已,对于服务器漏洞或者sql注入之类的,https并没有任何比http高明的地方

  简单点说就是:

  http明文,就是明信片,别人拿到了就可以看到内容。

  https是上锁的保险箱。别人拿到了也开不了锁(就目前的计算机性能来说没办法暴力破解https数据包)