我们托管许多不同的域,目前证书存储在数据库中。将证书从数据库中取出并放入文件中以便 nginx 可以加载它们变得越来越繁琐。
如果我们能做到如下的事情就更好了:
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate_key https://cert-distributor.acme.com/$host/server.key;
ssl_certificate https://cert-distributor.acme.com/$host/server.crt;
...
}
如果证书被缓存以防万一发生故障,则可以获得加分cert-distributor.acme.com
。
答案1
回答。简短。它并不简短。在撰写本文时,文件保留:
Syntax: ssl_certificate file;
解决方法。有多种解决方法可以解决您的问题。我认为其中一些是首选方式。因此,顺序很重要。
您可以使用 Ansible、Salt 或 Chef 部署证书;并将其保存在主机本地仅有的。
您可以覆盖
nginx
systemd
-unit需要从 下载文件URL
到特定路径并重新启动nginx
。您可以制作
systemd-timer
,下载证书并重新启动nginx
。
笔记。记住安全终点和中间人攻击。此外。如何验证特定主机是否被允许下载文件?Kerberos?