HTTPS简介

1什么是HTTPS

        HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。

       HTTPS( HyperText Transfer Protocol over Secure Socket Layer )超文本传输安全协议, 近两年Google Baidu Facebook 等这样的互联网巨头,不谋而合地开始大力推行 HTTPS , 国内外的大型互联网公司很多也都已经启用了全站 HTTPS ,这也是未来互联网发展的趋势。

(1)作用

a. 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
b. 对网站服务器进行真实身份认证。

(2)使用特征

我们经常会在 Web 的登录页面和购物结算界面等使用 HTTPS 通信。使用HTTPS 通信时,不再用 http:// ,而是改用 https:// 。另外,当浏览器访问HTTPS 通信有效的 Web 网站时,浏览器的地址栏内会出现一个带锁的标记。
HTTPS 并非是应用层一个新的协议,通常 HTTP 直接和 TCP 通信, HTTPS则先 SSL/TLS 协议就是为了解决上面提到的 HTTP 存在的问题而生的,下面我们来看 一下它是怎么解决的:
1. 所有的信息都是加密传输的,第三方无法窃听
2. 配备身份验证(服务端程序),防止身份被冒充
3. 具有校验机制,一旦被篡改,通信双方会立刻发现 和安全层(SSL/TLS)通信,然后安全层再和 TCP 层通信。

2.对称加密

(1)定义:

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

(2)要素:

原文、秘钥、算法
秘钥:在密码学中是一个定长的字符串、需要根据加密算法确定其长度

(3)工作过程:

对称加密通常使用的是相对较小的密钥,一般小于 256 bit 。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit 来做这个密钥,那黑客们可以先试着用0 来解密,不行的话就再用 1 解;但如果你的密钥有 1 MB 大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率。
加密:明文 + 密钥 -> 密文
解密:密文 + 密钥 -> 明文

缺陷:

a. 加密和解密同用一个密钥,加密和解密都会用到密钥,没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密。
b. 不同的客户端、服务器数量庞大,所以双方都需要维护大量的密钥,维护成本很高
c. 因每个客户端、服务器的安全级别不同,密钥极易泄露

3.非对称加密算法

(1)简介:

非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
非对称加密算法需要两个密钥:公开密钥 (public key) 和私有密 (private key)公开密钥和私有密钥是一对。

(2)特点:

a. 如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
b. 如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
c. 由于其算法复杂,而使得加密、解密速度没有对称加密解密的速度快。有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了,这样安全性就大了很多。

 缺陷:

公钥是公开的(也就是黑客也会有公钥),所以可以根据公开的公钥对私钥加密的信息进行解密,如 果被黑客截获,其可以使用公钥进行解密,获取其中的内容。
从而推演出对称加密个非对称加密结合使用

4. 对称加密+非对称加密

1.首先客户端去向服务器请求公钥,

2.服务器响应公钥信息

3.客户端随机生成一个随机数,并使用公钥进行加密,发送给服务端。

4.服务端根据私钥对数据进行解密,然后把解密后的随机数,当作对称加密的密钥进行使用。

5.后续客户端与服务端就使用对称加密的方式进行通信。

 存在缺陷:

a.  解决报文可能遭篡改问题
b.  解决通信方身份可能被伪装的问题

解决方案:

a. 解决报文可能遭篡改问题 —— 数字签名
b. 解决通信方身份可能被伪装的问题 —— 数字证书

5.数字签名

(1)数字签名有两种功能:
能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
数字签名能确定消息的完整性 , 证明数据是否未被篡改过。
(2)数字签名如何生成
将要发送的数据先用 Hash 算法(摘要算法、散列算法)生成消息摘要,然后用发送者的私钥加密生成数字签名,与原文一起传送给接收者。
接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用 HASH 函数对收到的原文产生一个摘要信息,与上一步得到的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

6.证书

