五分钟搞懂HTTPS

1.HTTP缺点 http是应用层协议
主要有这些不足

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改
2.HTTPS是什么
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
HTTPS 是身披 SSL 外壳的 HTTP ,SSL主要就做了加密、认证、完整性保护三件事
2.1加密
ssl里面有三种加密方式
五分钟搞懂HTTPS
文章图片

  • 散列算法用于生成摘要,验证完整性
  • 非对称加密用于加密身份,非对称算法需要公钥私钥,性能差
  • 对称加密用于加密通信信息,对称加密只需要一个共享秘钥,性能好
    2.2认证
    如何保证和客户端通信的是真正的服务端?
    服务端可以起申请数字证书认证机构(CA) 认证
    CA会用CA的私钥把服务器的公钥,还有各种认证信息一起加密成数字证书
    五分钟搞懂HTTPS
    文章图片

    然后客户端用已经安装的CA的公钥去解密数字证书,如果信息符合,即可完成认证。
    我们看一下思否的https数字证书
    五分钟搞懂HTTPS
    文章图片

2.3完整性保护
一段信息,经过摘要算法得到一串哈希值,就是摘要(dijest)。
客户端拿到信息以后,对信息生成一次摘要,拿到摘要A。如果该摘要和从数字签名中解密出来的摘要B一样,就证明信息是完整的,没有丢失
这个摘要就是数字签名
数字签名和数字证书区别
数字签名是服务器自己签的,为了信息完整性
数字证书是CA提供的,里面有服务器的公钥和认证信息,用于认证
五分钟搞懂HTTPS
文章图片

3.具体通信过程 五分钟搞懂HTTPS
文章图片

3.1 客户端发送加密申请
客户端向服务器发起请求,请求中包含使用的协议版本号、以及客户端支持的加密方法等。
3.2 服务端以证书回应
服务器端接收到请求后,确认双方使用的加密方法、并给出服务器的证书
3.3 客户端确定身份,拿到公钥。生成随机数给服务器
客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发给服务器。
3.4 服务器收到随机数
服务器使用自己的私钥,来解密客户端发送过来的随机数
3.5 正式通信
【五分钟搞懂HTTPS】客户端和服务器端用随机数生成共享秘钥 相互加密通信。
4.安装https证书
  1. 先申请一个证书 个人的有免费的可以申请
    五分钟搞懂HTTPS
    文章图片
  2. 然后下载证书
    nginx文件夹里面有这两个证书 一个应该是 .key文件 一个是.crt文件
    五分钟搞懂HTTPS
    文章图片
  3. 把该文件移动到nginx相关位置
  4. 修改配置,并重启
    ssl_certificate "/etc/nginx/tlsconfig/1_yangkaiqiang.com_bundle.crt";
    ssl_certificate_key "/etc/nginx/tlsconfig/2_yangkaiqiang.com.key";
  5. https配置成功,可以访问了
    五分钟搞懂HTTPS
    文章图片
5.面试题
  1. 什么是https
  2. 数字证书是什么
  3. https的特点
  4. https通信过程
  5. https如何保证安全的

    推荐阅读