SSL/TLS协议
SSL/TLS是用于TCP协议上的基于安全数据传输为目的的协议, 它可以运用于TCP应用, http应用之上.
SSL年代比较久远, TLS是SSL的后续. 现在基于网络安全,都会选择TLS 1.2 以上版本.
TLS主要有2大功能, 当TCP协议结束3次握手建立连接, TLS会接入进行4次握手.
第一: 验证通过证书的方式客户端身份(可选), 并提供服务端证书给客户端验证服务端身份(客户端可以选择不检查).
第二: 身份验证通过后,基于协定好的秘钥对接下来的数据传输做加密工作.
TLS运用场景
-
HTTP + TLS(HTTPS)服务, 开启客户端认证
这种场景适用于集群内部的运用, 相互认证连接端身份, 确保客户端和服务端都是集群内的实例.
一个cluster下有多个instances在running来保证应用的高可用, 每个instance间的通讯都会选择客户端和服务端双向认证.
客户端连接服务端时, 需要准备一下文件用于服务端检查客户端身份
1, 客户端证书
如果客户端证书是self-signed的证书, 需要把自签名证书的CA导入到服务端的证书库中, 或者服务端指定用此CA来验证客户端提供的自签名证书
如果客户端证书是公有机构signed的证书, 可以明确表明客户端真实身份, 不需要CA
2, private key(public key在证书里面)
服务端获取证书中public key, 配合private key进行客户端的身份验证.
同理客户端检查服务端身份
1, 选择verify服务端身份
如果服务端证书是self-signed的证书, 需要提供自签名证书的CA文件, 并CA导入到客户端的证书库中, 或者客户端指定用此CA来验证客户端提供的自签名证书
如果客户端证书是公有机构signed的证书, 可以明确表明客户端真实身份, 不需要CA提供
2, 放弃verify服务端身份
-
HTTP + TLS(HTTPS)服务, 关闭客户端认证
客户端检查服务端身份
1, 选择verify服务端身份
如果服务端证书是self-signed的证书, 需要提供自签名证书的CA文件, 并CA导入到客户端的证书库中, 或者客户端指定用此CA来验证客户端提供的自签名证书
如果客户端证书是公有机构signed的证书, 可以明确表明客户端真实身份, 不需要CA提供
2, 放弃verify服务端身份
-
HTTP服务
这种运用基本上会越来越少存在安全隐患.
不需要提供任何数字证书