我使用certbot生成证书文件。证书文件是在 /etc/letsencrypt/live/... 是的。实时文件夹是由certbot创建的,只有管理员可以访问。

在过去,我会将这些文件复制到我的应用程序文件夹中,这样做很好。但复制证书文件感觉不对。

所以,我想知道是否有可能把文件留在原处。我试图将此付诸实践,但我正在努力让我的应用程序访问该文件夹。我没有问题调整路径,但它没有访问文件夹的权限。

我想知道如何让我的应用程序访问这些文件。

使用systemd配置文件启动应用程序。 我最初有这个systemd配置:

[Unit]
Description=my-service
Documentation=http://documentation.domain.com
After=network.target

[Service]
Type=simple
TimeoutSec=0
User=ubuntu
ExecStart=/usr/bin/node /home/ubuntu/my-service/server.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

我试着加上下面的一行,但没什么区别。

PermissionsStartOnly=true
最佳回复

我不认为复制证书文件 /etc/letsencrypt/live 应用程序的文件夹错误。我建议您通过在 /etc/letsencrypt/renewal-hooks/deploy 文件夹,该文件夹还会在每次更新相应证书时重新加载应用程序。例如:

#!/bin/sh

# /etc/letsencrypt/renewal-hooks/deploy/example-com_deploy.sh

set -e

for domain in $RENEWED_DOMAINS; do
        case $domain in
        example.com)
                daemon_cert_root=/etc/some-daemon/certs

                # Make sure the certificate and private key files are
                # never world readable, even just for an instant while
                # we're copying them into daemon_cert_root.
                umask 077

                cp "$RENEWED_LINEAGE/fullchain.pem" "$daemon_cert_root/$domain.cert"
                cp "$RENEWED_LINEAGE/privkey.pem" "$daemon_cert_root/$domain.key"

                # Apply the proper file ownership and permissions for
                # the daemon to read its certificate and key.
                chown some-daemon "$daemon_cert_root/$domain.cert" \
                        "$daemon_cert_root/$domain.key"
                chmod 400 "$daemon_cert_root/$domain.cert" \
                        "$daemon_cert_root/$domain.key"

                service some-daemon restart >/dev/null
                ;;
        esac
done

请检查此URL以获取详细信息: https://certbot.eff.org/docs/using.html#renewing-certificates