返回首页

使用 ACME 模块在 Angie 中自动化 TLS 证书:指南

本文致力于在 Angie Web 服务器中设置 ACME 模块,以自动获取和续期 TLS 证书。它涵盖了 HTTP 和 DNS 验证方法,包括通配符证书,并提供实际配置示例。

在 Angie 中自动化 TLS 证书:完整的 ACME 指南
Advertisement 728x90

Angie 中 ACME 模块自动化 TLS 证书全指南

Angie 网页服务器的 ACME 模块能轻松自动化获取和续期 TLS 证书,包括通配符证书,几乎无需手动操作。内置 ACME 协议支持,无需外部工具如 certbot,大大简化站点安全配置和管理。

为标准证书设置 HTTP 验证

要通过 HTTP 验证(HTTP-01)获取证书,首先在 http 上下文中 acme_client 指令中定义属性。下面是 RSA 和 ECDSA 证书的示例配置:

http {
  resolver 127.0.0.53 ipv6=off;
  acme_client rsa      https://acme-v02.api.letsencrypt.org/directory key_type=rsa;
  acme_client ecdsa    https://acme-v02.api.letsencrypt.org/directory;
}

然后配置服务器使用这些证书:

Google AdInline article slot
server {
  listen 443 ssl;
  server_name site.ru www.site.ru test.site.ru company.ru;
  acme rsa;
  acme ecdsa;
  ssl_certificate         $acme_cert_rsa;
  ssl_certificate_key $acme_cert_key_rsa;
  ssl_certificate         $acme_cert_ecdsa;
  ssl_certificate_key $acme_cert_key_ecdsa;
}

Angie 会自动开启 80 端口用于 HTTP 验证,除非通过 acme_http_port 指定其他端口。通过 error_log 或 API 监控证书颁发,成功续期会显示通知级消息。

通过 DNS 验证获取通配符证书

通配符证书覆盖二级域名及其所有三级子域名,需要使用 DNS 验证(DNS-01)。通过在托管面板创建 DNS 记录实现区域委托:

_acme-challenge.site.ru. 60    IN      NS       ns.site.ru.
             ns.site.ru. 60    IN       A       {IP_服务器}

然后设置 acme_client,添加 challenge=dns 参数:

Google AdInline article slot
http {
  resolver 127.0.0.53 ipv6=off;
  acme_client ecdsa    https://acme-v02.api.letsencrypt.org/directory challenge=dns;
  server {
    listen 443 ssl;
    server_name site.ru *.site.ru;
    acme ecdsa;
    ssl_certificate         $acme_cert_ecdsa;
    ssl_certificate_key $acme_cert_key_ecdsa;
  }
}

Angie 会开启 53 端口处理 DNS 查询;使用 acme_dns_port 避免与本地服务冲突。

替代方法与高级功能

当标准验证不可用时,ACME 模块支持自定义钩子,将文件创建或 DNS 记录管理外包给外部应用。它还支持 TLS-ALPN-01 方法,适用于无法开启 80 端口的情况,通过 challenge=alpn 启用。

主要优势

  • 自动化:Angie ACME 模块完全自动化 TLS 证书颁发和续期,包括通配符,无需手动干预。
  • 灵活性:支持 HTTP-01、DNS-01 和 TLS-ALPN-01 验证,以及复杂场景下的自定义钩子。
  • 性能:证书加载到服务器内存,可通过 ssl_certificate_cache 缓存优化。
  • 兼容性:适用于任何符合 ACME 协议的提供商,如 Let's Encrypt。
  • 监控:集成 error_log 和 API,便于跟踪证书状态。

实施实用技巧

设置 ACME 模块时,请注意以下要点:

Google AdInline article slot
  • 测试:初次配置使用 Let's Encrypt staging 环境,避免速率限制。
  • 安全:确保 resolver DNS 服务器可信,必要时禁用 IPv6。
  • 缓存:配置 ssl_certificate_cache 提升性能,尤其在使用证书变量时。
  • 端口:用 acme_http_portacme_dns_port 控制验证端口,避免冲突。

Angie 的 ACME 模块是简化 TLS 证书管理的强大工具,能降低运维成本并提升 Web 应用安全。其无缝集成让开发者和管理员专注于核心任务,而非日常维护。

— Editorial Team

Advertisement 728x90

继续阅读