#### 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. Docker添加TLS认证修复2375端口暴露引发的漏洞

    #### 1.环境准备 ```bash# 查看Docker服务器主机名hostnamectl``` ![1582697962553](C:\Users\86176\AppData\Roaming\Ty ...

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

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

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

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

  4. docker 暴露2375 端口。

    网上找的.大多不能用...一下是我自己找了半天的方法...,可能是版本太旧的原因 下图解决方法: ubuntu: 18.04 docker: Docker version 18.09.2, build ...

  5. Docker配置整理

    目录: 以非root用户身份管理Docker 配置Docker以在启动时启动 配置Docker守护程序监听连接的位置 以非root用户身份管理Docker 默认情况下,Docker运行权限由用户roo ...

  6. docker远程访问TLS证书认证shell

    docker开启远程访问端口,防止非法访问 配置证书认证 配置防火墙或安全策略 #!/bin/bash # docker.tls.sh # 环境centos 7 ,root # 创建 Docker T ...

  7. Docker开启TLS和CA认证

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

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

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

  9. [转帖]龙芯:Docker 配置与实践清单

    Docker 配置与实践清单 http://www.sohu.com/a/254904706_198222 文章对来官方文档及 Docker Links[1] 中链接内容进行归档整理,包含了日常工作中 ...

随机推荐

  1. openpyxl 模块 读写Excel

    import openpyxl #写到execl中def write_execl(): book=openpyxl.Workbook() sheet=book.active #获取默认sheet # ...

  2. Java 方法之形参和实参 、堆、栈、基本数据类型、引用数据类型

    * 形式参数:用于接收实际参数的变量(形式参数一般就在方法的声明上) * 实际参数:实际参与运算的变量 * 方法的参数如果是基本数据类型:形式参数的改变不影响实际参数. * * 基本数据类型:byte ...

  3. String 对象-->length 属性

    1.定义和用法 length 属性返回字符串的长度(字符数). 语法: string.length 注意:根据各国字符长度计算长度 举例: var str = 'abner pan' console. ...

  4. 三、Pycharm2019.3.3的安装

    一:什么是Pycahrm PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动 ...

  5. 数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出

    此题如果直接使用有序的TreeMap就不需要这样折腾: 1.map的key值唯一性,故就不在需要set集合来去重 2.使用map后利用key的唯一性,把序列号相同的数据直接加在一起,代码会很简洁 pa ...

  6. python初学(一)

    1.输入一个百分制成绩,要求输出成绩等级A.B.C.D.E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E. 要求:1)用if语句实现:2)输入百分制成绩 ...

  7. 通过神秘代码登录自己的QQ

    通过神秘代码登录自己的QQ 如图:是怎么做成的呢? 其实很明显,这个是QQ号码的16进制 所以网上搜索进制转换打开一个网页 输入自己的QQ号码,得到16进制的QQ号码 在QQ页面账号处先添加0x然后复 ...

  8. L1线性回归

    线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 代码下载地址 https://download.csdn.net/download/ ...

  9. summary && scenarios

    小组中期总结 项目目标: 我们的目标是制作一款pdf阅读器的必应查词插件,帮助大家在阅读英文资料的时候查单词更加的方便并且可以帮助人们英语学习. 痛点:对于在电脑上现在屏幕取词软件已经做得相当好了,所 ...

  10. X - Ehab and Path-etic MEXs CodeForces - 1325C

    MMP,差一点就做对了. 题目大意:给你一个树,对这个树的边进行编号,编号要求从0到n-1,不可重复,要求MEX(U,V)尽可能的小, MEX(x,y)的定义:从x到y的简单路径上,没有出现的最小编号 ...