跳转至

配置 TLS 证书

部署注意事项中所述,联合需要使用 TLS,因为大多数实例拒绝通过未加密的传输进行联合。

GoToSocial 内置了通过 Lets Encrypt 进行 TLS 证书的配置和更新支持。本指南介绍如何独立于 GoToSocial 配置证书。如果你想完全控制证书的配置方式,或者因为你正在使用执行 TLS 终止的反向代理,这将很有用。

获取 TLS 证书的方式有几种:

  • 从供应商购买,通常有效期为 2 年
  • 从云提供商获取,具体有效期取决于其产品限制
  • 从像 Lets Encrypt 这样的ACME兼容提供商处获取,通常有效期为 3 个月

在本指南中,我们只讨论第三种,有关 ACME 兼容提供商的选项。

一般方法

通过 Lets Encrypt 配置证书的方法是:

  • 在你的服务器上安装 ACME 客户端
  • 配置 ACME 客户端来配置你的证书
  • 配置一个软件使用这些证书
  • 启用定时器/cron 定期续订证书
  • 通知必要的应用程序重新加载或重启以获取新证书

证书是通过使用质询来配置的,这是一种验证你为自己控制的域请求证书的方法。你通常会使用以下之一:

  • HTTP 质询
  • DNS 质询

HTTP 质询要求在所请求证书的域上的 80 端口下提供某些文件,路径为 /.well-known/acme/。这是默认质询类型。

DNS 质询完全在服务器外进行,但需要你更新 DNS TXT 记录。此方法只有在你的 DNS 注册商提供 API,使你的 ACME 客户端完成此质询时才可行。

客户端

官方的 Lets Encrypt 客户端是 certbot,通常在你选择的(Linux)发行版中打包。某些反向代理如 Caddy 和 Traefik 内置了使用 ACME 协议配置证书的支持。

你可以考虑使用的其他一些客户端包括:

  • acme-client,适用于 OpenBSD,使用平台的特权分离功能
  • lacme,以进程隔离和最低特权为构建目标,类似于 acme-client 但适用于 Linux
  • Lego,用 Go 编写的 ACME 客户端和库
  • mod_md,适用于 Apache 2.4.30+

DNS 质询

对于 DNS 质询,你的注册商的 API 需要被你的 ACME 客户端支持。尽管 certbot 对一些流行提供商有一些插件,但你可能想查看 dns-multi 插件。它在幕后使用 Lego,支持更广泛的供应商。

配置

有三个重要的配置选项:

不使用反向代理

当直接将 GoToSocial 暴露到互联网,但仍想使用自己的证书时,可以设置以下选项:

letsencrypt-enabled: false
tls-certificate-chain: "/path/to/combined-certificate-chain-public.key"
tls-certificate-key: "/path/to/private.key"

这将禁用通过 Lets Encrypt 内置的证书配置,并指示 GoToSocial 在磁盘上找到证书。

Tip

在续订证书后应重启 GoToSocial。它在这种情况下不会自动监测证书的更换。

使用反向代理

当在执行 TLS 终止的反向代理后运行 GoToSocial 时,你需要如下设置:

letsencrypt-enabled: false
tls-certificate-chain: ""
tls-certificate-key: ""

确保 tls-certificate-* 选项未设置或设置为空字符串。否则,GoToSocial 将尝试自行处理 TLS。

协议配置选项

不要protocol 配置选项更改为 http。此选项仅应在开发环境中设置为 http。即使在 TLS 终止的反向代理后运行,也需要设置为 https

你还需要更改 GoToSocial 绑定的port,以便它不再尝试使用 443 端口。

要在反向代理中配置 TLS,请参考其文档:

Tip

在你的反向代理中配置 TLS 时,请确保你配置了一组较现代的兼容版本和加密套件。可以使用 Mozilla SSL Configuration Generator 的“中级”配置。

检查你的反向代理文档,以了解在证书更改后是否需要重新加载或重启它。并非所有的反向代理都会自动检测到这一点。

指南

网上有许多优质资源解释如何设置这些内容。