概述
Docker容器----TLS加密通讯
一:介绍TLS
TLS (Transport Layer Security)指传输层安全,是解决网络安全的重量级武器。传输层安全最早由网景公司所开发,那时的名字还不叫TLS,而是SSL(Secure Sockets Layer),即安全套接字层。
1、TLS的目的
目的是建立起一个安全的通道。在建立安全通道时可以安全地传输数据之前,要经历一个TLS 握手过程 。 可以理解 TLS 协议是一个两阶段的协议 , 一个是握手阶段,一个是应用数据加密传输阶段。
同时,TLS 的协议又具有层次结构,所有的报文都会通过记录层协议 Record Layer Protocol 进行打包传输; 在记录层协议之上,又分为握手协议 Handshake Protocol,改变密码规格协;ChangeCipherSpec Protocol,警告协议 Alert Protocol,以及应用数据协议 Application Data Protocol 。
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密钥文件’
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证书’
4、创建服务器端的私钥
[root@master tls]# openssl genrsa -out server-key.pem 4096
5、认证服务器私钥,签名私钥
[root@master tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
‘使用server-key.pem 密钥文件进行签名,生产私钥证书’
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:创建服务端的证书’
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
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
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行添加准启动内容’
重新启动服务和进程
[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加密通讯所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复