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

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 端口加密访问杜绝未授权访问

相关文章:

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

Docker TLS 证书一键生成脚本(安全加密远程访问) 这是一键自动生成 Docker TLS 加密证书的 Shell 脚本,无需手动输入复杂命令,自动生成 CA 证书、服务端证书、客户端证书,配置好权限,直接复制就能用&#x…...

ESXi 8.0U3I 硬盘直通(PCIe/RDM)完全解决方案:从原理、配置到故障排错全攻略

在 ESXi 8.0U3I 环境中,硬盘直通(含 PCIe 控制器直通 与 RDM 裸设备映射)是实现虚拟机直接访问物理硬盘、最大化存储性能与兼容性的核心技术,但 8.0U3I 对消费级硬件、SATA/NVMe 控制器、驱动签名的管控更严格,极易出现无法开启直通、直通后硬…...

2026.4.7总结

工作日精进:这个月在心声上看到许多离职的帖子,估计是有很多拿完年终奖离职的。看到别人写的离职感悟,我多少有些共情。当有一天,我离职的时候,我也要写一篇长篇大论。早上HR跟入职一两年的人解读了esop相关政策。这政…...

VCF 部署不踩坑!ESXi 主机 SSL 指纹怎么拿、怎么用?一文简单了解

在部署 VMware Cloud Foundation(VCF)9.0 时,很多人会卡在 “ESXi 主机指纹验证” 这一步 —— 自动部署时 JSON 文件缺了它会失败,手动确认又怕输错。其实这就是主机的 “安全身份证”,用来验证连接的真实性。本文用通俗的语言解释 SSL 指纹…...

PyTorch3D在Windows上安装总报错?试试这个绕过源码编译的Pip直装方案(适配PyTorch 2.0.1 + CUDA 11.7)

PyTorch3D在Windows上安装总报错?试试这个绕过源码编译的Pip直装方案(适配PyTorch 2.0.1 CUDA 11.7) 如果你是一名在Windows平台上进行3D视觉研究的开发者,想必对PyTorch3D这个强大的3D深度学习库并不陌生。然而,官方…...

MacOS极简部署OpenClaw:5分钟连接Phi-3-vision-128k-instruct模型

MacOS极简部署OpenClaw:5分钟连接Phi-3-vision-128k-instruct模型 1. 为什么选择OpenClawPhi-3组合 去年第一次听说AI能直接操作我的电脑时,我本能地感到不安——让一个云端模型控制本地文件系统?这听起来就像把家门钥匙交给陌生人。直到发…...

STM32堆栈原理与内存管理实践指南

1. 堆栈基础概念解析在嵌入式系统开发中,堆栈(Stack)是最基础也是最重要的内存管理机制之一。简单来说,堆栈就是一块特殊组织方式的内存区域,采用"后进先出"(LIFO)的原则进行数据存取。理解堆栈的工作原理对于STM32开发至关重要&am…...

基于粒子群算法的IEEE33节点配电网无功优化及其结果分析

基于粒子群算法的配电网无功优化 基于IEEE33节点配电网,以无功补偿器的接入位置和容量作为优化变量,以牛拉法进行潮流计算,以配电网网损最小为优化目标,通过优化求解,得到最佳接入位置和容量,优化结果如下所…...

恒压供水系统:维纶通屏与S7 - 200程序的奇妙组合

恒压供水,维纶通屏+s7 200程序在自动化控制领域,恒压供水系统一直是一个经典应用。今天咱就来唠唠如何用维纶通屏搭配S7 - 200程序实现恒压供水。 一、恒压供水原理简介 恒压供水简单来说,就是不管用水量怎么变化,都能…...

OpenAI 把 Codex 接进 Claude Code,这件事比你想的更“工程化”

目录这次到底发生了什么为什么说这是一次“反常识”的动作插件能力拆解:三个命令背后的工程价值Claude Code Codex 的真实工作流长什么样技术实现拆解:它到底怎么接进去的对开发者意味着什么变化一些容易被忽略的坑一、这次到底发生了什么最近一个比较有…...

