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

拈花ヽ惹草 提交于 2019-12-08 23:35:55

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、证书没弄好

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!