Docker开启TLS和CA认证, 解决暴露2375端口引发的安全漏洞, 并使用idea连接并推送镜像

Docker AC认证教程 解决暴露2375端口引发的安全漏洞

创建证书生成脚本 cert.sh, 放置/script目录

"提示" /mydata/cert/docker这个目录改了下面相关都得改 自己替换 

mkdir -p /mydata/cert/script /mydata/cert/docker #cert文件目录   
touch /mydata/cert/script/cert.sh   #创建脚本文件
vim /mydata/cert/script/cert.sh   #编辑脚本

加入脚本命令 修改文本里服务器ip 保存

#!/bin/bash 
set -e
if [ -z $1 ];then
echo "服务器ip 示例192.168.1.1"
exit 0
fi
HOST=$1
mkdir -p /mydata/cert/docker
cd /mydata/cert/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:$HOST,IP:0.0.0.0,IP:127.0.0.1 > 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

在这里插入图片描述

执行 cert.sh 脚本, 生成证书放置 /mydata/cert/docker 目录中

#示例 sh /mydata/cert/script/cert.sh 192.168.1.1
sh /mydata/cert/script/cert.sh +(服务器ip 和上面命令的一致) 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6VV0moRJ-1664437416953)(img_3.png)]

按照提示输入相关信息,密码随便输入一致就行,其他信息可留空,等脚本指定完成之后

在这里插入图片描述

可在 /mydata/cert/docker 目录查看到生成的证书

在这里插入图片描述

配置Docker启用TLS

#编辑Docker配置
vim /usr/lib/systemd/system/docker.service
# 整段复制出来改动再黏贴到服务器  不允许 \ 换行  可能会导致Docker启动失败
#端口自己改一下 记得配置开放端口和防火墙    
#/mydata/cert/docker  这个AC加密文件路径和上面创建一致 不一致自己调整
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/mydata/cert/docker/ca.pem --tlscert=/mydata/cert/docker/server-cert.pem --tlskey=/mydata/cert/docker/server-key.pem -H tcp://0.0.0.0:12345 -H unix:///var/run/docker.sock

更新并重启Docker

systemctl daemon-reload && systemctl restart docker

去这个目录/mydata/cert/docker 4个文件下载到本地

ca.pem
ca-key.pem
cert.pem
key.pem

idea插件连接 docker

在这里插入图片描述

连接Docker

在这里插入图片描述

Maven 连接 Docker 配置文件

            <!--docker镜像build插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <executions>
                    <!--如果想在项目打包时构建镜像添加-->
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 制作者提供本人信息 -->
                    <maintainer>508578631@qq.com</maintainer>
                    <!--配置jdk -->
                    <baseImage>openjdk:8</baseImage>
                    <!--配置启动内存 执行-->
                    <entryPoint>["java","-Xms256m","-Xmx256m","-jar","/${project.build.finalName}.jar"]</entryPoint>
                    <!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
                    <imageName>aw/${project.artifactId}</imageName>
<!--                    自己编写的DockerFile 地址-->
<!--                    <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>-->
                    <!--远程Docker的地址-->
                    <dockerHost>${docker.host}</dockerHost>
                    <!--tls证书-->
                    <dockerCertPath>D:\h-my\pem</dockerCertPath>
                    <rm>true</rm>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

打包推送到配置的docker

在这里插入图片描述

查看是否推送成功

在这里插入图片描述

启动容器

在这里插入图片描述
参考文章
本文站在众多前人基础上完善而成,主要参考了如下文章:
https://www.cnblogs.com/haoxianrui/p/14095306.html
在这里插入图片描述

❤️ 看完有所收获?希望爱学习的你不要吝啬三连击哟[点赞 + 收藏 + 评论]~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值