重识Nginx - 12 SSL/TLS 浅析
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重识Nginx - 12 SSL/TLS 浅析相关的知识,希望对你有一定的参考价值。
文章目录
TLS/SSL的发展
-
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的协议原理
SSL/TLS协议是一个分层协议,本身可以分为上下两层:
- 下层为TLS记录层协议(record layer protocal)
- 上层为TLS握手层协议(handshake layer protocal)
在RFC4346中也这样分类,不过上层协议不只是握手协议, 也包括应用层数据、告警协议、密码变更协议,以上四种统称之为TLS Handshake Protocal。
Record层是SSL/TLS的基础封装协议,所有的TLS交互报文都需要通过TLS Record 层进行封装。
无论应用层数据还是TLS握手协议,都经过Record Layer进行封装。解析时通过ContentType字段进行区分。
SSL/TLS协议通过握手协议进行参数协商。协商的参数有:采用的加密算法、认证算法、摘要算法、密钥配送算法
等等。通过握手协议,通信双方协商出相同的加密套件和密钥信息,后面便可以使用协商出的结果对双方的交互报文进行加密,从而实现安全可靠的信息传递。
TLS 安全密码套件
TLS握手过程
SSL/TLS使用证书来实现对数据的加密传输以及身份认证。
导致握手失败的一些原因
- 两边协议版本不兼容
- 两边加密算法无匹配项
SSL的认证方式
SSL的认证方式有3种:
- 单向认证。客户端认证服务器。
- 双向认证。客户端认证服务器、服务器认证客户端。
- 匿名认证。不做任何身份校验。SSL反对使用该模式。
单向认证和双向认证相比,只是不需要客户端上传证书,其他没有区别。
应用场景
目前SSL/TLS应用最多的场景便是:
- 与HTTP结合组成HTTPS。(使用最多的场景)
- 除此之外还有可以保护SMTPs、POP3s等。
配置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
以上是关于重识Nginx - 12 SSL/TLS 浅析的主要内容,如果未能解决你的问题,请参考以下文章