当前位置: 首页 > news >正文

Docker TLS 证书一键生成脚本(安全加密远程访问)

Docker TLS 证书一键生成脚本(安全加密远程访问)

这是一键自动生成 Docker TLS 加密证书的 Shell 脚本,无需手动输入复杂命令,自动生成 CA 证书、服务端证书、客户端证书,配置好权限,直接复制就能用,完美适配 CentOS7 / AlmaLinux9。

脚本功能

  1. 一键生成CA 根证书 + Docker 服务端证书 + 客户端证书
  2. 自动设置证书权限(Docker 强制要求证书权限 600/400)
  3. 自动打包客户端证书(方便下载到本地使用)
  4. 自动输出 Docker 守护进程 TLS 启动配置
  5. 支持自定义服务器IP/域名(必须填写,否则远程无法连接)

Docker TLS 证书一键生成脚本

docker_tls_gen.sh

#!/bin/bash# Docker TLS 证书一键生成脚本# 作用:生成安全加密证书,用于 Docker 远程加密访问 (2376端口)# 执行:chmod +x docker_tls_gen.sh && ./docker_tls_gen.sh# 注意:必须填写你的服务器公网IP/域名set-e# ====================== 请修改这里 ======================# 你的 Docker 服务器 IP 或者 域名(远程访问使用)DOCKER_HOST="192.168.1.100"# 证书存放目录CERT_DIR="/etc/docker/certs.d"# 证书有效期(天)EXPIRY_DAYS=3650# ========================================================# 颜色输出RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'NC='\033[0m'# 检查 root 权限if[$(id-u)-ne0];thenecho-e"${RED}请使用 root 用户执行脚本!${NC}"exit1fi# 检查 opensslif!command-vopenssl&>/dev/null;thenecho-e"${YELLOW}正在安装 openssl...${NC}"yuminstall-yopensslfi# 创建证书目录mkdir-p${CERT_DIR}cd${CERT_DIR}echo-e"${GREEN}==================== 开始生成 Docker TLS 证书 ====================${NC}"echo-e"${YELLOW}服务器地址:${DOCKER_HOST}${NC}"echo-e"${YELLOW}证书目录:${CERT_DIR}${NC}"# ========== 1. 生成 CA 根证书 ==========echo-e"\n${YELLOW}[1/5] 生成 CA 根证书...${NC}"openssl genrsa-aes256-passoutpass:docker-outca-key.pem4096openssl req-new-x509-days${EXPIRY_DAYS}-keyca-key.pem-passinpass:docker-sha256-outca.pem-subj"/CN=docker-ca"# ========== 2. 生成服务端私钥 ==========echo-e"${YELLOW}[2/5] 生成服务端私钥...${NC}"openssl genrsa-aes256-passoutpass:docker-outserver-key.pem4096# ========== 3. 生成服务端证书签名请求 ==========echo-e"${YELLOW}[3/5] 生成服务端证书签名请求...${NC}"openssl req-new-keyserver-key.pem-passinpass:docker-sha256-outserver.csr-subj"/CN=${DOCKER_HOST}"# 配置扩展信息(支持IP/域名)echo"subjectAltName = IP:${DOCKER_HOST},IP:127.0.0.1">extfile.cnfecho"extendedKeyUsage = serverAuth">>extfile.cnf# ========== 4. 签发服务端证书 ==========echo-e"${YELLOW}[4/5] 签发服务端证书...${NC}"openssl x509-req-days${EXPIRY_DAYS}-inserver.csr-CAca.pem-CAkeyca-key.pem-passinpass:docker-CAcreateserial-outserver-cert.pem-extfileextfile.cnf# ========== 5. 生成客户端证书 ==========echo-e"${YELLOW}[5/5] 生成客户端证书...${NC}"openssl genrsa-aes256-passoutpass:docker-outkey.pem4096openssl req-new-keykey.pem-passinpass:docker-outclient.csr-subj'/CN=client'echo"extendedKeyUsage = clientAuth">extfile-client.cnf openssl x509-req-days${EXPIRY_DAYS}-inclient.csr-CAca.pem-CAkeyca-key.pem-passinpass:docker-CAcreateserial-outcert.pem-extfileextfile-client.cnf# 删除临时文件rm-f./*csr ./*srl extfile.cnf extfile-client.cnf# 移除证书密码(方便Docker启动,无需手动输入密码)echo-e"\n${YELLOW}移除证书密码...${NC}"openssl rsa-inserver-key.pem-passinpass:docker-outserver-key.pem openssl rsa-inkey.pem-passinpass:docker-outkey.pem# 设置证书权限(Docker 强制要求)echo-e"${YELLOW}设置证书安全权限...${NC}"chmod-v0400 ca-key.pem server-key.pem key.pemchmod-v0444 ca.pem server-cert.pem cert.pemchown-vroot:root ./*# 打包客户端证书tarzcf docker-client-certs.tar.gz ca.pem cert.pem key.pemecho-e"\n${GREEN}==================== 证书生成完成!====================${NC}"echo-e"${GREEN}证书目录:${CERT_DIR}${NC}"echo-e"${GREEN}客户端证书包:${CERT_DIR}/docker-client-certs.tar.gz${NC}"# 输出 Docker 启动配置echo-e"\n${YELLOW}==================== Docker TLS 启动配置 ====================${NC}"cat<<EOF 请将以下配置写入 /etc/docker/daemon.json : { "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"], "tls": true, "tlsverify": true, "tlscacert": "${CERT_DIR}/ca.pem", "tlscert": "${CERT_DIR}/server-cert.pem", "tlskey": "${CERT_DIR}/server-key.pem" } 配置完成后重启 Docker: systemctl daemon-reload systemctl restart docker 远程连接命令(客户端): docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H${DOCKER_HOST}:2376 info EOF

