文档中心
DockerCE濡備綍閰嶇疆HTTPS璇佷功锛?姝ユ悶瀹氬畨鍏ㄩ€氫俊锛堥檮瀹炴搷妗堜緥锛?txt
时间 : 2025-09-27 15:45:05浏览量 : 2
一、为什么Docker CE需要HTTPS证书?

想象一下:你家的快递柜(Docker容器)如果没密码锁(HTTPS),任何人都能偷看甚至调包你的包裹(数据)。Docker CE默认使用HTTP通信,这意味着:
- 风险1:中间人攻击(比如咖啡厅Wi-Fi黑客截获你的镜像上传请求)。
- 风险2:镜像仓库账号密码以明文传输,等同于“裸奔”。
真实案例:2025年某公司因Docker API未加密,导致黑客植入挖矿木马,服务器CPU飙升至100%。
二、配置HTTPS证书的3个关键步骤
步骤1:生成自签名证书(适合测试环境)
用OpenSSL工具生成证书,就像给自己办一张“内部通行证”:
```bash
openssl req -x509 -newkey rsa:4096 -nodes -out docker-ce.crt -keyout docker-ce.key -days 365
```
- `docker-ce.crt`:证书文件(相当于身份证)
- `docker-ce.key`:私钥文件(相当于钥匙)
注意:浏览器会警告自签名证书“不安全”,但内网通信足够用。生产环境建议用Let's Encrypt免费证书。
步骤2:修改Docker守护进程配置
告诉Docker:“以后只认HTTPS!” 编辑配置文件`/etc/docker/daemon.json`(没有就新建):
```json
{
"tls": true,
"tlscert": "/path/to/docker-ce.crt",
"tlskey": "/path/to/docker-ce.key",
"hosts": ["tcp://0.0.0.0:2376"]
}
重启Docker服务生效:
systemctl restart docker
避坑指南:如果遇到`端口冲突`错误,可能是默认HTTP服务占用了2375端口,先停用原有服务。
步骤3:客户端连接验证
从另一台机器访问时,必须带上“通行证”(证书文件):
docker --tlsverify --tlscacert=docker-ce.crt --tlscert=docker-ce.crt --tlskey=docker-ce.key -H=tcp://服务器IP:2376 ps
效果对比:
- ? 未加密时命令:`docker -H=tcp://1.2.3.4:2375 ps` (数据裸奔)
- ? 加密后命令:(所有流量被TLS加密,类似访问网银)
三、进阶技巧与常见问题
场景1:如何让浏览器信任自签名证书?
将`.crt`文件导入系统信任库(以Windows为例):
1. 双击`.crt`文件 → “安装证书” → “本地计算机” → “受信任的根证书颁发机构”。
场景2:生产环境推荐方案
- 公有云场景:直接使用云厂商的负载均衡器(如AWS ALB)提供HTTPS卸载。
- 私有化部署:搭配Nginx反向代理 + Let's Encrypt自动续期。
常见报错解决
- `x509: certificate signed by unknown authority` → 客户端未正确指定CA证书路径。
- `Connection refused` → Docker未监听2376端口,检查`daemon.json`配置。
四、提升安全性的额外建议
1. 限制IP访问:在防火墙规则中只允许可信IP连接2376端口。
2. 启用双向认证(mTLS) :要求客户端也提供证书,杜绝仿冒设备接入。
通过以上步骤,你的Docker CE就实现了“快递柜+密码锁+监控摄像头”的三重防护! (完)
TAG:docker ce https 证书,docker配置https,docker容器证书,docker认证工程师是国家承认的,docker ssl