我有一个网站需要回答任意数量的任意子域,例如client1.example.com,client2.example.com等.一切都落后于SSL.
我真的很想使用Let的加密,当然,这意味着没有通配符证书.有没有办法创建一个加载相应目录的单个服务器{…}块,还是我需要为每个客户端子域单独配置?
基本上,我希望一个服务器块回答* .example.com,但是根据子域加载相应的证书.证书全部存储在/etc/letsencrypt/live/[subdomain].example.com/中.
最佳答案
我方的两点说明:
> AFAIK(但请不要认为这是理所当然的)你不能在任何地方使用变量,包括ssl_certificate,因为Nginx将其视为文字字符串.
>但是(开箱即用):自己创建Certificate Signing Request(使用openssl),并将所有域放入Subject Alternative Name (SAN)字段.如果您使用官方的Let’s Encrypt客户端,请利用–csr选项将创建的证书签名请求发送给他们.他们将解析该字段,验证域名,并且如果成功,您将获得一个签名证书,该证书对您提供的所有域名都有效.
警告1:目前,根据this帖子,Let’s Encrypt将Subject Alternative Name字段中的域数限制为100. (不确定这是否仍然存在,我无法找到“官方”的东西.)
警告2:证书是公开的,因此检查您的证书的任何人都能够看到此证书有效的所有域.如果这是可以接受的,取决于您的使用案例,环境等.