为了账号安全,请及时绑定邮箱和手机立即绑定

Docker - 通过IDEA和CA证书加密远程链接到服务器上的Docker

标签:
Docker 容器

Docker - 通过IDEA和CA证书加密远程链接到服务器上的Docker


1、直接设置任意远程访问存在的问题

因为docker 默认是root 权限,允许所有人访问,直接把2375端口暴露在外网相当于直接把服务器的root 权限拱手送人,因此我们需要构建一个加密的TCP链接,以Https的方式连接到远程的docker 服务器

2、创建一个ca 的文件夹

mkdir -p /usr/local/ca
cd /usr/local/ca

3、创建一个key

openssl genrsa -aes256 -out ca-key.pem 4096

提示你需要输入密码和确认密码,请记住这个密码

4、填写一些基本的信息,国家啊,地区什么的

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

你可以乱填,或者参考如下的填法
在这里插入图片描述

文字版

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Hangzhou, Zhejiang Province, People's Republic of China
Locality Name (eg, city) [Default City]:XIACHENG
Organization Name (eg, company) [Default Company Ltd]:WRETCHANT.COM
Organizational Unit Name (eg, section) []:ONLINE ZUOZUO
Common Name (eg, your name or your server's hostname) []:wretchant

5、生成server-key.pem

openssl genrsa -out server-key.pem 4096

6、绑定IP或者域名

$HOST 这个值,填写你的服务器外网IP 或者服务器外网域名

openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr

在这里插入图片描述

7、配置白名单

$HOST 就是你第六步设置的那个 $HOST

echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >> extfile.cnf

这里如果你设置的IP ,则需要吧DNS 改为IP,如图
在这里插入图片描述

你如果希望只有指定的IP能够访问的话,请把0.0.0.0 改为指定IP,不过一般情况下,个人的网络是没有固定的公网IP的,所以建议设置成0.0.0.0,但是需要证书才能访问

8、生成ca-key

echo extendedKeyUsage = serverAuth >> 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

9、生成cert.pem

需要输入之前设置的密码

openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf

10、修改权限

chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

11、把证书复制过去

cp server-*.pem  /etc/docker/
cp ca.pem /etc/docker/

12、修改docker 的配置

vi /lib/systemd/system/docker.service

把ExecStart 的值设置为如下

/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock

在这里插入图片描述

13、重启docker

systemctl daemon-reload
systemctl restart docker 
service docker restart

14、下载连接所需的证书文件

把这几个文件下载到你的电脑上,新建一个文件夹供着
在这里插入图片描述

15、通过IDEA 的docker 插件进行连接

1、默认是tcp 的,你要改成https,端口你之前设置的什么端口就是什么端口,第十二步
2、然后选择你放证书的那个文件夹
在这里插入图片描述

16、连接到远程docker

成功连接,连接不上的,查找如下原因

1、tcp连接没换
2、端口不对
3、服务器防火墙没放端口
4、云服务器防火墙没放端口
5、证书没弄好

一定要仔细,一步错,就连不上
在这里插入图片描述

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消