首页 > 其他 > 详细

Docker远程端口开启SSL证书认证

时间:2021-04-08 15:19:52      阅读:26      评论:0      收藏:0      [点我收藏+]

前言

之前在aliyun买的云服务器中装了docker,想通过远程端口直接连接docker服务进行操作,就按照网上教程配置了远程端口,但是没过几天发现服务器状态不正常,cpu一直飙升100%,最终排查到是docker中运行的一个容器导致的,但是这个容器不是我自己的,这才发现自己中招了,被挖矿了,但是如何避免被挖矿又能享受这种远程连接的便利呢?可以通过以下两种方式对远程端口进行保护。

  • 安全组中配置白名单,指定访问IP
  • 开启SSL证书认证

其中第一种可直接通过阿里云控制台进行配置实现,且建议云上的服务器在开端口时务必小心,一定要设置IP白名单,而不要图省事全局开放(除了80或者443端口),特别是docker默认远程端口2375,redis默认端口6379,mysql默认端口3306,这些默认端口很可能被黑客找到可乘之机(亲身经历,说多了都是泪啊)。回归正传,下面着重说一下如何为docker远程端口开启SSL证书认证。

使用openssl制作证书密钥

在服务器中新建一个目录,并切换到该目录下

mkdir /etc/docker && cd /etc/docker

创建根证书RSA私钥

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

备注:此处需要两次输入密码,请务必记住该密码,在后面步骤会用到

创建CA证书

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

备注:该步骤以上一步生成的密钥创建证书,也就是自签证书,也可从第三方CA机构签发

创建服务端私钥

openssl genrsa -out server-key.pem 4096

创建服务端签名请求证书文件

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

备注:其中的IP地址为自己服务器IP地址

创建extfile.cnf的配置文件

echo subjectAltName = IP:47.104.254.199,IP:0.0.0.0 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf

备注:其中IP地址改为自己服务器IP地址

创建签名生效的服务端证书文件

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

extfile.cnf文件中增加配置

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

配置Docker支持TLS连接

编辑docker.service配置文件

vim /lib/systemd/system/docker.service

找到ExecStart=开头的一行代码,将其替换为如下内容

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem

备注:此处设置docker远程端口为2375,可根据需要修改

刷新配置,重启Docker

systemctl daemon-reload && systemctl restart docker

验证TLS方式远程连接

可直接通过IDEA自带的远程连接Docker工具进行连接测试

Docker远程端口开启SSL证书认证

原文:https://www.cnblogs.com/yxb-blog/p/14631561.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!