SSL/TLS协议是一个分层协议,本身可以分为上下两层:
在RFC4346中也这样分类,不过上层协议不只是握手协议, 也包括应用层数据、告警协议、密码变更协议,以上四种统称之为TLS Handshake Protocal。
Record层是SSL/TLS的基础封装协议,所有的TLS交互报文都需要通过TLS Record 层进行封装。
无论应用层数据还是TLS握手协议,都经过Record Layer进行封装。解析时通过ContentType字段进行区分。
SSL/TLS协议通过握手协议进行参数协商。协商的参数有:采用的加密算法、认证算法、摘要算法、密钥配送算法
等等。通过握手协议,通信双方协商出相同的加密套件和密钥信息,后面便可以使用协商出的结果对双方的交互报文进行加密,从而实现安全可靠的信息传递。
SSL/TLS使用证书来实现对数据的加密传输以及身份认证。
导致握手失败的一些原因
SSL的认证方式有3种:
单向认证和双向认证相比,只是不需要客户端上传证书,其他没有区别。
目前SSL/TLS应用最多的场景便是:
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