博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker容器通信安全----TLS加密通讯
阅读量:2134 次
发布时间:2019-04-30

本文共 4004 字,大约阅读时间需要 13 分钟。

目录

一、TLS加密通信

在公司的docker业务中,一般为了防止链路劫持、会话劫持等问题导致docker通信时

被中间人攻击,C/S两端应该通过加密方式通讯。

二、搭建部署

2.1、搭建环境

两台虚拟机都安装了 docker-ce。

server端-----10.0.0.10
client端------10.0.0.20

2.2、server端部署

1、修改主机名,并配置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.pem

在这里插入图片描述

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行添加准启动内容’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/

你可能感兴趣的文章
visual studio调试内存泄漏工具
查看>>
开源Faac实现PCM编码AAC
查看>>
Windows下wave API 音频采集
查看>>
借船过河:一个据说能看穿你的人性和欲望的心理测试
查看>>
AndroidStudio 导入三方库使用
查看>>
Ubuntu解决gcc编译报错/usr/bin/ld: cannot find -lstdc++
查看>>
解决Ubuntu14.04 - 16.10版本 cheese摄像头灯亮却黑屏问题
查看>>
解决Ubuntu 64bit下使用交叉编译链提示error while loading shared libraries: libz.so.1
查看>>
VS生成DLL文件供第三方调用
查看>>
Android Studio color和font设置
查看>>
Python 格式化打印json数据(展开状态)
查看>>
Centos7 安装curl(openssl)和libxml2
查看>>
Centos7 离线安装RabbitMQ,并配置集群
查看>>
Centos7 or Other Linux RPM包查询下载
查看>>
运行springboot项目出现:Type javax.xml.bind.JAXBContext not present
查看>>
Java中多线程向mysql插入同一条数据冲突问题
查看>>
Idea Maven项目使用jar包,添加到本地库使用
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>