我使用 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
答案1
我认为将证书文件复制到/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
请查看此网址了解详情:https://certbot.eff.org/docs/using.html#renewing-certificates