什么是SSL?什么是SSL证书?

为什么需要SSL?

网络中明文传输敏感数据(银行数据、交易信息、密码信息等)是非常危险的,这对网络通信的安全性提出了更高的要求,SSL目的是提供通信安全及数据完整性保障。传统的万维网协议HTTP(Hypertext Transfer Protocol )不具备安全机制,采用明文形式传输数据,不能验证通信双方的身份,无法防止传输的数据被篡改,安全性很低。Netscape公司提出的安全协议SSL,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。SSL为HTTP提供安全连接,可以防止中间人攻击和网络监听,从而很大程度上改善了万维网的安全性问题,这就是SSL的起源。

HTTPS是在HTTP上应用SSL来保障HTTP的安全性,对HTTPS可以简单理解为HTTPS=HTTP+SSL,当前主流网站Facebook, Google, 淘宝等都使用SSL通信加密提高数据的安全性。SSL在各电子商务活动和电子政务活动中也得到广泛应用,如:银行金融、网上缴费、网上签约、政务平台等。

HTTP报文传输示意图
HTTP报文传输示意图
HTTPS报文传输示意图
HTTPS报文传输示意图

虽然SSL设计的初衷是为了解决万维网的安全性问题,但是由于SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。动态路由协议BGP、通信协议OpenFlowgRPC协议等都支持配置SSL,使得服务端和客户端建立安全的SSL连接,来提高设备的安全性。

什么是SSL证书?

SSL协议的这些安全机制需要有证书配合一块使用才能实现。SSL使用证书对通信双方之间建立的连接的两端进行身份认证,并使用证书对加密的通信信道进行协商,从而确保安全。在SSL协议通信过程中使用的证书被称为SSL证书。

SSL证书是一种遵循SSL协议的数字证书,包含拥有者的公钥及相关身份信息,由受信任的数字证书颁发机构(CA)颁发。SSL证书采用SSL协议进行通信,具有服务器身份验证和数据传输加密功能,用于保证设备内的各服务间,以及设备与外部通信的安全性,防止通信数据在传输过程被篡改造成安全风险,提升系统的安全性。数字证书可以说是网络上的安全护照或身份证,提供的是网络上的身份证明。

证书认证机构CA(Certificate Authority)

CA是负责颁发、认证和管理证书的第三方机构,具有权威性,公正性。CA的作用是检查数字证书持有者身份的合法性,并签发数字证书(在证书上进行数字签名),以防证书被伪造或篡改,以及对证书和密钥进行管理。CA通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为根CA和从属CA。国际上被广泛信任的CA,被称之为根CA。根CA可授权其他CA为其下级CA。

CA的角色类似于现实世界中的公证机构,其核心功能就是发放和管理数字证书,包括:证书的颁发、撤销、查询、归档和证书废除列表CRL(Certificate Revocation List)的发布等。

CA层次示意图
CA层次示意图
  • 根CA是公钥体系中的第一个证书颁发机构,它是信任的起源。根CA可以为其他CA颁发证书也可以为其他计算机、用户、服务颁发证书(绝大部分的根CA都不会直接为用户颁发证书)。对大多数基于证书的应用程序来说,使用证书的认证都可以通过证书链追溯到根CA。根证书没有上层机构再为其本身作数字签名,通常只有一个自签名证书。
  • 从属CA必须从上级CA处获取证书。上级CA可以是根CA或者是一个已由根CA授权可颁发从属CA证书的从属CA。上级CA负责签发和管理下级CA的证书。

如何获取SSL证书

SSL证书是需要购买申请的。要获取证书,可以通过证书品牌官网在线下单购,当前主流的SSL证书可信的颁发机构有:DigiCert、Symantec、GeoTrust、Comodo、GlobalSign、Thawte、RapidSSL、AlphaSSL、Sectigo等。由于这些证书品牌大多是在海外,国内通常通过证书代理商伙伴网站下单购买,如华为云、阿里云、腾讯云、亚洲诚信等。

SSL证书的申购全流程图
SSL证书的申购全流程图

SSL是如何工作

SSL协议可以为通信双方提供身份识别和认证通道,从而保证通信的数据完整性和机密性。其核心是通过“握手”这个过程在服务器和客户端通过几个回合的沟通,实现通信双方消息交换及身份认证,并确立后续通信过程中要使用的的加密算法以及会话密钥。然后在握手之后的通信过程中,通过这个会话密钥进行加解密,并在后续信息传输中只传递密文。

握手过程示意图
握手过程示意图

SSL协议握手过程,主要分成以下几个步骤:

  1. SSL客户端发送消息给SSL服务器启动握手,携带它支持的SSL版本、加密套件和客户端的随机数“Client random”等信息。
  2. SSL服务器响应SSL客户端,携带选定的版本、加密套件和服务器的随机数“Server random”等信息。
  3. SSL服务器将携带自己公钥信息的数字证书发送给SSL客户端,以便客户端对服务器进行身份认证。
  4. SSL服务器通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
  5. SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的密钥发给SSL服务器。

    实际上,这个随机生成的密钥不能直接用来加密数据或计算MAC值,该密钥是用来计算对称密钥和MAC密钥的信息,称为premaster secret。SSL客户端和SSL服务器使用client random,server random 和 premaster secret,并通过相同的算法生成相同的主密钥(master secret),再利用master secret生成用于对称密钥算法、MAC算法的密钥。

  6. SSL客户端通知SSL服务器后续报文将采用协商好的密钥(利用master secret生成的密钥)和加密套件进行加密和MAC计算。
  7. SSL客户端通知SSL服务器,让服务器验证握手过程的安全。
  8. SSL服务器通知SSL客户端后续报文将采用协商好的密钥(利用master secret生成的密钥)和加密套件进行加密和MAC计算。
  9. SSL服务器通知SSL客户端,让客户端验证握手过程的安全。

当服务器需要验证SSL客户端身份时,握手过程中还需要增加三个交互消息:SSL服务器发送Certificate Request请求要求SSL客户端提供证书,SSL客户端发送自己的证书Certificate给服务器、SSL客户端发送验证消息Certificate Verify给服务器。

SSL和TLS关系

SSL和TLS都是加密协议,TLS 实际上是SSL的升级版本。传输层安全性TLS(Transport Layer Security)协议,是在SSL协议的基础上提供的一种保证数据完整性和私密性的安全协议,可以使客户端与服务器之间的通信不被攻击者窃听。SSL由Netscape(网景通信公司)创建,共有三个版本:SSL1.0、SSL2.0、SSL3.0。TLS 1.0是IETF(工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。整体来说TLS1.0和SSL3.0几乎没有区别,仅修复了早期SSL协议中的一些安全漏洞。实际上我们使用的”SSL证书”都是SSL/TLS证书。

SSL和TLS版本的历史
SSL和TLS版本的历史

原文链接:https://info.support.huawei.com/info-finder/encyclopedia/zh/SSL.html

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享