啃Docker之TLS加密通讯部署
一:Docker-TLS加密通讯部署
1.1:什么是TLS?有什么作用?
-
TLS(Transport Layer Security Protocol):传输层安全性协议,其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。
-
TLS的最大优势就在于:TLS是独立与应用协议。高层协议可以透明地分布在TLS协议上面。然后,TLS标准并没有规定应用程序如何在TLS上增加安全性;它如何启动TLS握手协议以及如何解释交换地认证证书地决定权留给协议的设计者和实施者来判断
-
TLS的主要增加内容,TLS的主要目标是使SSL更安全,并是协议的规范更加精确和完善。TLS在SSL v3.0的基础上,提供了以下增加内容:
1.更加安全的MAC算法 2.更加严密的警报 3.“灰色区域”的规范更加明确
1.2:为什么要使用TLS加密?
- 为了防止链路劫持、会话劫持等问题导致 Docker 通信时被中 间人攻击,c/s 两端应该通过加密方式通讯。
1.3:TLS对于安全性的改进
1.对于消息认证使用密钥散列法:TLS使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络,比如internet上传送时,该代码确保记录不会被变更。SSLv3.0还提供给键控消息认证,但是HMAC比SSLv3.0使用(消息认证代码)MAC功能更加安全。
2.增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
3.改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。
4.一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。
5.特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。
1.4:在Docker中部署TLS
- 环境
在公司的docker业务中,一般为了防止链路劫持、会话劫持等问题导致docker通信时被中间人攻击,c/s两端应该通过加密方式通讯
主机名 | IP地址 | 部署的服务 |
---|---|---|
server | 20.0.0.51 | docker-ce |
client | 20.0.0.54 | docker-ce |
-
流程
秘钥key—> 身份前面csr---->(服务器/客户端) (结合ca.pem) 制作证书pem -
开局优化
[root@localhost ~]# hostnamectl set-hostname server '两台主机修改主机名'
[root@localhost ~]# su
[root@server ~]#
[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# su
[root@client ~]#
[root@server ~]# cat >> /etc/hosts << EOF '修改本地主机解析文件'
> 192.168.233.128 server
> 192.168.233.129 client
> EOF
[root@client ~]# cat >> /etc/hosts << EOF
> 192.168.233.128 server
> 192.168.233.129 client
> EOF
[root@client ~]# ping server '是可以互通的'
[root@server ~]# ping client
- server服务器创建CA密码与CA证书
[root@server ~]# mkdir TLS
[root@server ~]# cd TLS/
[root@server TLS]# openssl genrsa -aes256 -out ca-key.pem 4096 '使用rsa非对称秘钥,位数256位,-out 输出密钥文件ca-key.pem'
Generating RSA private key, 4096 bit long modulus
...........................................................................................................................