我有5个IP地址指向多个子域,并在不同的服务器上托管。
我能够为指向单个IP地址的子域创建证书,但不能为不同的IP地址创建证书。我试过使用Webroot路径和手动身份验证,但没有成功,因为其他子域托管在不同的服务器上,我想LE无法进行验证。
因为我对这些域使用了故障转移,所以SSL验证失败,因为出现了不匹配的情况。当它指向正确的CNAME记录时,没有问题,如果服务器关闭,如果我们将CNAME记录更改为其他子域,则会发生不匹配。所有我需要一个单一的证书为所有子域指向不同的IP。对此有什么解决方案吗?
例如:Example.com CNAME www.Example.com(Works Fine)
(出现不匹配),这是完全有可能的,是的。
使用官方certbot客户端,然后使用DNS质询是完成此操作的最简单方法。
如果您无法通过API访问您的DNS(如果没有API,自动化过程会更加困难),那么可以尝试GetSSL替代客户端,它是专门为处理远程服务器上的域而编写的。注:我写了Getsl脚本,所以我在这里的回答并不是完全公正的,我们不能使用http质询而不是dns质询吗?你可以,是的-certbot客户端目前不允许你在不同的服务器上这样做-getsl可以,所以你可以用它来对域在不同远程服务器上的http质询。它是说无法到达“http:///.well-known/acme-challenge/Ql4K2s78dVS220eu14EBD6WsiRLfxlcoZZlJAuYElRg,我需要更多的信息。听起来好像你没有正确地将域名包含到配置中。
如果你愿意,给我发邮件给我你想要获得的域名(S)的完整的getssl.cfg文件,以便在serverco.com上获取。或者,您可以将其粘贴到此处,或者,理想情况下,粘贴到GitHub上的getssl Issues页面上。假设所有服务器都运行http服务器,您可以使用certbot和http challengl来执行此操作。
您可以编写一个脚本,该脚本首先在本地挂载服务器的WebRoot。在我的例子中,我使用sshf
SshFS根目录@主机1:/var/www/html//mnt/Host1-o sshfs_sync,标识文件=id_ed25519
SshFS根目录@主机2:/var/www/html//mnt/host 2-o sshfs_sync,标识文件=id_ed25519
现在我们可以运行certbot并让它执行http质询,因为它具有对所有WebRoot的写入访问权限。
Certbot--文本--webroot--webroot-路径/mnt/host 1-d host 1.com--webroot-path/mnt/host 2-d host 2.com
在此命令中,有多个--webroot-路径,每个主机名前有一个路径。Certbot将向每个位置写入一个令牌文件。
最后下马,对我来说
Fusermount-u/mnt/host 1
Fusermount-u/mnt/host 2
现在只需使用SCP或装载将证书分发到服务器,并重新启动守护进程。,@kkp,这是一个很好的技术!感谢分享。@serverco我的错我给了错误的网络根路径,这就是它抛出错误的原因。它现在起作用了
@kkp我是否必须再次在本地挂载Web根路径才能运行cerbot renewer,Muneer:
我是否必须再次在本地挂载Web根路径才能运行cerbot续订
是的,它通常必须重新执行相同的验证过程,并且需要与您进行原始验证相同的可用资源来进行续订验证。,@Schoen谢谢您。
当我运行./letsEncrypt certonly--webroot--webroot-路径/mnt/host/--renew-by-Default--Text--Agree-tos-d时,我已经在本地挂载了根路径。它说/mnt/host/不存在或不是一个目录。我猜是权限问题。@Muneer,你能确认你可以使用/mnt/host作为目录吗,就像ls/mnt/host和ouch/mnt/host/sample-file?,我可以读文件,但我不能把它写到目录中,你在用sudo运行客户端吗?我已经在sshfs命令中添加了ALLOW_OTHER选项,现在我可以写到那个挂载点了。
现在我可以为本地挂载的Web根路径生成证书了。
但当我尝试在生产服务器上运行它时,它显示为内部服务器错误。
我使用的命令是
事件状态部分服务中断:acme-v01.api.letscrypt.org(生产)
2016年10月31日5:44 UTC[调查]我们正在调查一个问题,该问题导致一些用户在尝试颁发证书时遇到错误。我正在使用的技术可能会有所帮助。我有多个域和子域提供相同的服务器和多个服务器提供相同的域负载均衡。我所做的是将对我的任何Web服务器的所有/.well/请求代理到另一个专门用于续订证书的服务器。让我们将此服务器命名为crt-srvr。
我只在此服务器上创建或续订所有证书,并且我可以为我拥有的任何域执行此操作,因为对知名目录的所有Http/S请求都将发送到此服务器。证书续订后,我只需将它们分发到需要它们的服务器。为此,我将带有证书的目录挂载为所述服务器上的共享NFS。这比在几十台机器上复制它们要容易得多。在这些机器上,我有一项cron工作,每天晚上都会重新加载网络服务器,但我正在考虑创建一个脚本。这是一个肮脏的解决方案,但我太懒了,想不出更好的办法。
我的一家公司提供多实例、高流量、WordPress托管+我一直在绞尽脑汁地思考如何处理多实例的SSL证书生成+续订。
Sshf完全忘了我的想法。
感谢您提供此信息。