新手入门指南:基于快马平台构建静电地板施工交互学习系统

作为一名刚接触机房建设的新手,第一次看到"静电地板施工"这个词时,整个人都是懵的。直到我在InsCode(快马)平台上尝试做了一个交互式学习系统,才发现原来掌握这项技能可以这么简单。下面分享下我的学习心得和系统构建过程。 为什么…...

三步生成炫酷3D魔鬼面具:用快马AI快速构建交互式视觉原型

今天想和大家分享一个超实用的技巧——如何用InsCode(快马)平台快速生成3D魔鬼面具的交互式原型。作为一个经常需要做创意展示的设计师,这个工具真的帮我省去了大量开发时间。 从创意到原型的极速转换 以前做3D展示需要先建模再写代码,现在只需要在快马平…...

IceC:面向嵌入式平台的轻量级ICE兼容中间件

1. IceC:面向资源受限嵌入式平台的轻量级ZeroC ICE兼容中间件 1.1 设计定位与工程必要性 IceC并非ZeroC ICE的全功能移植,而是在AVR(如ATmega328P)和ESP8266等典型资源受限平台约束下,对ICE通信模型进行深度裁剪与重构…...

高效跨平台喜马拉雅音频下载器:Go+Qt5技术架构深度解析

高效跨平台喜马拉雅音频下载器:GoQt5技术架构深度解析 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 喜马拉雅FM作为国…...

CSS定位如何实现模态框垂直居中_使用负边距或transform

transform: translate(-50%, -50%) 是最稳的居中方式,配合 position: absolute 或 fixed 及 top: 50%、left: 50%,可无视元素尺寸变化实现精准居中,且兼容滚动与响应式场景。用 transform: translate(-50%, -50%) 是最稳的居中方式绝对定位 …...

mysql如何限制查询结果_mysqllimit语句使用示例

LIMIT 必须放在整个 SELECT 语句的最后,严格位于 ORDER BY 和 GROUP BY 之后、WHERE 之后;写在 WHERE 或 ORDER BY 中间会报错。MySQL 的 LIMIT 用在 WHERE 之后还是 ORDER BY 之后?LIMIT 必须放在整个 SELECT 语句的最后,且严格位…...

解密KV Cache:为什么它能提升大模型推理速度3倍以上?

KV Cache技术深度解析:如何让大模型推理速度飞跃提升? 在自然语言处理领域,大模型推理速度一直是开发者关注的焦点。想象一下,当你向AI助手提问时,如果每次响应都需要等待数秒甚至更久,用户体验将大打折扣。…...

从.nii文件到发表级配图:一份超详细的fMRI脑区(ROI)可视化避坑与调参指南

从.nii文件到发表级配图:一份超详细的fMRI脑区(ROI)可视化避坑与调参指南 当你终于跑完最后一组统计分析,看着屏幕上那些代表显著脑区的彩色斑点时,可能已经迫不及待想把它们放进论文插图。但现实往往是——直接导出的…...

轻量级代码编辑器Lapce从入门到精通:Rust驱动的极速开发体验

轻量级代码编辑器Lapce从入门到精通:Rust驱动的极速开发体验 【免费下载链接】lapce Lightning-fast and Powerful Code Editor written in Rust 项目地址: https://gitcode.com/GitHub_Trending/la/lapce 核心特性解析:为什么选择Rust编写的编辑…...

OpenClaw技能扩展实战:Qwen3.5-9B驱动公众号自动发布

OpenClaw技能扩展实战:Qwen3.5-9B驱动公众号自动发布 1. 为什么选择OpenClaw做公众号自动化 去年开始运营技术公众号时,我每周要花3小时重复做三件事:写Markdown初稿、手动调整公众号排版、上传封面图并提交草稿。直到发现OpenClaw的wechat…...

【Docker】镜像安全扫描工具clair与clairctl

