什么是https
浏览器访问web应用中使用到http协议和ssl或者tsl协议的组合称为https。https在原有http协议的基础上结合ssl或者tsl为我们提供安全的访问机制。http属于应用层协议,直接与tcp交互进行通讯。当安全要求比较高的情况下,需要用到tsl或者ssl协议,此时http先与ssl进行交互,再由ssl与tcp交互完成通讯。所以https也称为身披ssl协议的http。
为什么需要https
为什么需要https,因为http无法保证通讯的安全性。当需要传输一些比较私密的信息,如银行卡号、密码等需要绝对保证安全性的信息时,http无法满足需求。http的非安全性主要体现在以下几个方面。
1. 通讯使用明文,内容不加密,可能会被窃听;
2. 无法验证通讯方的身份,因此有可能遭遇伪装;
3. 无法验证报文的完整性,报文有可能被篡改;
实现https的相关技术
1. 加密算法
- 对称加密
- 非对称加密
所谓对称加密即加密和解密使用相同的密码,数据加密标准DES即使用对称秘钥体制。这种加密方式,最大的问题就是密码的转交。
所谓非对称加密,是指加密和解密使用不同的密码,加密使用的密码称为公钥,是公开的,解密使用的密码称为私钥,是非公开的。RSA加密算法即是非对称加密,这种加密的方式,目前最大的问题是加密比较耗时。
2. CA
CA是指数字证书认证结构,一般是由社会公认可信赖的第三方机构承担。如果有服务器运营人员需要申请公开秘钥,CA机构将该秘钥做数字签名(这个签名使用的是CA机构的私钥),然后将这个已签名的公开密码放入公钥证书中形成一份数字证书。
3. 数字证书
服务器公开秘钥通过CA机构进行数字签名形成的一个公钥证书
4. 数字签名
签名是指可以确认主体的一个特征,数字签名利用非对称加密算法来达到确认主体的目的。首先A主体有一对秘钥,A将明文用私钥加密后发送给B,B在接收到密文后用A公开的公钥进行解密,如果解密成功则可以确定报文的主体是A,因为只有A拥有对应的私钥。
SSL利用以上技术解决了http的缺陷,保证了以下三点
1. SSL服务器鉴别
允许用户证实服务器的身份。支持SSL功能的浏览器维持这个表,上面有一些可信的认证中心CA以及其公钥。当浏览器访问一个SSL服务器是,浏览器从服务器得到含有服务器公钥的数字证书。此证书由某一个CA认证机构颁发。因为数字证书是否CA机构进行过数字签名的,此时可以用CA机构的公钥(已在浏览器中维护)进行认证。如果认证通过,则可以确定,服务器的身份以及服务器公钥的有效性。
2. 加密SSL会话
加密SSL会话。SSL使用对称加密和非对称加密并用的混合加密体制。在确认完服务器身份后,得到服务器公钥,浏览器生成一个随机的密码串并用服务器公钥进行加密,然后告诉服务器,以后双方用此秘钥进行通讯。交互秘钥的过程使用的是非对称加密,真实的通讯过程使用的是对称加密,所以整个过程是混合加密。
3. SSL客户鉴别
SSL客户鉴别。允许服务器鉴别客户的身份,当有一些非常敏感的信息需要从服务器发送给客户端的时候就需要进行客户端鉴别,例如银行(银行的U盾就是这个作用)。进行客户端鉴别,客户端同样需要向CA机构申请数字证书,并进行安装,由于数据证书的收费原因以及安装原因,客户端证书没得以推广。
https实现流程
-
支持SSL协议的浏览器预装了大部分可信赖机构的CA证书,Google浏览器中可在管理证书中查看CA证书的详细信息。其中最重要的一个是CA证书的公钥;
image
- 服务器向CA机构申请包含公钥的数字证书,该数字证书已经被CA机构的私钥做过数字签名;
- 当浏览器通过https访问服务器web应用的时候,浏览器会自动下载服务器的数字证书,然后服务器找到该证书对应CA机构的公钥,用来验证证书是否真实有效,并从证书中得到服务器的公钥。此步骤数字签名验证成功后,便可确认服务器的身份;
- 浏览器生成随机密码,并用公钥进行加密,发送给服务器(非对称加密);
- 服务器接收到密码后用私钥解密,得到随机密码,之后双方通讯加密过程使用此随机密码(对称加密);
https的优缺点
优点
- 通信加密处理(秘钥实现)
- 通信方认证(证书实现)
- 内容完整性保护(秘钥实现)
缺点
- https通信需要消耗更多的服务器和客户端硬件资源,导致负载增强;
- https中使用到的证书需要收费;
网友评论