docker开启tls远程访问
在装好docker之后,我们可以在本机通过127.0.0.1或者socket来访问docker服务,但是有时候我们想访问远程的docker服务,比如docker服务安装在一台服务器上,本地电脑通过docker客户端直接连上服务器的docker服务,方便部署和调试。下面记录docker开启远程访问的操作步骤,并且使用tls增加安全性。
创建ca密钥
openssl genrsa -aes256 -out ca-key.pem 4096
创建ca证书
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=docker.snowtoo.com" -sha256 -new -key server-key.pem -out server.csr
创建配置文件
echo subjectAltName = DNS:docker.snowtoo.com,IP:{来源ip},IP:127.0.0.1 > extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
使用ca证书与私钥证书签名,这一个days可以设大一点,-extfile extfile.cnf可以去掉,不限制来源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
创建配置文件
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
服务端的配置
mkdir /etc/docker/
cp ca.pem /etc/docker/
cp server-cert.pem /etc/docker/
cp server-key.pem /etc/docker/
配置docker启动参数
vim /lib/systemd/system/docker.service
#监听tcp和sock
#ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H=0.0.0.0:2376 -H unix:///var/run/docker.sock
在客户端使用证书访问远程docker服务
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://docker.snowtoo.com:2376 version
作者:wuyuan
本文来自Wuyuan's Blog 转载请注明,谢谢!
文章地址: https://www.wuyuans.com/blog/detail/133