【Docker】镜像安全扫描工具clair与clairctl 镜像扫描结构图 方式2的具体操作步骤 clair是什么? clair是一个开源项目,用于静态分析appc和docker容器中的漏洞。 漏洞元数据从一组已知的源连续导入,并与容器映像的索引内容相关联&#xff0c…...

Linux开发必备:Makefile基础与实战模板解析

1. Linux开发中的Makefile基础在Linux环境下开发程序,与Windows平台最大的区别之一就是编译方式。Windows开发者通常习惯使用集成开发环境(IDE)提供的"一键编译"功能,而Linux开发者则需要掌握Makefile这一强大的构建工具。Makefile本质上是一个…...

菜鸟的逆向工程学习之路——逆向工程基本介绍

菜鸟的逆向工程学习之路——逆向工程基本介绍 菜鸟的逆向工程学习之路——逆向工程基本介绍 逆向工程是一种分析目标系统的过程,旨在识别系统的各组件以及组件间关系,以便能够通过其他形式或在较高的抽象层次上,重建系统的表征。 逆向工程一直…...

嵌入式开发中的串口打印调试与printf重定向

1. 为什么需要串口打印调试?在嵌入式开发中,调试手段的选择往往决定了问题排查的效率。使用仿真器(如J-Link、ST-Link)进行单步调试确实是最直观的方式,但在实际项目中经常会遇到以下限制:硬件限制&#xf…...

新手零基础入门:用快马AI生成你的第一个企业网站代码

作为一个刚接触网站开发的新手,我最近尝试用InsCode(快马)平台生成了自己的第一个企业网站代码,整个过程比想象中简单很多。这里记录下我的学习过程和心得,希望能帮到同样零基础的朋友。 理解基础结构 企业网站最基础的单页布局通常包含三个部…...

手把手教你用泰克示波器解码I2C信号(附波形图与常见时序问题排查)

泰克示波器实战:I2C信号解码与时序问题精准定位指南 当一块新开发的电路板躺在实验台上,I2C通信却像被施了沉默咒语般毫无反应——这种场景对硬件工程师来说再熟悉不过。面对SDA和SCL两根看似简单的信号线,隐藏的问题可能来自电平异常、时序偏…...

OpenClaw智能家居中枢:Qwen3-14b_int4_awq语音指令转API调用

OpenClaw智能家居中枢:Qwen3-14b_int4_awq语音指令转API调用 1. 为什么需要本地化智能家居中枢 去年冬天的一个深夜,我被空调突然停止运行的嗡嗡声惊醒。摸索手机查看米家App时,发现服务器维护导致云端控制失效。这次经历让我意识到&#x…...

日志系统整体设计步骤以及功能函数梳理

首先到底要做一个什么东西&#xff1f;我们要造一个 C 高并发异步日志库&#xff0c;功能如下&#xff1a;用 LOG_INFO << "xxx" 这种简单写法自动带&#xff1a;时间、级别、文件名、函数名、行号支持级别过滤&#xff08;TRACE/DEBUG/INFO/WARN/ERROR/FATAL&…...

HWD风速风向传感器Arduino驱动库详解

1. 项目概述 WindSensorHWD_asukiaaa 是一款专为 HWD 系列风速风向传感器设计的嵌入式驱动库&#xff0c;面向 Arduino 及兼容平台&#xff08;如 STM32、ESP32&#xff09;提供标准化、可移植的数据采集接口。该库并非通用串口协议解析器&#xff0c;而是深度适配日本 SigLab …...

evo实战:A-LOAM在KITTI数据集上的多维度性能剖析

1. 从KITTI到ROS&#xff1a;数据格式转换实战 第一次接触KITTI数据集时&#xff0c;我被它那庞大的.bin点云文件搞得一头雾水。作为一个常年和ROS打交道的工程师&#xff0c;我深知bag格式才是SLAM算法的"通用语言"。这里分享一个我验证过的高效转换方案——使用lid…...