前言

本节学习https的相关知识

1、https简介

HTTPS 作用

  • CIA
  • 解决的是信息传输过程中数据被篡改、窃取
  • 解密:对称、非对称、单向

HTTPS 攻击方法

  • 降级攻击
  • 解密攻击(明文、证书伪造)
  • 协议漏洞、实现方法的漏洞、配置不严格

HTTPS 加密过程

  • 三次握手
  • 协商加密算法(对称加密算法)
  • 客户端获取服务器的公钥证书
  • 客户端在自己的根证书列表来验证服务器公钥证书,验证成功说明服务器公钥证书可信任
  • 客户端随机生成一次性会话密钥(对称密钥)
  • 客户端使用服务器的公钥加密一次性会话密钥,发给服务器
  • 服务器用自己的私钥解密,获取一次性会话密钥
  • 客户端对明文进行 Hash 计算,得到Hash值1
  • 客户端使用会话密钥加密明文和Hash值1,然后将密文1进行 Hash 计算生成 Hash值2
  • 客户端使用服务器公钥加密密文1和Hash值2,生成密文2,将密文2发送给服务器
  • 服务器解密密文2,获取密文1和Hash2,然后对密文1进行Hash计算,并比较解密得到的Hash2和计算得到的Hash值是否相同(完整性)
  • 用会话密钥解密密文1,得到明文和Hash值1,然后对明文进行Hash计算,并比较解密得到的Hash1和计算得到的Hash值是否相同(完整性)

2、openssl

  • 直接调用 openssl 库识别目标服务器支持的 SSL/TLS cipher suite
  • openssl 需要大量密码学相关知识,命令复杂,结果可读性差
    在这里插入图片描述
openssl s_client  -connect www.baidu.com:443 #百度, 查看使用的安全协议信息,如图所示
openssl s_client  -connect www.taobao.com:443 #淘宝, 查看使用的安全协议信息
openssl s_client -tls1_2 -cipher 'ECDH-RSA-RC4-SHA' -connect www.taobao.com:443 #验证不安全的加密算法是否可以连接
openssl s_client -tls1_2 -cipher "NULL,EXPORT,LOW,DES" -connect www.taobao.com:443 #验证不安全的加密套件是否可以连接
openssl ciphers -v "NULL,EXPORT,LOW,DES" #可被破解的 cipher suite
man openssl #帮助

查看官网公布的安全的和不安全的加密算法信息
www.openssl.org/docs/manmaster/man1/ciphers

3、sslscan

  • 自动识别 ssl 配置错误、过期协议、过时 cipher suite 和 hash 算法
  • 默认会检查 CRIME、heartbleed 漏洞
  • 绿色表示安全、红色黄色需要引起注意
sslscan --tlsall www.taobao.com:443 #TLS 支持的 cipher suite
sslscan --show-certificate --no-ciphersuites www.taobao.com:443 #分析证书详细信息

4、sslyze

  • python 编写
  • 检查 ssl 过时版本
  • 检查存在弱点的 cipher suite
  • 扫描多站点时,支持来源文件
  • 检查是否支持会话恢复
sslyze --regular www.taobao.com:443
nmap --script=ssl-enum-ciphers.nse www.taobao.com

结语

出了上述工具,还有个在线网站
www.ssllabs.com/ssltest/

教程的时候国内刚刚开始全站https
现在已经基本都是https
所以得做了解

更多推荐