使用方法(3 步搞定)

1. 脚本内修改服务器IP

打开脚本,把DOCKER_HOST改成你自己的服务器IP/域名

DOCKER_HOST="192.168.1.100"# 改成你的服务器公网IP

2. 授权并执行

chmod+x docker_tls_gen.sh ./docker_tls_gen.sh

3. 配置 Docker 并重启

脚本执行完成后,自动输出配置,直接复制粘贴即可:

# 编辑 Docker 配置vi/etc/docker/daemon.json# 粘贴脚本输出的配置# 保存退出# 重启 Dockersystemctl daemon-reload systemctl restartdocker

客户端远程连接 Docker

脚本会自动打包客户端证书:/etc/docker/certs.d/docker-client-certs.tar.gz

  1. 下载到本地电脑
  2. 解压得到 3 个文件:
    • ca.pem
    • cert.pem
    • key.pem
  3. 使用命令远程连接:
docker--tlsverify--tlscacert=ca.pem--tlscert=cert.pem--tlskey=key.pem-H你的服务器IP:2376 info

总结

  1. 一键生成:无需手动输入 openssl 命令,全自动生成
  2. 安全合规:证书权限严格按照 Docker 要求配置
  3. 开箱即用:自动输出配置,直接复制就能启用 TLS 加密
  4. 远程安全:2376 端口加密访问,杜绝未授权访问
http://www.cnnetsun.cn/news/1749668.html

相关文章:

  • 学术论文利器:OpenClaw+千问3.5-35B-A3B-FP8自动生成文献综述
  • 高效跨平台喜马拉雅音频下载器:Go+Qt5技术架构深度解析
  • IceC:面向嵌入式平台的轻量级ICE兼容中间件
  • 借鉴csdn热门文章思路,用快马ai五分钟搭建个人博客网站原型
  • 实战应用开发:基于快马平台构建企业级短链接服务系统
  • SEO_长期有效的SEO策略规划与执行要点介绍
  • Flowable流程引擎实战:从表结构到API调用的完整指南
  • OpenClaw技能扩展实战:Qwen3.5-9B驱动公众号自动发布
  • 出差党必备技能:手把手教你用OpenWrt路由远程唤醒家里电脑,搭配ZeroNews实现全平台访问
  • 【Hot 100 刷题计划】 LeetCode 45. 跳跃游戏 II | C++ 贪心算法最优解题解
  • 薪资10-50K!AI行业红利爆发,普通人如何抓住风口?高薪岗位等你来!
  • 【NLP实战指南】FUNSD数据集:表单理解与结构化数据生成的挑战与机遇
  • C语言goto语句的争议与现代替代方案
  • LangGraph 为什么成为 Multi-Agent 编排的事实标准
  • BepInEx:为Unity游戏打造强大插件生态的实践指南
  • CarSim与Simulink联合仿真失败排查指南:从COM接口到路径配置
  • 从零到一:用Python打造你的专属桌面宠物,附完整源码与exe打包指南
  • 精选7款免费商用中文字体:思源宋体从安装到精通全攻略
  • 3步驯服笔记本风扇:G-Helper让散热与性能达到完美平衡
  • 电子元器件失效分析与预防指南
  • 如何正确对 JavaScript 对象的键进行字母序排序
  • AI建站工具从0到1全流程:企业官网搭建保姆级攻略
  • python confluence
  • 基于单片机的车辆防盗系统(有完整资料)
  • PolyServo:基于中断的软件PWM多路伺服控制库
  • 高效掌控窗口尺寸:WindowResizer的完整使用指南
  • HR 系统怎么选?从功能、适配到性价比全维度解析
  • 2026届学术党必备的五大AI学术助手推荐
  • 基于FPGA的温度采集系统工程:Max6675驱动源码与QT控制软件工程代码
  • c++ 享元模式实现 c++如何运用共享技术有效支持大量细粒度对象