我目前正在尝试通过 NFS 共享和使用来自 LetsEncrypt 的通配符证书,但应该使用它的服务器无法这样做。
对于我的设置:我有 3 个虚拟机(将来可能是 4 个)正在运行。一种是反向代理,它接收所有 http 和 https 流量并将它们重定向到我的邮件服务器和我的 Kanboard。我的邮件服务器使用 iRedMail 运行。
我的问题是我无法在 Kanboard 和 iRedMail 服务器上部署证书。 Kanboard (APACHE2) 告诉我:
SSLCertificateFile: file '/mnt/letsencrypt/live/domain.com/fullchain.pem' does not exist or is empty
和 iRedMail (NGINX) 这个:
nginx: [emerg] BIO_new_file("/etc/ssl/certs/iRedMail.crt") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/certs/iRedMail.crt'
因为我不想让这篇文章拖得太长,所以我用我的配置和我所做的事情创建了一些粘贴箱。 反向代理,红邮,康博德:所有内容均可在 6 个月内访问。
对domain.com(意味着反向代理)的 HTTPS 访问可以正常工作。
输出为sudo ls -l /etc/letsencrypt/(居住)
drwxrwxrwx 3 administrator root 4096 Feb 13 16:25 live
所有 3 台服务器都运行 Ubuntu 1804 Server,并且用户“管理员”使用相同的凭据。
如果您需要更多信息,请随时询问。 编辑
答案1
因为列表中的守护进程以 root 身份运行(邮件和 Web 侦听端口 <1024),并且这些守护进程尝试从 NFS 读取数据,所以它们会遇到问题,因为通常 NFS 共享是在没有选项 no_root_squash 的情况下完成的。这个想法是 NFS 将本地(客户端上)root 用户映射为 ID 不为 0 的匿名用户。并且本地 root 用户将无法访问 NFS 共享文件和目录,其权限仅限于 root。因此OP可以通过两种方式解决这个问题:
- 更改文件和目录的权限,以便世界可以读取文件。
或者
- 将 no_root_squash 添加到 NFS 共享(并重新启动 NFS 服务器)
答案2
感谢 @muru 和 @RomeoNinov,我能够通过对我的 NFS 服务器进行小幅调整来使用证书。由于我的 Pastebins 的有效期仅限 6 个月,因此我将在此处发布我的配置。
我仍在使用 NFS 在网络上共享我的证书
须藤纳米/etc/出口打开我的配置,在最后一行中我使用了以下内容,然后
/etc/letsencrypt IP-OF-REVERSE-PROXY (rw,sync,no_subtree_check)
我只是no_root_squash
在最后添加了(rw,sync,no_subtree_check,no_root_squash)
。
重新启动所有服务器后,我检查了服务是否正在运行 - 它们确实运行了。我进入浏览器并检查本地IP以查看证书,一切都是正确的。
我也编辑/etc/hosts.allow
并/etc/hosts.deny
阅读后无根南瓜限制对我的 NFS 共享的访问,允许 3 台服务器访问我的共享,允许我的管理 PC 通过 SFTP 和 SSH 进行远程访问,并拒绝其他一切。Hosts.允许 NFS