虞大胆的叽叽喳喳
《深入浅出HTTPS:从原理到实战》作者。
扫码关注公众号
Nginx 终于支持自动申请和续期 Let's Encrypt 免费证书了,确切的说支持了 ACME协议。
因为 Let's Encrypt 就是通过ACME协议(包括签发、验证、续期、吊销)来管理证书的。
Nginx 为了支持ACME协议,开发了ngx_http_acme_module新模块,基于NGINX-Rust SDK开发。
那具体如何使用呢?保护包含三个步骤。
1:配置ACME服务器和共享内存
acme_issuer letsencrypt {
uri https://acme-v02.api.letsencrypt.org/directory;
state_path /var/cache/nginx/acme-letsencrypt;
accept_terms_of_service;
}
acme_shared_zone zone=acme_shared:1M;
可以看到 Let's Encrypt ACME协议接口的地址。
2:验证机制
Let's Encrypt为了校验用户是否有权管理某个域名,支持DNS、HTTP-01等校验机制。
server {
listen 80;
location / {
#Serve a basic 404 response while listening for challenges
return 404;
}
}
而 Nginx 通过 HTTP-01 支持,很好理解,因为它本来就是一个Web服务器,比DNS校验方便的多了。
3:证书签发与续期
因为 Let's Encrypt 证书有效期是90天,Nginx支持自动续期是它最大的价值。
server {
listen 443 ssl;
server_name .example.com;
acme_certificate letsencrypt;
ssl_certificate $acme_certificate;
ssl_certificate_key $acme_certificate_key;
ssl_certificate_cache max=2;
}
最后说说一些想法,未来 Let's Encrypt 支持的证书有效期会极大缩短,所以自动化更新证书是个非常重要的机制。
而 Nginx 作为全球最著名的Web服务器,支持自动续期证书,可以说是极大的及时雨,看来我开源的自动续期证书的项目(https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au)可以关闭了。
相关文章: