[功能请求] 添加针对每个容器的选项,以生成自签名证书

作者: YoshiWalsh创建于 2026年3月2日更新于 2026年5月15日

使用案例: 1. 内部服务不需要可通过 Web 访问(例如 pihole,通常监听在 pi.hole 上) 2. 旨在通过外部 CDN 独家访问的服务,通常具有跳过证书链验证/信任自定义根证书的能力。虽然这并不一定能防御 MITM 攻击,但仍然可以对传输中的数据进行加密,因此至少能抵御被动窃听攻击。 # 当前选项: 1. 根据域名手动生成自签名证书。(这需要定期运行手动且复杂的 openssl 命令) 2. 手动生成通配符证书并将其配置为 默认证书(相比于之前的选项,此选项减少了对证书管理的要求,但仍然需要复杂的手动干预) 3. 使用 DNS 和自定义配置允许公众访问 ACME 挑战目录,但阻止公众访问应用程序的其余部分。(此选项仅适用于您控制的域名,并且还会将域名列入公共证书透明度日志中,这可能不是所需的。此外,当域名位于也使用 Let's Encrypt 的 CDN 时,CDN 可能不会转发 LE 请求。) 4. 自主托管一个与 ACME 兼容的 CA,用模拟代码替换挑战代码,并将 ACME_CA_URI 设置为自主托管的 ACME URL,以便需要自签名证书的域名使用。(最干净的选项,但设置起来复杂) # 建议: - 在 nginx-proxy 中创建一个用于存储根证书的目录。(可选)可以将其绑定为卷,以便提供自定义根证书,或者保存自动生成的默认根证书。 - 添加一个容器内的布尔环境变量 CERT_GENERATE 以启用自签名证书的生成。 - 添加相同的环境变量到 nginx-proxy 容器中以控制全局默认值 - 添加一个 nginx-proxy 环境变量 CA_CERT 以指定要使用的默认根证书的文件名。如果指定了该值,则阻止自动生成默认根证书。 - 添加一个容器内的 CA_CERT 环境变量,允许为不同容器使用不同的根证书 - 修改 证书选择过程 以便在使用 default.crt 之前检查 CERT_GENERATE 的值。如果容器的 CERT_GENERATE 为真(或未为容器指定,且在 nginx-proxy 上为真),则根据指定的 CA_CERT 文件为所有指定的 VIRTUAL_HOST 域名自动生成证书。 - 注意: 可能需要逻辑来避免自动生成…

内容来源: nginx-proxy/nginx-proxy