如何为 DuckDNS 设置 SSL 证书

DuckDNS 提供方便且免费的动态 DNS 服务来远程访问您的家庭网络。但是,为了确保连接安全,必须设置 SSL 证书,以启用对 DuckDNS 域的 HTTPS 访问。安装 SSL 证书可以加密您的数据,防止未经授权的访问,并确保您的连接保持私密性。请按照以下详细步骤为您的 DuckDNS 域正确配置 SSL 证书。

使用 SSL 保护 DuckDNS 域的最有效方法是使用免费的自动证书颁发机构 Let's Encrypt。 Certbot 是一种简化从 Let's Encrypt 获取和续订证书的工具。

步骤一:首先,确保您的 DuckDNS 域配置正确并指向服务器的公共 IP 地址。访问,登录并验证您的域和 IP 设置。

步骤2:在您的服务器上安装 Certbot。对于基于 Debian 或 Ubuntu 的系统,请通过运行以下命令更新包管理器并安装 Certbot:

sudo apt update
sudo apt install certbot

步骤3:安装 Certbot 后,使用 DNS 质询方法请求证书,这对于 DuckDNS 来说是理想的选择。运行此命令,替换yourdomain.duckdns.org与您实际的 DuckDNS 域:

sudo certbot certonly --manual --preferred-challenges dns -d yourdomain.duckdns.org

在此过程中,Certbot 将提示您将 DNS TXT 记录添加到您的 DuckDNS 域。

第4步:要添加所需的 TXT 记录,请导航至您的 DuckDNS 帐户页面。您将在您的域名旁边看到一个标有“TXT”的字段。将 Certbot 提供的 TXT 值粘贴到此字段中,然后单击“更新”。等待几分钟以确保 DNS 记录传播,然后再继续。

第5步:更新TXT记录后,返回您的服务器终端并按Enter。 Certbot 将验证 DNS 质询并颁发您的 SSL 证书。成功完成后,Certbot 将显示您的证书和私钥文件的路径。

第6步:配置您的 Web 服务器(例如 Apache 或 Nginx)以使用新颁发的证书。例如,在 Nginx 中,您的配置文件将包括:

server {
    listen 443 ssl;
    server_name yourdomain.duckdns.org;

    ssl_certificate /etc/letsencrypt/live/yourdomain.duckdns.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.duckdns.org/privkey.pem;

    location / {
        proxy_pass https://localhost:YOUR_PORT;
    }
}

代替YOUR_PORT与您的应用程序的实际端口号。重新启动您的网络服务器以应用更改:

sudo systemctl restart nginx

您的 DuckDNS 域现已使用 HTTPS 进行保护,并受到 Let's Encrypt 的有效 SSL 证书的保护。


方法2:使用Home Assistant中的DuckDNS插件

如果您正在运行 Home Assistant,则可以使用官方 DuckDNS 插件来简化 SSL 设置,该插件将 Let's Encrypt 证书管理直接集成到您的 Home Assistant 界面中。

步骤一:在 Home Assistant 仪表板中,导航至“设置”→“附加组件”,然后单击“附加组件商店”选项卡。搜索“DuckDNS”并安装官方 DuckDNS 插件。

步骤2:安装后,访问附加配置并修改它以包含您的 DuckDNS 域和令牌。您的配置应类似于:

domains:
  - yourdomain.duckdns.org
token: YOUR_DUCKDNS_TOKEN
lets_encrypt:
  accept_terms: true
certfile: fullchain.pem
keyfile: privkey.pem

代替yourdomain.duckdns.org和YOUR_DUCKDNS_TOKEN使用您的实际域名和从您的 DuckDNS 帐户页面获取的 DuckDNS 令牌。

步骤3:启动 DuckDNS 插件。它将自动从 Let's Encrypt 获取并管理您的 SSL 证书。 Home Assistant 会将证书存储在/ssl/目录。

第4步:更新您的 Home Assistant 配置(configuration.yaml) 使用 HTTPS 并指定 SSL 证书文件的路径:

https:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

重新启动 Home Assistant 以应用更改。您的 Home Assistant 实例现在可以通过 DuckDNS 域通过 HTTPS 安全访问。


维护您的 SSL 证书

Let's Encrypt 证书每 90 天过期。幸运的是,Certbot 和 Home Assistant 的 DuckDNS 插件会自动处理证书续订,确保不间断的安全访问。但是,请定期检查 Web 服务器日志或 Home Assistant 通知来验证 SSL 证书的有效性和续订状态。


现在,您的 DuckDNS 域已受到 SSL 证书的保护,您可以放心地远程访问您的家庭网络,因为您知道您的连接已加密并受到保护。