Files
pnokerandClaude Fable 5 6cd05d2c68 refactor(nginx): move SSL certs into nginx/certs directory
The nginx TLS cert lived in a top-level dependencies/conf.crt/ directory,
inconsistent with the per-component layout (grafana, postgres, rabbitmq,
nginx). Move it under dc3/dependencies/nginx/certs/dc3.site/ to sit with
the nginx config it belongs to, mirroring rabbitmq/keys/.

Update dc3-web/Dockerfile to COPY certs from the new path into
/etc/letsencrypt/live/, matching the path nginx.conf references.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:38:47 +08:00
..

使用 ACME.SH 申请并安装 LET’S ENCRYPT SSL 证书

Let’s Encrypt 是一个免费的, 自动化的, 开放的证书颁发机构(CA), 为公众的利益而运行。 它是一项由 Internet Security Research Group(ISRG)提供的服务。 acme.sh 则是实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。

安装 ACME.SH

curl  https://get.acme.sh | sh
source ~/.bashrc

申请证书

这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证, 而且可申请泛域名证书。 坏处是, 需要配合DNS解析服务商的API使用, 否则 acme.sh 将无法自动更新证书, 每次都需要手动再次重新解析验证域名所有权。

配置阿里云 AccessKey

# 阿里云控制台申请 API Token, 并配置环境变量如下
# RAM 访问控制 -> 访问凭证管理 -> AccessKey
export Ali_Key="AccessKey ID"
export Ali_Secret="AccessKey Secret"

配置阿里云 DNS

acme.sh --issue --dns dns_ali -d dc3.site -d *.dc3.site

安装证书

reloadcmd: 用于让web服务器重新加载新的证书文件, 例子中使用的是 nginx 服务器, 您也可以定义成其它服务器。

acme.sh --installcert -d dc3.site --key-file /etc/letsencrypt/live/dc3.site/dc3.site.key --fullchain-file /etc/letsencrypt/live/dc3.site/fullchain.cer --reloadcmd "service nginx force-reload"

更新证书

Let’s Encrypt 的证书有效期为3个月, 每3个月得重新申请证书。 通过 acme.sh 可以自动管理SSL证书的申请。通过上面步骤的安装后 acme.sh 会定期自动更新SSL证书。

acme.sh --renew -d dc3.site --force

取消更新

有时候你可能需要移除特定域名的自动申请, 这时候可以使用下面的命令让 acme.sh 取消对特定域名的自动续期。当然已申请的证书仍然有效, 不会失效。

acme.sh --remove -d dc3.site