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;
}
然后配置服务器使用这些证书:
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 参数:
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 模块时,请注意以下要点:
- 测试:初次配置使用 Let's Encrypt staging 环境,避免速率限制。
- 安全:确保
resolverDNS 服务器可信,必要时禁用 IPv6。 - 缓存:配置
ssl_certificate_cache提升性能,尤其在使用证书变量时。 - 端口:用
acme_http_port和acme_dns_port控制验证端口,避免冲突。
Angie 的 ACME 模块是简化 TLS 证书管理的强大工具,能降低运维成本并提升 Web 应用安全。其无缝集成让开发者和管理员专注于核心任务,而非日常维护。
— Editorial Team
暂无评论。