让 letsencrypt 脚本一次生成用于多个站点域名的证书

如果你和我一样,给站点使用的 HTTPS 证书是用 letsencrypt.sh 脚本来生成的,也许你会遇到和我类似的情况。

如果手里有两个子域名,分别用于不同的站点,而想用同一个证书,该怎么办?先看一眼的配置文件的内容:

显然,DOMAINS 是支持配置不止一个域名进去的。可是,在申请证书的过程中,远程会对域名指向的站点进行所有权的验证,脚本会向 DOMAIN_DIR 指向的目录下写入一个文件,而远程使用域名对该文件进行访问。问题来了,除非要配置的这不止一个域名均互相为别名,否则它们的站点内容就不在同一个路径下,而 DOMAIN_DIR 里却只能有一个路径。

笔者的解决方案是,在各个站点的根路径下使用符号链接来指向同一个实际的目标路径,将此目标路径写入 DOMAIN_DIR,这样,本地的脚本执行时都写往该路径下,而所有的站点又都能以自己的域名形式访问到响应文件,问题就得到了解决。

顺便记录一下在 nginx 的配置里,如何禁用以 . 号开头的访问但同时又放开 letsencrypt 需要的 .well-known:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注