计算机网络协议之https协议(五)

一、HTTPS协议

  HTTP协议是在HTTP协议的基础上通过加密传输和身份认证来保证传输过程安全的协议。HTTP传输存在如下安全隐患:

  1. 明文数据传输,攻击者最常用的攻击手法就是网络嗅探, 试图从传输过程当中分析出敏感的数据。进行网络嗅探攻击非常简单, 对攻击者的要求很低。使用网络发布的任意一款抓包工具, 一个新手就有可能获取到大型网站的用户信息。
  2. 不对传输内容是否被篡改做校验,攻击者可以轻易的发动中间人攻击, 修改客户端和服务端传输的数据, 甚至在传输数据中插入恶意代码, 导致客户端被引导至恶意网站被植入木马。

 因此,在涉及到移动支付等高安全的业务系统中,不能使用HTPP协议,由此HTTPS协议诞生了,HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。HTTPS设计目标主要有三个:

  1. 数据保密性(窃听):保证数据内容在传输的过程中不会被第三方查看。
  2. 数据完整性(篡改):及时发现被第三方篡改的传输内容。
  3. 身份校验安全性(冒充):保证数据到达用户期望的目的地。

二、TLS/SSL协议

  SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,SSL广泛支持各种类型的网络,需要SSL数字证书的配合使用。

  TLS(Transport Layer Security)是传输层安全性协议的缩写,它的前身是SSL,可以把TLS看做是SSL3.0的升级版,由于它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。

  SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(HTTP、FTP、Telnet等等)都能透明的建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。

  SSL/TLS 是建立在传输层之上、应用层之下的安全通信协议,二者的出现都是为互联网通信提供安全及数据完整性保障。SSL中两个重要的概念是SSL会话和SSL连接:

  1. SSL连接:连接是提供恰当类型服务的传输,对于SSL这样的连接是点对点的关系。连接是短暂的,每个连接与一个会话相联系。
  2. SSL会话:SSL的会话是客户和服务器之间的关联,会话通过握手协议来创建。会话定义了加密安全参数的一个集合,该集合可以被多个连接所共享。会话可用来避免为每个连接进行昂贵的新安全参数的协商。  

  SSL握手协议在客户端和服务器之间协商会话参数,并建立会话。会话包含的主要参数有会话ID、双方的证书、加密套件(密钥协商算法、对称加密算法和摘要算法等)以及主密钥(master-key)。通过SSL会话传输的数据,都将采用该会话的预主密钥生成的主密钥和加密套件进行加密、计算MAC等处理。

  SSL握手认证有单向认证和双向认证两种方式,双向认证 SSL 协议要求服务器和用户双方都有证书,单向认证 SSL 协议不需要客户拥有证书。一般Web应用都是采用SSL单向认证的,如果是企业应用对接等就需要使用双向认证。SSL握手双向认证的过程如下:

  1. 客户端发出client hello 消息(支持的SSL/TLS 版本列表、支持的加密算法、支持的数据压缩方法、随机数A)。
  2. 服务端响应 server hello 消息(协商采用的SSL/TLS 版本号、会话ID、服务端数字证书、随机数B)。
  3. 服务端发送 client certificate request 消息请求客户端的证书。(单向认证时不需要该步骤)
  4. 客户端校验服务端的数字证书,校验通过后生成随机数C,使用数字证书中的公钥加密C后发回服务器。
  5. 客户端发送自己的证书到服务端。(单向认证时不需要该步骤)
  6. 服务端校验客户端的证书。(单向认证时不需要该步骤)
  7. 服务端解密客户端加密的随机数C,根据随机数A、B、C产生动态密钥master-key,加密一个server finish 消息发至客户端。
  8. 客户端根据随机数A、B、C产生动态密钥master-key,加密一个client finish 消息发送至服务端。
  9. 服务端和客户端分别解密对方的master-key,若解密成功则双向认证通过,握手完成,以后的数据包均采用master-key进行加密传输。

三、服务器证书

  SSL证书,又称为服务器证书,基于 SSL 证书,我们能够在客户端和服务器之间建立 HTTPS 加密连接,该连接能够对传输的所有数据进行加密,从而确保数据安全,防止被窃听、篡改或劫持。获取证书的方式有自签证书(不受信任)和向相互信任的第三方机构申请(受信任),证书包含了如下内容:

  1. 证书信息:SSL证书中包含了有关受保护的网站的有效的、可信的信息,其中包括受保护的网站的域名,以及SSL证书的发行者和过期日期。SSL证书提供了安全传输所需的详细信息,并尽可能避免任何欺诈行为、数据泄露和其他安全漏洞。
  2. 公钥:SSL证书要求一个网站为它设置一个唯一的公钥,用于使用客户使用安全信息与服务器进行加密通信。这个公钥被用来确保任何传递到服务器的信息,都在它们之间传递时,内容不被查看。
  3. 根证书:对于SSL证书的受信任性,主要是由根证书来提供的;此根证书是可信的授权机构所签发。客户端必须拥有根证书,才能验证SSL证书身份。如果证书不是受信任的授权机构所签发,浏览器将不会打开或验证它。
  4. 数字签名:SSL证书最重要的特征之一是它的数字签名。它可以确保它正确的创建和发布,而且不存在被篡改的可能性。数字签名的功能是为了确保在HTTPS请求中,数据传输过程始终是安全的。

 

四、HTTP协议网站转HTTPS协议的步骤

  1. 评估网站的安全风险:根据网站的性质和安全性要求,确定认证方式是使用双向认证还是单向认证。
  2. 绑定网站域名:网站如果为IP访问方式,则需要给IP绑定域名,因为证书是需要和域名绑定的。
  3. 获取证书:证书的获取方式有2类,一类是自签证书,一类是向证书颁发机构申请(腾讯云、华为云、阿里云等机构都可以申请,有免费的也有收费的)。
  4. 安装证书:证书是安装到网站服务器上的,常用的服务器有IIS、Nginx、Apache、Tomcat等等,双向认证需要浏览器端导入证书,且不常用此处略过,下面以单向认证为例说明证书的配置过程。
  • IIS安装证书:导入证书(Internet信息服务(IIS)管理器--->选择服务器--->服务器证书--->导入证书--->选择证书文件--->确定)、绑定证书(选择服务器下的站点--->绑定--->添加网站绑定(选择类型为https、输入端口、域名、选择SSL证书))。

  • Nginx安装SSL证书:导入证书(上传证书文件到Nginx的配置文件目录)、绑定证书(编辑conf配置文件,在需要配置的网站的server节点下增加ssl_certificate、ssl_certificate_key属性,分别指向证书的pem文件和key文件;在listen port的后面追加ssl字符串;设置server_name为域名)。

  •  Apache安装证书:导入证书(上传证书文件到Apache的配置文件目录)、绑定证书(编辑ssl.conf配置文件,配置SSLProtocol、SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile、SSLHonorCipherOrder)。

  • Tomcat安装证书:Tomcat支持PFX格式和JKS两种格式的证书,您可根据您Tomcat的版本择其中一种格式的证书安装到Tomcat上。以安装pfx证书为例,首先也是导入证书到配置目录,然后编辑server.xml,添加如下配置。

posted @ 2023-06-14 11:52  我若安好,便是晴天  阅读(104)  评论(0编辑  收藏  举报