沙滩星空的博客沙滩星空的博客

HTTPS(SSL/TLS)原理和MITM中间人攻击

HTTPS

HTTPS 协议是由 HTTP + TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。

  1. 服务端向数字证书认证机构,提出 公钥证书 申请。
  2. 服务端网站,保存 私钥文件SSL证书(公钥证书)(SSL公钥证书,包含由私钥文件生成的公钥)。
  3. 客户端访问网站,服务端发送 SSL证书
  4. 客户端验证 SSL证书 有效性,生成 随机密钥,并用SSL证书 进行 公钥加密
  5. 客户端将 公钥加密 过的 随机密钥,发送给服务端。
  6. 服务端通过 私钥解密,得到客户端发过来的 随机密钥
  7. 服务端和客户端,都通过同样的 随机密钥,对所有传输数据,进行 对称加密 和解密。

1-2前两个步骤,为 SSL证书申请; 3-7后五个步骤,为客户端和服务端网站之间的 数据传输.

SSL和TLS

SSL: SSL(Secure Socket Layer 安全套接层)是TCP/IP协议中基于HTTP之下,TCP之上的一个可选协议层。
为了解决HTTP数据明文传输的隐患,网景(Netscap)公司推出了SSL。而越来越多的人也开始使用HTTPS(HTTP+SSL)。

TLS: HTTPS的推出受到了很多人的欢迎,在SSL更新到3.0时, 互联网工程任务组(IETF)对SSL3.0进行了标准化,并添加了少数机制,并将其更名为TLS1.0(Transport Layer Security 安全传输层协议)。

TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1。

CA证书

HTTPS网站服务端的SSL证书(NGINX)配置示例:

#   ssl_certificate /ssl/sitename/fullchain.cer;
    ssl_certificate /ssl/sitename/sitename.pem;
    ssl_certificate_key /ssl/sitename/sitename.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;

MITM证书

mitmproxy程序运行生成证书如下:

服务端私钥

  • mitmproxy-ca.pem PEM格式, 证书私钥
  • mitmproxy-ca.p12 PKCS12格式, 证书私钥

客户端公钥

  • mitmproxy-ca-cert.pem PEM格式, 适用多数 非Windows 平台。如 Linux macOS iOS
  • mitmproxy-ca-cert.p12 PKCS12格式, 适用 Windows 平台
  • mitmproxy-ca-cert.cer PEM格式, 适用 部分Android
curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca-cert.pem https://example.com/
wget -e https_proxy=127.0.0.1:8080 --ca-certificate ~/.mitmproxy/mitmproxy-ca-cert.pem https://example.com/

客户端请求HTTPS链接时,指定公钥加密

openssl genrsa -out cert.key 2048
# (Specify the mitm domain as Common Name, e.g. \*.google.com)
openssl req -new -x509 -key cert.key -out cert.crt
cat cert.key cert.crt > cert.pem

CA证书简介 https://docs.mitmproxy.org/stable/concepts-certificates/
彻底搞懂HTTPS的加密原理 https://zhuanlan.zhihu.com/p/43789231
简述HTTPS中的加密算法 https://www.jiamisoft.com/blog/29012-https-jm.html
TLS和SSL证书有什么区别 https://blog.csdn.net/jiamisoft/article/details/125410388
HTTP和HTTPS协议,看一篇就够了 https://blog.csdn.net/xiaoming100001/article/details/81109617

未经允许不得转载:沙滩星空的博客 » HTTPS(SSL/TLS)原理和MITM中间人攻击

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址