重识Nginx - 12 SSL/TLS 浅析

简介: 重识Nginx - 12 SSL/TLS 浅析

20200103193054943.png


TLS/SSL的发展


de15ef2825f54b46a222f24471dea9a4.png



SSL(Secure Socket Layer,安全套接层)v1.0最早于由网景公司(Netscape,以浏览器闻名)在1994年提出,该方案第一次解决了安全传输的问题。


1995年公开发布了SSLv2.0,该方案于2011年被弃用(RFC6176 - Prohibiting Secure Sockets Layer (SSL) Version 2.0)。


1996年发布了SSLv3.0(2011年才补充的RFC文档:RFC 6101 - The Secure Sockets Layer (SSL) Protocol Version 3.0),被大规模应用,于2015年弃用(RFC7568 - Deprecating Secure Sockets Layer Version 3.0)。这之后经过几年发展,于1999年被IETF纳入标准化(RFC2246 - The TLS Protocol Version 1.0),改名叫TLS(Transport Layer Security Protocol,安全传输层协议),和SSLv3.0相比几乎没有做什么改动。


2006年提出了TLS v1.1(RFC4346 - The Transport Layer Security (TLS) Protocol Version 1.1),修复了一些bug,支持更多参数。


2008年提出了TLS v1.2(RFC5246 - The Transport Layer Security (TLS) Protocol Version 1.2)做了更多的扩展和算法改进,是目前(2019年)几乎所有新设备的标配。


TLS v1.3在2014年已经提出,2016年开始草案制定,然而由于TLS v1.2的广泛应用,必须要考虑到支持v1.2的网络设备能够兼容v1.3,因此反复修改直到第28个草案才于2018年正式纳入标准(The Transport Layer Security (TLS) Protocol Version 1.3)。TLSv1.3改善了握手流程,减少了时延,并采用完全前向安全的密钥交换算法。


SSL/TLS的协议原理


网络通讯协议关系图_2020版.pdf

SSL/TLS协议是一个分层协议,本身可以分为上下两层:

  • 下层为TLS记录层协议(record layer protocal)
  • 上层为TLS握手层协议(handshake layer protocal)



1a71a89fd6ab4de5afb466b237bfc679.png


在RFC4346中也这样分类,不过上层协议不只是握手协议, 也包括应用层数据、告警协议、密码变更协议,以上四种统称之为TLS Handshake Protocal。


8cb648ff535c46f081ff5ed55005187d.png


Record层是SSL/TLS的基础封装协议,所有的TLS交互报文都需要通过TLS Record 层进行封装。

无论应用层数据还是TLS握手协议,都经过Record Layer进行封装。解析时通过ContentType字段进行区分。


image.gif


SSL/TLS协议通过握手协议进行参数协商。协商的参数有:采用的加密算法、认证算法、摘要算法、密钥配送算法等等。通过握手协议,通信双方协商出相同的加密套件和密钥信息,后面便可以使用协商出的结果对双方的交互报文进行加密,从而实现安全可靠的信息传递。


TLS 安全密码套件


2f3576d7362b4d8380bfaabbe00a4d1a.png



TLS握手过程

SSL/TLS使用证书来实现对数据的加密传输以及身份认证。


cf4f149c7afe4ff48dc9d7754cd7640e.png


导致握手失败的一些原因

  • 两边协议版本不兼容
  • 两边加密算法无匹配项

如何优雅处理HTTPS中的证书问题

3a3af1f97c1b47b3b8f4951f02460604.png


SSL的认证方式

SSL的认证方式有3种:

  • 单向认证。客户端认证服务器。
  • 双向认证。客户端认证服务器、服务器认证客户端。
  • 匿名认证。不做任何身份校验。SSL反对使用该模式。


17c54c0debfd4672bf57707bdf27834e.png


单向认证和双向认证相比,只是不需要客户端上传证书,其他没有区别。


应用场景

目前SSL/TLS应用最多的场景便是:

  • 与HTTP结合组成HTTPS。(使用最多的场景)
  • 除此之外还有可以保护SMTPs、POP3s等。

SSL/TLS发展历史和SSLv3.0协议详解


配置nginx

server{
  listen 443;
  server_name artisan.com;
  ssl on;
  ssl_certificate C:\\artisan.crt;
  ssl_certificate_key C:\\artisan.key;
  ssl_protocols SSLv3;
  location / {
    root html;
    index index.html;
  }
}


配置对应hosts (win: C:\WINDOWS\system32\drivers\etc\hosts)

ipxxxx  artisan.com


访问 https://artisan.com

相关文章
|
3月前
|
安全 算法 网络安全
SSL/TLS协议如何确保HTTP通信的安全
通过这些机制和过程,SSL/TLS对HTTP通信提供了强大的保护,确保数据不被未授权的第三方访问或篡改,这对维护数据隐私和网络安全至关重要。随着互联网技术的不断进步,SSL/TLS协议本身也在不断更新和升级,以对抗新出现的威胁和满足现代网络的要求。
248 10
|
10月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
5月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
339 10
|
6月前
|
安全 应用服务中间件 网络安全
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
387 0
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
|
安全 网络安全 数据安全/隐私保护
SSL/TLS证书**是一种用于加密网络通信的数字证书
SSL/TLS证书**是一种用于加密网络通信的数字证书
555 6
|
9月前
|
安全 算法 网络安全
SSL/TLS:构建数字世界的加密长城
**协议演进:从网景实验室到全球标准** 1994年,网景公司推出SSL协议,首次实现40位密钥加密传输,开启网络安全新纪元。此后,SSL 3.0、TLS 1.0相继问世,至2018年TLS 1.3将握手速度提升60%,强制前向加密确保历史会话安全。TLS协议通过非对称加密、对称加密和证书信任链等多层架构保障通信安全。2014年POODLE漏洞促使全行业禁用SSL 3.0,催生防降级机制。
|
10月前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
安全 算法 网络安全
SSL/TLS协议是什么?
SSL/TLS协议是什么?
1343 57
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
690 60
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
708 60