数字证书:是一个经 证书认证结构 数字签名的包含公开密钥、拥有者信息的文件,有点像生活中的身份证、护照等,是由一个官方的证书颁发机构签发的一组数据。这种证书很难伪造,用于使用者的身份证明。
CA - 数字证书认证机构:
CA 是证书的签发机构,它是公钥基础设施( Public Key Infrastructure, PKI)的核心。 CA 是负责签发证书、认证证书、管理已颁发证书的机关。
认证过程(升级 HTTPS ):
1. 服务器的运营人员(拉勾网站的运营)向第三方机构 CA (或者其代理机构)提交公钥、组织信息、域名等信息并申请认证;
2. CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
3. 如信息审核通过, CA 会向申请者签发认证文件 - 证书。
使用证书后的流程:
1.客户端向服务端请求证书。
2.服务端向客户端响应证书。
3.客户端生成随机数,并使用证书返回的公钥进行加密,发送给服务端。
4.服务端接收并使用私钥进行解密,随后使用机密后的随机数,当作对称加密的密钥,进行对称加密的方式传输。
5.接下来就是使用对称加密的算法,进行通信
注:1.2步使用的还是明文的方式。

7.完整的 HTTPS 的通信

TLS 握手过程:
明文 -----> 非对称加密 -----> 对称加密
第一步,浏览器给出 TLS 协议版本号、一个客户端生成的随机数 1 Client random ),以及客户端支持的加密方法。(明文通讯)
第二步,服务器确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数2 Server random )。(明文通讯)
第三步,浏览器确认数字证书有效,然后生成一个新的随机数 3 Pre-mastersecret),并使用数字证书中的公钥加密这个随机数,发给服务器。(使用非对称加密算法)
        浏览器确认数字证书有效:浏览器和操作系统内部内置了很多CA 机构的证书,是否篡改、是否在有效期内、域名和访问的网站是否匹配。
第四步,服务端使用自己的私钥,获取客户端发来的随机数(即 Premaster secret)。
        双方就都有三个一模一样的随机数,前两个是明文发送的,最后客户端生成的这个是使用证书中的公钥密文发送的。
第五步, 客户端和服务器 根据约定的加密方法,使用前面的三个随机数经过特定的算法,生成" 对话密钥 " session key ),用来加密接下来的整个对话过程。
对话密钥,又叫做会话密钥,其实就是讲之前通讯中的三个随机数生成一个密钥(对称加密)
三个随机数 -----> 第三个是使用非对称加密 ----> 相同的算法 -------> 会话密钥
第六步:客户端和服务器都会第一次使用会话密钥加密一个消息发送给对方。
备注:客户端收到服务端发送的 Certificate 报文后首先会校验证书的合法性:
a.  证书路径信任链逐级校验通过(证书确由可信 CA 认证签发);
b.  签名解密成功(确系证书持有者亲笔);
c.  从签名解析出的摘要和证书公开内容的摘要一致(证书内容完整,未被篡改);
d.  主题子域与 URL 中的 HOST 一致,综上确保访问的网站是来自预期目标服 务器且非劫持或钓鱼。

8. CA证书的使用

1.通常情况下,对登录阿里云SSL证书控制台,进行填报信息,证书的购买。

2.购买成功后将证书下载到nginx服务器进行解压。会出现两个文件:

         证书文件:文件类型为 PEM
        密钥文件:文件类型为KEY
3.随后进入nginx配置文件进行对应修改。
#以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要 进行配置。 
server { 
    #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。             
    #Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443 和ssl on。
    listen 443 ssl; 
    #将www.certificatestests.com修改为您证书绑定的域名,例 如:www.example.com。如果您购买的是通配符域名证书, 
    #要修改为通配符域名,例如:*.aliyun.com。 
    server_name www.certificatestests.com; 
    root html; 
    index index.html index.htm; 
    #将domain name.pem替换成您证书的文件名称。 
    ssl_certificate cert/domain name.pem; 
    #将domain name.key替换成您证书的密钥文件名称。 
    ssl_certificate_key cert/domain name.key; 
    ssl_session_timeout 5m; 
    #使用此加密套件。
    ssl_ciphers ECDHE-RSA-AES128-GCM-  SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    #使用该协议进行配置。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on;
    location / { 
        #站点目录。 
        root html; 
        index index.html index.htm;
     }
}

4.修改完配置文件后,重启nginx服务。

注:可以设置HTTP请求自动跳转HTTPS

在需要跳转的HTTP站点下添加以下return语句,实现HTTP访问自动跳转到HTTPS页面。

server { 
    listen 443 ssl;
    #将www.certificatestests.com修改为您证书绑定的域名,例如: www.example.com。 
    server_name www.certificatestests.com; 
    #将所有HTTP请求通过return重定向到HTTPS。 
    return 301 https://$server_name$request_uri; 
    location / { 
        index index.html index.htm; 
    } 
}
5.证书安装完成后,您可通过登录证书的绑定域名验证该证书是否安装成功。
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值