SSL与HTTPS协议
1、SSL
1.1 什么是SSL
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为⽹络通信提供安全及数据完整性的⼀种安全协议。TLS与SSL在传输层对⽹络连接进⾏加密。
Secure Socket Layer,为Netscape(⽹景)所研发,⽤以保障在Internet上数据传输之安全,利⽤数据加密(Encryption)技术,可确保数据在⽹络上之传输过程中不会被截取及窃听。⼀般通⽤之规格为40 bit之安全标准,美国则已推出128 bit之更⾼安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可⽀持SSL。
当前版本为3.0。它已被⼴泛地⽤于Web浏览器与服务器之间的⾝份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应⽤层协议之间,为数据通讯提供安全⽀持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建⽴在可靠的传输协议(如TCP)之上,为⾼层协议提供数据封装、压缩、加密等基本功能的⽀持。 SSL握⼿协议(SSL Handshake Protocol):它建⽴在SSL记录协议之上,⽤于在实际的数据传输开始前,通讯双⽅进⾏⾝份认证、协商加密算法、交换加密密钥等。
1.2 SSL所提供的服务
提供的服务如下:
认证⽤户和服务器,确保数据发送到正确的客户机和服务器;
加密数据以防⽌数据中途被窃取;
维护数据的完整性,确保数据在传输过程中不被改变。
1.3 SSL⼯作流程
服务器认证阶段:
1. 客户端向服务器发送⼀个开始信息“Hello”以便开始⼀个新的会话连接;
2. 服务器根据客户的信息确定是否需要⽣成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含⽣成主密钥所需的信息;
3. 客户根据收到的服务器响应信息,产⽣⼀个主密钥,并⽤服务器的公开密钥加密后传给服务器;
4. 服务器回复该主密钥,并返回给客户⼀个⽤主密钥认证的信息,以此让客户认证服务器。
⽤户认证阶段:在此之前,服务器已经通过了客户认证,这⼀阶段主要完成对客户的认证。经认证的服务器发送⼀个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从⽽向服务器提供认证。
SSL协议提供的安全通道有以下三个特性:
机密性:SSL协议使⽤密钥加密通信数据。
可靠性:服务器和客户都会被认证,客户的认证是可选的。
完整性:SSL协议会对传送的数据进⾏完整性检查。
1.4 HTTPS介绍
HTTPS(Hypertext Transfer Protocol Secure)安全超⽂本传输协议它是由Netscape开发并内置于其浏览器中,⽤于对数据进⾏压缩和解压操作,并返回⽹络上传送回的结果。HTTPS实际上应⽤了Netscape的完全套接字层(SSL)作为HTTP应⽤层的⼦层。(HTTPS使⽤端⼝443,⽽不是象HTTP那样使⽤端⼝80来和TCP/IP进⾏通信。)SSL使⽤40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL⽀持使⽤X.509数字认证,如果需要的话⽤户可以确认发送者是谁。
HTTPS是以安全为⽬标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加⼊SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。
它是⼀个URI Scheme(抽象标识符体系),句法类同http:体系。⽤于安全的HTTP数据传输。)。这个系统的最初研发由⽹景公司进⾏,提供了⾝份验证与加密通讯⽅法,它被⼴泛⽤于万维⽹上安全敏感的通讯,例如交易⽀付⽅⾯。
2、HTTPS协议详解
2.1 HTTPS基础知识
HTTPS基础知识:HTTPS (Secure Hypertext Transfer Protocol)安全超⽂本传输协议,是⼀个安全通信通道,它基于HTTP开发⽤于在客户计算机和服务器之间交换信息。它使⽤安全套接字层(SSL)进⾏信息交换,简单来说它是HTTP的安全版,是使⽤TLS/SSL加密的HTTP协议。HTTP协议采⽤明⽂传输信息,存在信息窃听、信息篡改和信息劫持的风险,⽽协议TLS/SSL具有⾝份验证、信息加密和完整性校验的功能,可以避免此类问题发⽣。
TLS/SSL全称安全传输层协议Transport Layer Security, 是介于TCP和HTTP之间的⼀层安全协议,不影响原有的TCP协议和HTTP协议,所以使⽤HTTPS基本上不需要对HTTP页⾯进⾏太多的改造。
2.2 HTTP与HTTPS的区别
区别如下:
1. HTTPS是加密传输协议,HTTP是名⽂传输协议;
2. HTTPS需要⽤到SSL证书,⽽HTTP不⽤;
3. HTTPS⽐HTTP更加安全,对搜索引擎更友好,利于SEO【参考:(1)为保护⽤户隐私安全,⾕歌优先索引HTTPS⽹页、(2)百度
开放收录https站点,https全⽹化势不可挡】;
4. HTTPS标准端⼝443,HTTP标准端⼝80;
5. HTTPS基于传输层,HTTP基于应⽤层;
6. HTTPS在浏览器显⽰绿⾊安全锁,HTTP没有显⽰;
2.3 TLS/SSL⼯作原理
HTTPS协议的主要功能基本都依赖于TLS/SSL协议,本节分析TLS/SSL协议⼯作原理。
TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和⾮对称加密,其利⽤⾮对称加密实现⾝份认证和密钥协商,对称加密算法采⽤协商的密钥对数据加密,基于散列函数验证信息的完整性。
2.3.1三种算法介绍
散列函数Hash
常见的有 MD5、SHA1、SHA256,该类函数特点是函数单向不可逆、对输⼊⾮常敏感、输出长度固定,针对数据的任何修改都会改变散列函数的结果,⽤于防⽌信息篡改并验证数据的完整性;
在信息传输过程中,散列函数不能单独实现信息防篡改,因为明⽂传输,中间⼈可以修改信息之后重新计算信息摘要,因此需要对传输的信息以及信息摘要进⾏加密;
对称加密
常见的有 AES-CBC、DES、3DES、AES-GCM等,相同的密钥可以⽤于信息的加密和解密,掌握密钥
才能获取信息,能够防⽌信息窃听,通信⽅式是1对1;
对称加密的优势是信息传输1对1,需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和 N 个客户端通信,需要维持 N 个密码记录,且缺少修改密码的机制;
⾮对称加密
即常见的 RSA 算法,还包括 ECC、DH 等算法,算法特点是,密钥成对出现,⼀般称为公钥(公开)和私钥(保密),公钥加密的信息只能私钥解开,私钥加密的信息只能公钥解开。因此掌握公钥的不同客户端之间不能互相解密信息,只能和掌握私钥的服务器进⾏加密通信,服务器可以实现1对多的通信,客户端也可以⽤来验证掌握私钥的服务器⾝份。
⾮对称加密的特点是信息传输1对多,服务器只需要维持⼀个私钥就能够和多个客户端进⾏加密通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密速度慢。
总结
结合三类算法的特点,TLS的基本⼯作⽅式是,客户端使⽤⾮对称加密与服务器进⾏通信,实现⾝份验证并协商对称加密使⽤的密钥,然后对称加密算法采⽤协商密钥对信息以及信息摘要进⾏加密通信,不同的节点之间采⽤的对称密钥不同,从⽽可以保证信息只能通信双⽅获取。
2.4PKI体系
2.4.1 RSA认证隐患
⾝份验证和密钥协商是TLS的基础功能,要求的前提是合法的服务器掌握着对应的私钥。但RSA算法⽆法确保服务器⾝份的合法性,因为公钥并不包含服务器的信息,存在安全隐患:
1. 客户端C和服务器S进⾏通信,中间节点M截获了⼆者的通信;
2. 节点M⾃⼰计算产⽣⼀对公钥pub_M和私钥pri_M;
3. C向S请求公钥时,M把⾃⼰的公钥pub_M发给了C;
4. C使⽤公钥 pub_M加密的数据能够被M解密,因为M掌握对应的私钥pri_M,⽽ C⽆法根据公钥信息判断服务器的⾝份,从⽽ C和 M
之间建⽴了"可信"加密连接;
5. 中间节点 M和服务器S之间再建⽴合法的连接,因此 C和 S之间通信被M完全掌握,M可以进⾏信息的窃听、篡改等操作。
另外,服务器也可以对⾃⼰的发出的信息进⾏否认,不承认相关信息是⾃⼰发出。因此该⽅案下⾄少存在两类问题:中间⼈攻击和信息抵赖。
2.4.2 ⾝份验证CA和证书
解决上述⾝份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的⾝份信息,为此需要引⼊权威的第三⽅机构CA(如沃通CA)。CA 负责核实公钥的拥有者的信息,并颁发认证"证书",同时能够为使⽤者提供证书验证服务,即PKI体系(PKI基础知识)。
基本的原理为,CA负责审核信息,然后对关键信息利⽤私钥进⾏"签名",公开对应的公钥,客户端可以利⽤公钥验证签名。CA也可以吊销已经签发的证书,基本的⽅式包括两类 CRL ⽂件和
ssl协议全称OCSP。CA使⽤具体的流程如下:
1. 服务⽅S向第三⽅机构CA提交公钥、组织信息、个⼈信息(域名)等信息并申请认证;
2. CA通过线上、线下等多种⼿段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
3. 如信息审核通过,CA会向申请者签发认证⽂件-证书;
1. 证书包含以下信息:申请者公钥、申请者的组织信息和个⼈信息、签发机构 CA的信息、有效时间、证书序列号等信息的明⽂,
同时包含⼀个签名;
2. 签名的产⽣算法:⾸先,使⽤散列函数计算公开的明⽂信息的信息摘要,然后,采⽤ CA的私钥对信息摘要进⾏加密,密⽂即签
名;
4. 客户端 C 向服务器 S 发出请求时,S 返回证书⽂件;
5. 客户端 C读取证书中的相关的明⽂信息,采⽤相同的散列函数计算得到信息摘要,然后,利⽤对应 CA的公钥解密签名数据,对⽐证
书的信息摘要,如果⼀致,则可以确认证书的合法性,即公钥合法;
6. 客户端然后验证证书相关的域名信息、有效时间等信息;
7. 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则不到对应 CA的证书,证书也会被判定⾮法。
在这个过程注意⼏点:
1. 申请证书不需要提供私钥,确保私钥永远只能服务器掌握;
2. 证书的合法性仍然依赖于⾮对称加密算法,证书主要是增加了服务器信息以及签名;
3. 内置 CA 对应的证书称为根证书,颁发者和使⽤者相同,⾃⼰为⾃⼰签名,即⾃签名证书(为什么说"部署⾃签SSL证书⾮常不安全")
4. 证书=公钥+申请者与颁发者信息+签名;
2.4.3 证书链
如 CA根证书和服务器证书中间增加⼀级证书机构,即中间证书,证书的产⽣和验证原理不变,只是增
加⼀层验证,只要最后能够被任何信任的CA根证书验证合法即可。
1. 服务器证书 server.pem 的签发者为中间证书机构 inter,inter 根据证书 inter.pem 验证 server.pem 确实为⾃⼰签发的有效证书;
2. 中间证书 inter.pem 的签发 CA 为 root,root 根据证书 root.pem 验证 inter.pem 为⾃⼰签发的合法证书;
3. 客户端内置信任 CA 的 root.pem 证书,因此服务器证书 server.pem 的被信任。
服务器证书、中间证书与根证书在⼀起组合成⼀条合法的证书链,证书链的验证是⾃下⽽上的信任传递的过程。
⼆级证书结构存在的优势:
1. 减少根证书结构的管理⼯作量,可以更⾼效的进⾏证书的审核与签发;
2. 根证书⼀般内置在客户端中,私钥⼀般离线存储,⼀旦私钥泄露,则吊销过程⾮常困难,⽆法及时补救;
3. 中间证书结构的私钥泄露,则可以快速在线吊销,并重新为⽤户签发新的证书;
4. 证书链四级以内⼀般不会对HTTPS 的性能造成明显影响。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。