SNOWTOO
Just for Sharing

docker开启tls远程访问

2018年09月16日 分类:学习笔记docker

在装好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.snowtoo.com/blog/detail/133