#### 1.环境准备

```bash
# 查看Docker服务器主机名
hostnamectl
```

![1582697962553](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582697962553.png)

这里记住我的主机名s130就好

```bash
# 静态主机名修改
vi /etc/hostname
# 临时主机名修改(重启失效)
hostname s130 
```

#### 2.创建TLS证书

创建create_crets.sh文件并执行,生成的证书在/certs/docker目录下,

```bash
# create_crets.sh,将【证书生成脚本】内容复制进去
touch create_crets.sh 
chmod 755 create_crets.sh
```

```bash
# 证书生成脚本
#!/bin/bash
set -e
if [ -z $1 ];then
echo "请输入Docker服务器主机名"
exit 0
fi
HOST=$1
mkdir -p /certs/docker
cd /certs/docker
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
# 配置白名单,推荐配置0.0.0.0,允许所有IP连接但只有证书才可以连接成功
echo subjectAltName = DNS:$HOST,IP:0.0.0.0 > extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
rm -v client.csr server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
```

执行脚本生成证书,按照提示输入

```bash
# 传递的参数s130为服务器的主机名,不能是IP
sh create_crets.sh s130
```

![1582698303431](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582698319870.png)

所有密码输入同一个就好,要注意输入Docker服务器主机名s130

#### 3.配置Docker开启TLS认证

```
vi /usr/lib/systemd/system/docker.service
```

```bash
# 在ExecStart属性后追加
--tlsverify --tlscacert=/certs/docker/ca.pem --tlscert=/certs/docker/server-cert.pem --tlskey=/certs/docker/server-key.pem \
-H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock \
```

![](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582698635304.png)

```bash
# 重新加载docker配置后重启
systemctl daemon-reload
systemctl restart docker
```

```bash
# 查看2376端口是否启动
netstat -tunlp
```

![1582684501742](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582684501742.png)

#### 3.Docker Remote API本机连接测试

```bash
# 没有指定证书时,报错含义是签发证书机构未经认证,无法识别
curl https://s130:2376/info 
```

![1582689841980](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582689841980.png)

```bash
# 指定证书访问ok
curl https://s130:2376/info --cert /certs/docker/cert.pem --key /certs/docker/key.pem --cacert /certs/docker/ca.pem
```

![1582688783305](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582688783305.png)

#### 4.IDEA连接配置和测试

从Docker服务器生成的客户端所需的3个密钥下载到我们本地机器上去

![1582699253832](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582699253832.png)

配置本地机器的域名解析映射(推荐SwitchHosts工具)

![1582699718289](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582699718289.png)

打开IDEA配置Docker Remote API的URL和密钥存放的路径

![1582699603750](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582699603750.png)

maven配置修改

![1582703336369](C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1582703336369.png)

Docker添加TLS认证修复2375端口暴露引发的漏洞的更多相关文章

  1. Centos7 Docker配置TLS认证的远程端口的证书生成教程(shell脚本一键生成)

    通过 TLS来进行远程访问 百度百科 - TLS.我们需要在远程 docker 服务器(运行 docker 守护进程的服务器)生成 CA 证书,服务器证书,服务器密钥,然后自签名,再颁发给需要连接远程 ...

  2. Docker 开启非认证的2375端口,提供外部访问 Docker

    1.编辑 Docker 服务的配置文件 vi /usr/lib/systemd/system/docker.service 或者 vi /lib/systemd/system/docker.servi ...

  3. Docker配置TLS认证,修复因暴露2375端口引发漏洞

    1.环境准备 # 查看Docker服务器主机名hostnamectl 这里记住我的主机名s130就好 # 静态主机名修改vi /etc/hostname# 临时主机名修改(重启失效)hostname  ...

  4. Docker开启Remote API 访问 2375端口

    Docker常见端口 我看到的常见docker端口包括: 2375:未加密的docker socket,远程root无密码访问主机2376:tls加密套接字,很可能这是您的CI服务器4243端口作为h ...

  5. Docker实战 | 第四篇:Docker启用TLS加密解决暴露2375端口引发的安全漏洞,被黑掉三台云主机的教训总结

    一. 前言 在之前的文章中 IDEA集成Docker插件实现一键自动打包部署微服务项目,其中开放了服务器2375端口监听,此做法却引发出来一个安全问题,在上篇文章评论也有好心的童鞋提示,但自己心存侥幸 ...

  6. Centos7系统下Docker开启认证的远程端口2376配置教程

    docker开启2375会存在安全漏洞 暴露了2375端口的Docker主机.因为没有任何加密和认证过程,知道了主机IP以后,,任何人都可以管理这台主机上的容器和镜像,以前贪图方便,只开启了没有认证的 ...

  7. Docker开启TLS和CA认证

    前言:Docker直接开启2375端口是不安全的,别人只要连上之后就可以任意操作,下面是开启Docker的TLS和CA认证方法,并使用Jenkins和Portainer连接. 一.生成证书 查看服务器 ...

  8. docker --swarm启动2375端口监听

    首先要下载swarm docker pull swarm 然后停掉docker服务: service docker stop 然后启动deamon: sudo dockerd -H tcp://0.0 ...

  9. centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)

    目录 目录 前言 集群详情 环境说明 安装前准备 提醒 一.创建TLS证书和秘钥 安装CFSSL 创建 CA (Certificate Authority) 创建 CA 配置文件 创建 CA 证书签名 ...

随机推荐

  1. markdown基础使用技巧

    markdown基础使用技巧 通过``创建代码形式,不同形式可以叠加(比如:斜体+加粗) 块级元素 通过return/Enter实现切换段落/创建段落 通过shift+return/enter 实现换 ...

  2. day1 linux常用命令(一)

  3. ubuntu开发机所需工具,做个记录,不断补充

    文件搜索 FSearch 用了下可以, 类似windows下的Everything 或者mac的cmd+空格 地址 安装: sudo add-apt-repository ppa:christian- ...

  4. MetadataCache更新

    MetadataCache什么时候更新 updateCache方法用来更新缓存的. 发起线程 controller-event-thread controller选举的时候 CLASS_NAME ME ...

  5. [noip2002] 产生数

    题目描述 给出一个整数 n (n<1030)和 k 个变换规则 (k < 15) . 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如:n = 234 .有规则( k=2  ...

  6. jQuery css()方法及方法

    知识点一:jQuery css()方法 1.css()方法是什么? css()方法设置或返回被选元素的一个或多个样式属性. 2.返回CSS属性 1.$("p").css(" ...

  7. excel如何写宏?如何用按钮?

    注:本次测试版本 excel版本2019 写宏? 准备工作(使用宏的一切前提)===========文件-选项-自定义功能区 (勾选开发工具) 开始写宏=======右击sheet1--查看代码    ...

  8. OptaPlanner的新约束表达方式 Constraint Streams

    有好些时间没有写过关于OptaPlanner的东西了,其实近半年来,OptaPlanner还是推出了不少有用.好用的新特性.包括本文讲到的以Stream接口实现评分编程.关于OptraPlanner的 ...

  9. ajax、反向ajax、jsonp详解

    ajax详解 什么是ajax 其实ajax已经属于老技术了,现在几乎没人不会用了,在这里主要是把底层的东西给大家分享一下,以备应对装逼的面试官. ajax即“Asynchronous Javascri ...

  10. Java成员变量和局部变量的区别

    定义位置不同: 成员变量:类中方法外 分为类变量(static修饰).实例变量(没有使用static修饰) 局部变量:方法内.代码块内 默认值不同: 成员变量:有默认初始化值 局部变量:没有默认初始化 ...