Docker TLS 证书一键生成脚本(安全加密远程访问)
Docker TLS 证书一键生成脚本安全加密远程访问这是一键自动生成 Docker TLS 加密证书的 Shell 脚本无需手动输入复杂命令自动生成 CA 证书、服务端证书、客户端证书配置好权限直接复制就能用完美适配 CentOS7 / AlmaLinux9。脚本功能一键生成CA 根证书 Docker 服务端证书 客户端证书自动设置证书权限Docker 强制要求证书权限 600/400自动打包客户端证书方便下载到本地使用自动输出 Docker 守护进程 TLS 启动配置支持自定义服务器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_HOST192.168.1.100# 证书存放目录CERT_DIR/etc/docker/certs.d# 证书有效期天EXPIRY_DAYS3650# # 颜色输出RED\033[0;31mGREEN\033[0;32mYELLOW\033[1;33mNC\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/CNdocker-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/域名echosubjectAltName IP:${DOCKER_HOST},IP:127.0.0.1extfile.cnfechoextendedKeyUsage serverAuthextfile.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/CNclientechoextendedKeyUsage clientAuthextfile-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}catEOF 请将以下配置写入 /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 --tlscacertca.pem --tlscertcert.pem --tlskeykey.pem -H${DOCKER_HOST}:2376 info EOF使用方法3 步搞定1. 脚本内修改服务器IP打开脚本把DOCKER_HOST改成你自己的服务器IP/域名DOCKER_HOST192.168.1.100# 改成你的服务器公网IP2. 授权并执行chmodx docker_tls_gen.sh ./docker_tls_gen.sh3. 配置 Docker 并重启脚本执行完成后自动输出配置直接复制粘贴即可# 编辑 Docker 配置vi/etc/docker/daemon.json# 粘贴脚本输出的配置# 保存退出# 重启 Dockersystemctl daemon-reload systemctl restartdocker客户端远程连接 Docker脚本会自动打包客户端证书/etc/docker/certs.d/docker-client-certs.tar.gz下载到本地电脑解压得到 3 个文件ca.pemcert.pemkey.pem使用命令远程连接docker--tlsverify--tlscacertca.pem--tlscertcert.pem--tlskeykey.pem-H你的服务器IP:2376 info总结一键生成无需手动输入 openssl 命令全自动生成安全合规证书权限严格按照 Docker 要求配置开箱即用自动输出配置直接复制就能启用 TLS 加密远程安全2376 端口加密访问杜绝未授权访问
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2494348.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!