今天也来点Docker,Docker-TLS加密通讯

2023-05-16

这里写目录标题

  • 一、TLS加密通讯的概述
  • 二、TLS加密通讯的部署
    • 2.1、搭建环境
    • 2.2 部署过程
    • 2.3 验证加密通讯

一、TLS加密通讯的概述

  • 用TLS加密通讯原因
    为了防止链路劫持、会话劫持等问题导致 Docker 通信时被中 间人攻击,c/s 两端应该通过加密方式通讯。
  • 对称密钥,例如DES、3DES、AES,长度不同,长度越长安全越高,解密速度越慢。
  • 非对称密钥,分为公钥和私钥,例如RSA 公钥:所有人可知(锁),私钥(钥匙)个人身份信息,不可抵赖。
  • 封装在证书中:个人信息,密钥,有效期

二、TLS加密通讯的部署

2.1、搭建环境

节点地址安装软件
master20.0.0.50docker-ce
Client20.0.0.60docker-ce

2.2 部署过程

  • Server
[root@cgroup ~]# hostnamectl set-hostname master
[root@cgroup ~]# bash
[root@master ~]#systemctl stop firewalld
[root@master ~]# setenforce 0

[root@master ~]# mkdir /tls
[root@master ~]# cd /tls

[root@master tls]# vim /etc/hosts
127.0.0.1   master

#创建ca密钥,输入密码123123
[root@master tls]# openssl genrsa -aes256 -out ca-key.pem 4096
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:

#创建ca证书,输入密码123123
[root@master tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
Enter pass phrase for ca-key.pem:

#创建服务器私钥
[root@master tls]# openssl genrsa -out server-key.pem 4096
Generating RSA private key, 4096 bit long modulus
.........................................++
......................................++
e is 65537 (0x10001)

#签名私钥
[root@master tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr

#使用ca证书与私钥证书签名,输入密码123123
[root@master tls]# openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
Signature ok
subject=/CN=*
Getting CA Private Key
Enter pass phrase for ca-key.pem:

#生成客户端密钥
[root@master tls]# openssl genrsa -out key.pem 4096
Generating RSA private key, 4096 bit long modulus
........................................................................................................................................................................................................++
..++
e is 65537 (0x10001)

#签名客户端
[root@master tls]# openssl req -subj "/CN=client" -new -key key.pem -out client.csr

#创建配置文件
[root@master tls]# echo extendedKeyUsage=clientAuth > extfile.cnf

#签名证书,输入密码123123
[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
Signature ok
subject=/CN=client
Getting CA Private Key
Enter pass phrase for ca-key.pem:

#删除多余文件
[root@master tls]# rm -rf ca.srl client.csr extfile.cnf server.csr

#查看生成文件
[root@master tls]# ls
ca-key.pem  ca.pem  cert.pem  key.pem  server-cert.pem  server-key.pem
  • 配置docker
    vim /lib/systemd/system/docker.service
    在这里插入图片描述

  • 重启进程
    systemctl daemon-reload

  • 重启docker服务
    systemctl restart docker

  • 将 /tls/ca.pem /tls/cert.pem /tls/key.pem 三个文件复制到另一台主机

[root@master tls]# scp ca.pem root@20.0.0.60:/etc/docker/
The authenticity of host '20.0.0.60 (20.0.0.60)' can't be established.
ECDSA key fingerprint is SHA256:N36uwPtXA/RHGdEsLwiaV6x0pMPitNj+MSO3APPZtC4.
ECDSA key fingerprint is MD5:14:cf:b4:13:36:a1:ea:c6:dc:01:f5:83:65:ca:b0:39.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '20.0.0.60' (ECDSA) to the list of known hosts.
root@20.0.0.60's password: 
ca.pem                                                                100% 1765     2.6MB/s   00:00    
[root@master tls]# scp cert.pem root@20.0.0.60:/etc/docker/
root@20.0.0.60's password: 
cert.pem                                                              100% 1696     1.3MB/s   00:00    
[root@master tls]# scp key.pem root@20.0.0.60:/etc/docker/
root@20.0.0.60's password: 
key.pem                                                               100% 3247     1.3MB/s   00:00    

2.3 验证加密通讯

  • Server上验证
[root@master tls]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

  • Client上验证
[root@client ~]# vim /etc/hosts
20.0.0.50 master

[root@client ~]# cd /etc/docker/
[root@client docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

今天也来点Docker,Docker-TLS加密通讯 的相关文章

  • 3.2.1 通过扫描装配你的Bean

    对于扫描装配而言使用的注解是 64 Component和 64 ComponentScan 64 Component是标明哪个类被扫描进入IoC容器 xff0c 而 64 ComponentScan则是标明采用何种策略去扫描装配Bean 修
  • 3.5 使用属性文件

    可以采用默认为我们配置的application properties xff0c 也可以使用自定义的配置文件 引入属性文件依赖 span class token tag span class token tag span class tok
  • 3.6 条件装配Bean

    Bean初始化前 xff0c 对某些属性进行校验 xff0c 满足校验才去装配数据源 为了处理这样的场景 xff0c 需要用到 64 Conditional注解 xff0c 同时需要配合另外一个接口Condition xff08 org s
  • 3.7 Bean的作用域

    isSingleton方法如果返回true xff0c 则Bean在IoC容器中以单例存在 xff0c 这也是Spring IoC容器的默认值 xff1b 如果isPrototype方法返回true xff0c 则当我们每次获取Bean的时
  • 3.8 使用@Profile

    在企业开发的过程中 xff0c 项目往往要面临开发环境 测试环境 准生产环境和生产环境的切换 xff0c 每一套的上下文是不一样的 xff0c 它们有各自的数据库资源 Profile机制 xff1a 实现各个环境之间的切换 假设存在dev
  • 3.9 引入XML配置Bean

    注解 64 ImportResource xff1a 可以引入对应的XML文件 xff0c 用以加载Bean 有时候有些框架 xff08 如Dubbo xff0c Cat xff09 是基于Spring的XML方式进行开发的 xff0c 这
  • 第2章概述

    示例代码 xff1a span class token doctype span class token punctuation lt span span class token doctype tag DOCTYPE span span
  • 【无标题】

    简单接口HelloService span class token keyword public span span class token keyword interface span span class token class nam
  • 穷举法解华为bl锁

    穷举法解华为bl锁 python3代码测试截图 灵感来自于 xff1a https blog csdn net qq 40169767 article details 90481748 但是我不懂shell脚本 xff0c 那个脚本又运行不
  • 4.1.2 ProxyBean的实现

    代理 xff0c 可控制或增加对目标对象的访问 ProxyBean代码 xff1a span class token keyword package span span class token namespace com span clas
  • IDEA中打开.properties文件乱码

    问题 xff1a IDEA中打开 properties文件乱码 解决方法 xff1a 一 代开settings设置 二 搜索File Encodings 三 在Properties Files中选择编码格式为UTF 8 xff0c 注意一定
  • 怎么避免下载流氓软件,误下载后怎么处理

    经历复盘 xff1a 2022 1 20时 xff0c 为了下载SPSS时不小心下载了流氓软件 回过头来复盘一下 xff0c 一个是因为当时不小心点击了电信高速下载 xff0c 下载了一个P2P软件 点击安装的时候就感觉不太对劲 xff0c
  • eclipse查看不了源码怎么办

    问题 使用eclipse的过程中 xff0c 发现ctrl 43 鼠标左键 查看不了源码 解决方案 可以在弹出的提示框中添加源码的压缩包 xff0c 压缩包在你安装的jdk的根目录下 xff0c 如我的是C Application java
  • 关于if循环语句的四种写法

    if语句在java中起到判断语句的作用写法有四种 xff0c 如下 xff1a if if else if else if if else if else 例如 xff1a 一 xff1a if语句第一种写法 if 好处 xff1a 简单便
  • ROS学习——2编写简单的发布者和订阅者

    ros官网教程 xff1a 编写简单的发布者和订阅者 目录 c 43 43 版python版注意 c 43 43 版 在新建好的catkin ws工作空间下建立 cd catkin ws src 在该目录下创建自己的功能包 xff1a ca
  • ubuntu文件系统结构与磁盘管理

    一 根目录 xff1a Linux下 就是根目录 所有的目录都是由根目录衍生出来的 二 ubuntu 文件系统结构 xff1a 三 绝对路径和相对路径 xff1a 绝对路径 xff1a 从根目录 算起的路径 相对路径 xff1a 相对于目前
  • Framebuffer应用编程

    一 Framebuffer介绍 在Linux系统中通过Framebuffer xff08 帧缓冲 xff09 驱动程序来控制LCD Framebuffer就是一块内存 xff0c 里面保存着一帧图像 Framebuffer中保存着一帧图像的
  • Java编辑提示错误: 编码 GBK 的不可映射字符 (0x80)

    在DOS界面运行编译Java文件时提示错误 xff1a 编码 GBK 的不可映射字符 0x80 理解 xff1a java程序在编译的时候 xff0c 需要使用JDK开发工具包中的JAVAC EXE命令 xff0c 而JDK开发工具包是国际
  • makefile教程

    Makefile是一种用于构建软件项目的自动化工具 xff0c 通过定义一系列规则和依赖关系 xff0c 可以自动化构建 编译 测试和安装软件项目 在本篇教程中 xff0c 我将介绍如何编写一个简单的Makefile xff0c 并解释Ma
  • 原来制作数据可视化大屏这么简单,这三步就能完成

    不知道大家在对数据进行可视化处理的时候 xff0c 有没有碰到过以上问题 xff1f 身为一位经常需要整理数据 可视化处理的数据人 xff0c 我真的心有体会 随着越来越多的头部企业启动数据大屏展示公司的年度 战绩 xff0c 以数据大屏为

随机推荐