新闻详情

新闻详情

首页 / 资讯中心 / 详情

nginx-ui 开发环境中的 Pebble 本地 ACME 测试证书体系:certs/localhost 目录全解

发布时间:2026/11/12 8:02:44来源:尧图网络
nginx-ui 开发环境中的 Pebble 本地 ACME 测试证书体系:certs/localhost 目录全解
nginx-ui 开发环境中的 Pebble 本地 ACME 测试证书体系certs/localhost 目录全解【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui导读本文围绕 nginx-ui 仓库.devcontainer/pebble-test/certs/localhost目录的说明文档完整讲解该目录下cert.pem与key.pem的用途、它们与 Pebble本地 ACME 测试服务器及 nginx-ui 证书签发流程的关系并给出如何让测试代码信任 Pebble 根 CA、如何用minica重新生成整套测试证书的可执行方案。读完本文你将理解 nginx-ui 开发容器中零成本签发测试证书的完整链路并能在自己的测试环境中复现这一套证书体系。目录定位一个目录、一对证书、一项职责certs/localhost目录极其精简仅包含三个文件README.md说明文档即本文的原始依据cert.pemPebble HTTPS 服务器使用的终端实体证书叶子证书key.pem与该证书配对的私钥。在 docker-compose.yml 中Pebble 容器通过 volume 挂载将整个.devcontainer/pebble-test目录暴露为容器内的/test随后 pebble-config.json 通过certificate与privateKey两个配置项指向certificate: /test/certs/localhost/cert.pem, privateKey: /test/certs/localhost/key.pem,也就是说这一对文件是Pebble 自己对外提供 HTTPS ACME API 时使用的 TLS 证书对应端口 14000而不是 Pebble 签发给测试方应用的证书——后者由certs/根目录的pebble.minica.pemCA 签发二者职责不同阅读时注意区分。证书的 SAN 设计为什么是 127.0.0.1 / localhost / pebble根据 certs/localhost/README.md 的说明这对证书包含IP SAN127.0.0.1DNS SANlocalhost、pebble。这个 SAN 组合与 nginx-ui 的开发容器网络拓扑严格对应localhost与127.0.0.1当开发者在本机浏览器或本机进程访问https://localhost:14000/dir时Pebble 返回的证书 SAN 与主机名匹配TLS 握手不会出现主机名不匹配错误pebble这是 docker-compose 网络中 Pebble 服务的服务名见 docker-compose.yml 中pebble:服务定义。容器内的其他服务如 nginx-ui 主容器通过https://pebble:14000/dir访问 ACME 目录时pebble这个 DNS SAN 恰好覆盖了该主机名。nginx-ui 前端也内置了对这一测试端点的支持在 app/src/constants/acme.ts 的CA_SERVER_OPTIONS列表中Pebble Local Test一档直接指向https://localhost:14000/dir与 Pebble 的目录地址一一对应便于开发者在 nginx-ui 的证书申请界面中一键选用本地测试 CA。信任 Pebble 根 CA让测试代码通过 TLS 校验certs/localhost的叶子证书由 certs/ 根目录中的 CA 证书pebble.minica.pem签发。因此要让自己的测试代码如调用 Pebble ACME API 的客户端、nginx-ui 的证书签发模块在访问 Pebble 时不做 HTTPS 报错必须显式信任该 CA配置 ACME 客户端使其运行时使用的根 CA 列表包含pebble.minica.pem文件。绝大多数 ACME 客户端如 Go 的golang.org/x/crypto/acme、lego、certbot 等都提供自定义根 CA或自定义 CA 文件的运行时选项把pebble.minica.pem加进去即可不要把它加入系统信任库。安全红线Pebble CA 私钥是公开的certs/README.md 给出了极其明确的警告不要把pebble.minica.pem加入系统信任库不要在生产代码或生产环境中信任它原因CA 私钥pebble.minica.key.pem是公开的任何拿到它的人都能签发出被信任了 Pebble CA 的系统所信任的任意证书。这条红线同样适用于certs/localhost下的key.pem它同样不是机密只服务于本地开发/CI 测试环境任何将这些文件用于生产信任链的做法都属于安全事故。重新生成整套测试证书minica 命令详解当需要重建证书例如 SAN 变更、证书过期、或换一台机器重新初始化开发环境时certs/README.md 给出了标准做法在.devcontainer/pebble-test/certs/目录下运行minicaminica -ca-cert pebble.minica.pem \ -ca-key pebble.minica.key.pem \ -domains localhost,pebble \ -ip-addresses 127.0.0.1参数含义逐一说明参数含义-ca-cert pebble.minica.pem指定用于签发子证书的 CA 证书文件-ca-key pebble.minica.key.pem指定 CA 私钥minica用它对新证书签名-domains localhost,pebble生成两个 DNS SANlocalhost与pebble-ip-addresses 127.0.0.1生成一个 IP SAN127.0.0.1命令完成后minica会在当前目录下生成localhost/子目录其中即包含新的cert.pem与key.pem覆盖式重建certs/localhost目录中的文件对应minica的默认输出行为按-domains的第一个域名建立输出目录。需要先安装 MiniCA 工具go install github.com/jsha/minicalatest一类方式再于该目录执行命令。完整上下文证书如何嵌入 nginx-ui 的本地 ACME 测试环境将上面的证书体系放回开发容器的整体拓扑中可以更清楚地看到它的位置docker-compose.yml 启动pebble服务ghcr.io/letsencrypt/pebble:latest启动参数-config /test/config/pebble-config.json -strict -dnsserver challtestsrv:8053并暴露14000HTTPS ACME API与15000HTTPS 管理 API两个端口Pebble 根据 pebble-config.json 加载certs/localhost/cert.pem与key.pem作为自身 TLS 证书配置中还包含 HTTP-01/TLS-ALPN-01 校验端口httpPort: 5002、tlsPort: 5001、retryAfter节流参数以及证书 profile 有效期等配套的 pebble-config-external-account-bindings.json 则演示了开启externalAccountBindingRequired: true、配置 EAB HMAC 密钥的形态用于测试需要外部账号绑定EAB的 CA 流程nginx-ui 主容器通过环境变量NGINX_UI_CERT_CA_DIRhttps://pebble:14000/dir见 docker-compose.yml将 ACME 目录指向容器网络内的 Pebble从而实现开发环境下真实走一遍申请证书 → 校验 → 签发 → 落盘的完整链路而无需触碰真实 CA。从源码结构可以推断nginx-ui 的证书签发模块api/certificate/issue.go、internal/cert/在开发模式下即面向此类本地 ACME 目录工作certs/localhost提供的正是这条链路最底层的Pebble 自身可信身份支撑。这也解释了为何该 README 虽短却与容器编排、Pebble 配置、前端 CA 选项列表三处代码遥相呼应。小结certs/localhost目录虽小却是 nginx-ui 本地 ACME 测试环境的信任基石cert.pem/key.pem为 Pebble 的 HTTPS ACME API 提供身份127.0.0.1、localhost、pebble三组 SAN 分别覆盖本机访问与容器网络内访问两种场景配合根目录的pebble.minica.pem做客户端信任即可在完全离线的环境中完成证书签发全流程测试。需要重建时用minica在.devcontainer/pebble-test/certs/下按上文命令重新生成即可——务必牢记这一切仅限本地与 CI 测试Pebble 的 CA 与私钥永远不能进入生产信任链。【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