我是靠谱客的博主 心灵美小刺猬,最近开发中收集的这篇文章主要介绍Docker容器----TLS加密通讯Docker容器----TLS加密通讯,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Docker容器----TLS加密通讯

一:介绍TLS

​ TLS (Transport Layer Security)指传输层安全,是解决网络安全的重量级武器。传输层安全最早由网景公司所开发,那时的名字还不叫TLS,而是SSL(Secure Sockets Layer),即安全套接字层。

1、TLS的目的

​ 目的是建立起一个安全的通道。在建立安全通道时可以安全地传输数据之前,要经历一个TLS 握手过程 。 可以理解 TLS 协议是一个两阶段的协议 , 一个是握手阶段,一个是应用数据加密传输阶段。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WmzBwCqZ-1588081455753)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588075758308.png)]

​ 同时,TLS 的协议又具有层次结构,所有的报文都会通过记录层协议 Record Layer Protocol 进行打包传输; 在记录层协议之上,又分为握手协议 Handshake Protocol,改变密码规格协;ChangeCipherSpec Protocol,警告协议 Alert Protocol,以及应用数据协议 Application Data Protocol 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fR3zNjS5-1588081455755)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588075923509.png)]

2、CA认证

​ 证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

CA 证书颁发的时候,证书中是包含密钥对的,同时用户信息也是进行加密的,所以CA颁发的证书具有两个特点:用户发送的信息都是加密的;身份的唯一性。

二:构建TLS加密通信

  • ### 实验环境

一台作为master节点(192.168.48.150)

一台作为client客户端(192.168.48.138)

前提是两台虚拟机都要装好docker的环境。

  • ### 实验步骤

  • 在master节点上配置

1、修改主机名,并配置hosts文件
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# su
[root@master ~]# vim /etc/hosts
127.0.0.1   master     ‘末行添加’
2、创建目录和ca密钥
[root@master ~]# mkdir /tls
[root@master ~]# cd /tls
[root@master tls]# openssl genrsa -aes256 -out ca-key.pem 4096
‘openssl :开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听’
‘genrsa:rsa 非对称密钥’
‘-aes256:指定密钥长度为256位’
‘-out ca-key.pem:创建ca-key.pam密钥文件’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w61HMGaz-1588081455756)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588077224880.png)]

3、创建ca证书
[root@master tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem

‘ -days 1000:有效期是1000天 ’
‘req -new:请求创建新的证书’
‘-x509:证书的一个参数’
‘-key:指定密钥文件’
‘-sha256:哈希验证’
‘-subj “/CN=*”:指定项目名称’
‘-out ca.pam:产生出ca证书’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fkyTpZ7-1588081455758)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588077561013.png)]

4、创建服务器端的私钥
[root@master tls]# openssl genrsa -out server-key.pem 4096

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zRUcvCjT-1588081455759)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588077818677.png)]

5、认证服务器私钥,签名私钥
[root@master tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
‘使用server-key.pem 密钥文件进行签名,生产私钥证书’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rr0bYoRz-1588081455760)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588078076379.png)]

6、 使用ca证书与私钥证书签名,输入密码,生成服务器证书
[root@master tls]# openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

‘openssl x509:使用openssl方式生成 509证书’
‘-in server.csr :导入签名文件’
‘-CA ca.pam :加入CA官方授权的证书’
‘-CAcreateserial -out server-cert.pem:创建服务端的证书’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YffTBNzR-1588081455761)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588078405417.png)]

7、客户端密钥生成,使用密钥进行签名
[root@master tls]# openssl genrsa -out key.pem 4096
[root@master tls]# openssl req -subj "/CN=clinet" -new -key key.pem -out client.csr

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31yfJhZV-1588081455762)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588078847031.png)]

8、创建配置文件
[root@master tls]# echo extendedKeyUsage=clientAuth > extfile.cnf
9、创建签名证书,需指定ca证书、ca秘钥、客户端前面和刚生成的配置文件
[root@master tls]# openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUARr8yA-1588081455762)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588079347171.png)]

10、删除多余的文件,配置docker service文件
[root@master tls]# rm -rf ca.srl client.csr extfile.cnf server.csr
[root@master tls]# vim /lib/systemd/system/docker.service
‘注释14行默认的准启动内容’
‘在15行添加准启动内容’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r4UwbTke-1588081455763)(C:UsersxuminAppDataRoamingTyporatypora-user-images1588079912733.png)]

重新启动服务和进程
[root@master tls]# systemctl daemon-reload 
[root@master tls]# systemctl restart docker
11、 将 /tls/ca.pem 、/tls/cert.pem 、/tls/key.pem 这三个文件复制到客户端/etc/docker下,需输入root密码
[root@master tls]# scp ca.pem root@192.168.48.138:/etc/docker/
[root@master tls]# scp cert.pem root@192.168.48.138:/etc/docker/
[root@master tls]# scp key.pem root@192.168.48.138:/etc/docker/
  • 客户端验证

[root@localhost ~]# hostnamectl set-hostname client
[root@client ~]# vim /etc/hosts
192.168.48.150 master

[root@client ~]# cd /etc/docker/
[root@client docker]# ls
[root@client docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version

在这里插入图片描述

最后

以上就是心灵美小刺猬为你收集整理的Docker容器----TLS加密通讯Docker容器----TLS加密通讯的全部内容,希望文章能够帮你解决Docker容器----TLS加密通讯Docker容器----TLS加密通讯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(26)

评论列表共有 0 条评论

立即
投稿
返回
顶部