SSL协议
SLL协议的握⼿过程
开始加密通信之前,客户端和服务器⾸先必须建⽴连接和交换参数,这个过程叫做握⼿(handshake)。第⼀步,客户端给出协议版本号、⼀个客户端⽣成的随机数(Client random),以及客户端⽀持的加密⽅法。
第⼆步,服务器确认双⽅使⽤的加密⽅法,并给出数字证书、以及⼀个服务器⽣成的随机数(Server random)。
第三步,客户端确认数字证书有效,然后⽣成⼀个新的随机数(Premaster secret),并使⽤数字证书中的公钥,加密这个随机数,发给服务器。
第四步,服务器使⽤⾃⼰的私钥,获取客户端丝发来的随机数(即Premaster secret)。
第五步,客户端和服务器根据约定的加密⽅法,使⽤前⾯的三个随机数,⽣成\"对话密钥\"(session key),⽤来加密接下来的整个对话过程。
私钥的作⽤
1)⽣成对话密钥⼀共需要三个随机数。
(2)握⼿之后的对话使⽤\"对话密钥\"加密(对称加密),服务器的公钥和私钥只⽤于加密和解密\"对话密钥\"(⾮对称加密),⽆其他作⽤。
(3)服务器公钥放在服务器的数字证书之中。
DH算法的握⼿阶段
整个握⼿阶段都不加密(也没法加密),都是明⽂的。因此,如果有⼈窃听通信,他可以知道双⽅选择的加密⽅法,以及三个随机数中的两个。整个通话的安全,只取决于第三个随机数(Premaster secret)能不能被破解。
虽然理论上,只要服务器的公钥⾜够长(⽐如2048位),那么Premaster secret可以保证不被破解。但是为了⾜够安全,我们可以考虑把握⼿阶段的算法从默认的,改为 (简称DH算法)。
采⽤DH算法后,Premaster secret不需要传递,双⽅只要交换各⾃的参数,就可以算出这个随机数。
session的恢复
握⼿阶段⽤来建⽴SSL连接。如果出于某种原因,对话中断,就需要重新握⼿。
这时有两种⽅法可以恢复原来的session:⼀种叫做session ID,另⼀种叫做session ticket。
session ID的思想很简单,就是每⼀次对话都有⼀个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双⽅就可以重新使⽤已有的\"对话密钥\",⽽不必重新⽣成⼀把。
session ID是⽬前所有浏览器都⽀持的⽅法,但是它的缺点在于session ID往往只保留在⼀台服务器上。所以,如果客户端的请求发到另⼀台服务器,就⽆法恢复对话。session ticket就是为了解决这个问题⽽诞⽣的,⽬前只有Firefox和Chrome浏览器⽀持。
HTTPS和HTTP的区别
超⽂本传输协议HTTP协议被⽤于在Web浏览器和⽹站服务器之间传递信息。HTTP协议以明⽂⽅式发送内容,不提供任何⽅式的数据加密,如果攻击者截取了Web浏览器和⽹站服务器之间的传输报⽂,就可以直接读懂其中的信息,因此HTTP协议不适合传输⼀些敏感信息,
⽐如信⽤卡号、密码等。
为了解决HTTP协议的这⼀缺陷,需要使⽤另⼀种协议:安全套接字层超⽂本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加⼊了SSL协议,SSL依靠证书来验证服务器的⾝份,并为浏览器和服务器之间的通信加密。HTTPS和HTTP的区别主要为以下四点:
⼀、https协议需要到ca申请证书,⼀般免费证书很少,需要交费。⼆、http是,信息是明⽂传输,https 则是具有的加密传输协议。
三、http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。
四、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的,⽐http协议安全。
因篇幅问题不能全部显示,请点此查看更多更全内容