云安全技术课程-04-SSL证书
1 SSL证书产生背景
1.1 HTTP协议不足
http协议不足:
1、通信使用明文(不加密),内容可能会被窃听
2、不验证通信方的身份,因此有可能遭遇伪装
3、无法证明报文的完整性,所以有可能已遭篡改
解决办法:
1、加密防止窃听
2、通信加密,使用SSL (安全套接层) 与TLS(安全传输层)
3、使用证书查明对方身份,证书由值得信赖的第三方机构颁发
4、使用SSL提供摘要功能
1.2 SSL/TLS的概念
SSL/TLS概念:
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全 (Transport LayerSecurity,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密
TLS(Transport Layer Security,传输层安全): 其前身是 SSL,它最初的几个版本(SSL1.0、SSL 2.0、SSL 3.0) 由网景公司开发,1999年从 3.1 开始被ETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3四个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前使用最广泛的是TLS 1.1、TLS1.2。
SSL/TLS发展历史:
1994年NetSpace公司设计SSL协议 (Secure Sockets Layout) 1.0版本,但未发布
1995年NetSpace发布SSL/2.0版本,很快发现有严重漏洞
1996年发布SSL/3.0版本,得到大规模应用
1999年,发布了SSL升级版TLS/1.0版本,目前应用最广泛的版本
2006年和2008年,发布了TLS/1.1版本和TLS/1.2版本
2018年,发布了TLS/1.3版本
1.3 HTTP与HTTPS
HTTPS概念:
HTTP 协议中没有加密机制,但可以通过和SSL(Secure Socket Layer, 安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。属于通信加密,即在整个通信线路中加密
HTTP +加密 +认证 +完整性保护 = HTTPS (HTTP Secure)
HTTPS传输数据流程:
1、首先客户端通过URL访问服务器建立SSL连接
2、服务端收到客户端请求后,会将网站支持的证书信息 (证书中包含公钥)传送一份给客户
3、客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5、服务器利用自己的私钥解密出会话密钥.
6、服务器利用会话密钥加密与客户端之间的通信
HTTPS缺点:
1、HTTPS协议多次握手,导致页面的加载时间延长近50%
2、HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗
3、申请SSL证书需要钱,功能越强大的证书费用越高
4、SSL涉及到的安全算法会消耗CPU资源,对服务器资源消耗较大
HTTP与HTTPS的区别:
HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理
HTTP和HTTPS使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443.
2 SSL证书基础知识
2.1 SSL简介
SSL体系结构:
SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层 (SSL Record ProtocoLayer);高层是SSL握手协议层(SSL HandShake Protocol Layer)。
SSL记录协议层的作用是为高层协议提供基本的安全服务。
SSL握手协议层包括SSL握手协议 (SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)、应用数据协议 (Application Data Protocol)和SSL告警协议 (SSLAlert Protocol)
SSL协议提供的服务:
1、认证用户和服务器,确保数据发送到正确的客户机和服务器
2、加密数据以防止数据中途被窃取
3、维护数据的完整性,确保数据在传输过程中不被改变
2.2 SSL运行过程
非对称加密算法:
非对称加密技术:“加密”和“解密”使用不同的密钥
公开密钥 (Public Key:简称公)和私有 (Private Key: 简称私钥)
对称加密算法:
对称加密技术:“加密”和“解密”使用相同的密钥
SSL特点:
1、SSL可对传输的数据进行加密,防止第三方窃取数据
2、SSL协议具有防篡改机制,如果传输的数据在传输过程中被人篡改,通信双方就会立刻发现
3、SSL也具有身份验证机制,防止身份被人冒充
SSL运行过程:
1、客户端向服务器端索要并验证公钥
2、双方协商生成“对话密钥
3、双方采用“对话密钥”进行加密通信
SSL运行过程:握手阶段:
1、客户端请求。
客户端支持的TLS协议版本。
客户端生成一个随机数,用于后续生成“对话密钥“。
客户端支持的加密方法,比如DHE-RSA非对称加密算法。
支持的压缩算法
2、服务器回应
1、确认需要使用的TLS协议版本
2、服务器也会生成一个随机数,用于后续生成“对话密钥
3、确认使用的加密算法,比如DHE-RSA非对称加密算法
4、服务器的证书
5、如果服务器需要确认客户端的身份,就会包含一个证书请求,要求客户端提供客户端证书确认身份
3、客户端再回应
1、发送一个用公钥加密的随机数数据,这个随机数也被称为pre-master key
2、编码更改通知,告诉服务器以后的数据都将采用已商定的加密方法和密钥发送
3、客户端握手结束通知,这一项同时也是前面发送的所有内容的hash值,用来提供给服务器做防篡改验证
4、服务器最后回应
1、编码更改通知,告诉服务器以后的数据都将采用已商定的加密方法和密钥发送
2、服务器握手结束通知,这一项同时也是前面发送的所有内容的hash值,用来提供给客户端做数据防篡改验证
SSL的会话状态:
会话(Session)和连接(Connection)是SSL中两个重要的概念
SSL连接:用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联
SSL会话:是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参
2.3 SSL证书概念
1、SSL证书,也称为服务器SSL证书,是遵守SSL协议的一种数字证书
2、当前互联网常用的HTTP协议是不安全的明文传输协议。而SSL协议及其继任者TLS协议,是一种实现网络通信加密的安全协议,可在客户端(浏览器)和服务器端(网站)之间建立一条加密通道保证数据在传输过程中不被窃取或篡改。
3、SSL证书由全球信任的证书颁发机构(CA)验证服务器身份后颁发。将SSL证书安装在网站服务器上,可实现网站身份验证和数据加密传输双重功能。
3 SSL证书应用场景
3.1 SSL证书类型
证书分类:
1、SSL证书,用于加密HTTP协议,也就是HTTPS
2、代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等
3、客户端证书,用于加密邮件。
4、双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书
SSL证书分类:
SSL证书依据功能和品牌不同分类有所不同,但SSL证书作为国际通用的产品,最为重要的便是产品兼容性(即证书根预埋技术),因为他解决了网民登录网站的信任问题,网民可以通过SSL证书轻松识别网站的真实身份。SSL证书分为如下种类:
扩展验证型(EV)SSL证书:SSL是Extended Validation SSL的缩写,指遵循全球统一的严格身份验证标准颁发的SSL证书,是目前业界最高安全级别的SSL证书
组织验证型(OV)SSL证书:SSL证书是Organization Validation SSL的缩写,指需要验证网站所有单位的真实身份的标准型SSL证书,不仅能起到网站机密信息加密的作用,而且能向用户证明网站的真实身份。
域名验证型(DV)SSL证书:指只验证网站域名所有权的简易型SSL证书,此类证书仅能起到网站机密信息加密的作用,无法向用户证明网站的真实身份。
3.2 SSL证书作用
SSL证书作用:
1、网站实现加密传输
2、认证服务器真实身份
3、提高网站搜索排名
4、提高网站访问速度
5、提高公司品牌形象和可信度
SSL证书缺点:
1、证书价格不菲
2.、技术门槛比较高
3、HTTPS页面中不能引用其他非安全外部资源
4、HTTPS网站站配置CDN麻烦
5、HTTPS后期维护麻烦
3.3 SSL证书工作流程
SSL证书工作流程:
1、服务器的运维人员将公钥发送给CA数字认证机构
2、认证机构在收到公销后会对这个公钥做数字签名操作,然后将这个公钥与数字签名等相关信息绑定在一起形成公钥证书(一个文件),发给运维人员,运维人员再将这个证书绑定在服务器中
3、客户端请求HTTPS进行通信时,服务器会将这份由CA数字证书认证机构颁发的公钥证书发送给客户端,以进行接下来非对称加密通信。
4、客户端接收到这份公钥证书之后,会使用数字证书认证机构的公钥对证书上数字签名进行验证,以4.确定服务器公钥的真实性。还会验证验证证书的相关信息,证书有效(没过期等)。这样客户端就可以确认两件事情:一是数字正式时真实有效的,二是服务器的公钥也是值得信赖的。
SSL证书签发过程:
1、服方S向第三方机构CA提交公、组织信息、个人信息(域名)等信息并申请认证
2、数字证书机构通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等
3、如果信息审核通过,数字证书机构会向申请者签发认证文件-证书人
完整通信过程:
1、客户端通过发送Client Hello报文开始SSL通信。报文包含客户端支持的SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。
2、服务器可进行SSL通信时,会以Server Hello报文作为响应。和客户端一样,在报文中包含SSL版本及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
3、之后服务器发送Certificate报文,报文中包含公开密钥证书。
4、最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。
5、SSL第一次握手结束之后,客户端以 Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤3中的公开密钥进行加密
6、接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密
7、客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准
8、服务器同样发送 Change Cipher Spec 报文
9、服务器同样发送Finished 报文
10、服务器和客户端的 Finished 报文交换完毕之后
SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。
11、应用层协议通信,即发送HTTP 响应
12、最后由客户端断开连接。断开连接时,发送close notify 报文