monit、let's encrypt 和文件权限

monit、let's encrypt 和文件权限

我决定将 monit 放在运行 centos 7 的 vps 上。我已经在服务器上安装了 let's encrypt 并且安装了证书。我想将 monit 指向 fullchain.pem 或 cert.pem,但我收到此错误。

    Dec 30 00:56:52 [23926]: The SSL server PEM file 
    '/etc/letsencrypt/live/example.com/fullchain.pem' must have permissions no more than -rwx------ (0700); right now permissions are -rw-r--r-- (0644).
    Dec 30 00:56:52 monit[23926]: /etc/monitrc:131: SSL server PEM file permissions check failed 'allow'
    Dec 30 00:56:52  systemd[1]: monit.service: main process exited, code=exited, status=1/FAILURE

不确定如何继续。我是否要更改证书文件的所有者?我是否要更改运行 monit 的所有者?

答案1

Monit 非常奇怪,因为它期望将私钥和 TLS 证书链连接到由 指定的单个文件中pemfile,因此如果不进行进一步处理,您就无法使用通过 certbot 检索到的证书。

您需要设置一个部署钩子在 certbot 中将证书合并到一个文件中并设置该文件的权限。

示例脚本可能如下所示:

#!/bin/bash

for domain in $RENEWED_DOMAINS
do
    case $domain in
    example.com)
        cat $RENEWED_LINEAGE/privkey.pem $RENEWED_LINEAGE/fullchain.pem > /etc/monit/pemfile-$domain.pem
        chmod 600 /etc/monit/pemfile-$domain.pem
        ;;
done

然后用 续订certbot renew --deploy-hook '/path/to/that/script.sh'

并在 monit 中指定pemfile /etc/monit/pemfile-example.com.pem

最后,您可以使用 certbot renew 之类的命令使用更新的证书重新启动 monit --post-hook 'systemctl restart monit'...

答案2

作为Monit v5.27.0,发布于 2020-06-29,您现在可以传入指向 Let's Encrypt 生成的单独文件的 pemchain 和 pemkey 参数。引用自文档

作为备选宝链彭姆凯设置单独的 PEM 编码证书链和私钥文件的路径。密钥文件应存储在文件系统上的安全位置,并且应具有严格的权限,不超过 0700。

...

使用单独的证书链和密钥的示例:

set httpd
    port 2812
    with ssl {
       pemchain: /etc/ssl/certs/monit.chain.pem
       pemkey: /etc/ssl/certs/monit.key.pem
    }
    allow myuser:mypassword

也可以看看:公关 #78

相关内容