本文共 4004 字,大约阅读时间需要 13 分钟。
在公司的docker业务中,一般为了防止链路劫持、会话劫持等问题导致docker通信时
被中间人攻击,C/S两端应该通过加密方式通讯。两台虚拟机都安装了 docker-ce。
server端-----10.0.0.10 client端------10.0.0.201、修改主机名,并配置hosts文件
hostnamectl set-hostname mastersuvim /etc/hosts127.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密钥文件’Generating RSA private key, 4096 bit long modulus.......................................++..................................................................++e is 65537 (0x10001)Enter pass phrase for ca-key.pem: #输入密码Verifying - Enter pass phrase for ca-key.pem: #确认密码[root@master tls]# ls ca-key.pem #生成的密匙
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证书’[root@master tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pemEnter pass phrase for ca-key.pem: #输入创建ca密匙时的密码[root@master tls]# lsca-key.pem ca.pem #官方颁布的证书
4、创建服务器端的私钥
[root@master tls]# openssl genrsa -out server-key.pem 4096Generating RSA private key, 4096 bit long modulus........................................................................................................++...........++e is 65537 (0x10001)[root@master tls]# lsca-key.pem ca.pem server-key.pem
5、认证服务器私钥,签名私钥
[root@master tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr‘使用server-key.pem 密钥文件进行签名,生产私钥证书’[root@master tls]# lsca-key.pem ca.pem 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:创建服务端的证书’Signature oksubject=/CN=*Getting CA Private KeyEnter pass phrase for ca-key.pem: #输入密码[root@master tls]# lsca-key.pem ca.pem ca.srl server-cert.pem server.csr server-key.pem
7、客户端密钥生成,使用密钥进行签名
[root@master tls]# openssl genrsa -out key.pem 4096Generating RSA private key, 4096 bit long modulus.............++...........................................++e is 65537 (0x10001)[root@master tls]# openssl req -subj "/CN=clinet" -new -key key.pem -out client.csr[root@master tls]# lsca-key.pem ca.pem ca.srl client.csr key.pem server-cert.pem server.csr server-key.pem8、创建配置文件
[root@master tls]# echo extendedKeyUsage=clientAuth > extfile.cnf9、创建签名证书,需指定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.cnf10、删除多余的文件,配置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行添加准启动内容’ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/tls/ca.pem --tlscert=/tls/server-cert.pem --tlskey=/tls/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock加载单元,重启服务
[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@10.0.0.20:/etc/docker/ [root@master tls]# scp cert.pem root@10.0.0.20:/etc/docker/[root@master tls]# scp key.pem root@10.0.0.20:/etc/docker/
客户端验证
[root@localhost ~]# hostnamectl set-hostname client[root@localhost ~]# su[root@client ~]# vim /etc/hosts10.0.0.10 master[root@client ~]# cd /etc/docker/[root@client docker]# lsca.pem cert.pem daemon.json key.json key.pem[root@client docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
转载地址:http://mrkgf.baihongyu.com/