博客
关于我
【docker】开启remote api访问,并使用TLS加密
阅读量:537 次
发布时间:2019-03-08

本文共 1726 字,大约阅读时间需要 5 分钟。

CentOS7下配置Docker TLS(SSL)访问

在Docker集群环境中,使用本地socket进行管理确实非常不便,尤其是在需要对外开放Docker服务时。默认情况下,Docker支持通过TCP协议提供服务,但这会直接向外公开Docker集群,存在较大安全风险。为了解决这一问题,我们可以通过TLS(传输层安全)协议对Docker服务进行加密通信。以下是实现这一目标的详细步骤说明。

1. TLS配置:生成CA证书和服务器证书

首先,我们需要生成CA(证书颁发机构)证书和服务器相关的私钥和证书文件。

# 生成CA私钥和证书openssl genrsa -aes256 -out ca-key.pem 4096openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem# 生成服务器私钥和证书openssl genrsa -out server-key.pem 4096openssl req -sha256 -new -key server-key.pem -out server.csropenssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem# 生成客户端私钥和证书openssl genrsa -out key.pem 4096openssl req -new -key key.pem -out client.csropenssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

2. 复制证书文件

将生成的CA证书和服务器证书文件复制到目标服务器的/root/.docker目录下。这些文件可以放在任意位置,但通常我们会将它们放在/root/.docker中,以便于后续配置使用。

# 生成证书文件并设置权限rm -v client.csr server.csrchmod -v 0400 ca-key.pem key.pem server-key.pemchmod -v 0444 ca.pem server-cert.pem cert.pem

3. 修改Docker服务配置

在CentOS7系统中,我们需要修改Docker服务的配置文件,以启用TLS验证。

# 打开Docker服务配置文件进行编辑vim /lib/systemd/system/docker.service

在ExecStart部分,添加TLS验证相关参数:

# 修改后的配置内容ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -D -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/server-cert.pem --tlskey=/root/.docker/server-key.pem

4. 重新加载Docker配置并重启服务

完成配置后,我们需要重新加载systemd服务配置,并重启Docker进程。

# 重新加载配置文件systemctl daemon-reload# 重启Docker服务service docker restart

5. 测试Docker TLS配置

最后,我们需要验证TLS配置是否正确。

在测试机上,将cert.pem和key.pem文件复制到该机上,并执行以下命令:

# 使用`-k`选项可以跳过SSL证书验证curl -k https://
:2375/info --cert ./cert.pem --key ./key.pem

如果返回Docker信息,说明TLS配置已成功完成。

转载地址:http://zufiz.baihongyu.com/

你可能感兴趣的文章
Python基础(2):控制结构
查看>>
Python基础 | 关于“循环”那些事
查看>>
python系列【仅供参考】:python 远程rdp
查看>>
python基于flask搭建http服务(四)—— Docker容器化部署
查看>>
Python块键盘/鼠标输入
查看>>
python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
查看>>
python在gpu上运行_【python】python开启GPU加速
查看>>
Python在def函数中使用for循环
查看>>
Python在def函数中使用for循环
查看>>
Python在Conda环境中,但在Windows虚拟环境中没有激活
查看>>
python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
查看>>
python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
查看>>
Python图像处理:从内存加载jpeg
查看>>
python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
查看>>
python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
查看>>
python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
查看>>
python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
查看>>
Python哪个版本最稳定好用2023.10.19
查看>>
Python和黑客技术的渊源
查看>>
Python和RF编写接口自动化
查看>>