小编u23*_*3d7的帖子

尝试使用 Let's Encrypt 保护 Nginx,但无法使用非 root 用户访问 /etc/letsencrypt/live 中的 .pem 文件

我有一个 Flask 应用程序,前面有 nginx 反向代理服务器。我已将我的应用程序部署在 Digital Ocean Droplet 上。我创建了一个具有 root 权限的用户,并使用该用户通过 HTTPS 运行我的应用程序。我一直遇到位于以下路径中的 .pem 文件的权限问题:/etc/letsencrypt/live/my-domain-name.com。我现在要做的就是在终端中使用 sudo 命令将这些文件复制到我的项目文件夹,然后在 nginx Dockerfile 中再次将它们复制到 /etc/nginx 并在配置文件中给出此路径。但是,这并不理想,因为我希望自动续订我的 SSL 证书。我尝试使用chown -R user:user/etc/letsencrypt等命令更改根用户的权限,但没有任何效果。我收到此错误:

nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/my-domain-name.com/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/my-domain-name.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?我希望能够使用 /live/my-domain-name 路径访问 .pem 文件,并能够在证书过期时续订我的证书,而无需使用 root 用户。任何帮助将不胜感激。谢谢。

项目conf文件:

server {

        listen 80;
        server_name my-domain-name.com www.my-domain-name.com;
        return 301 https://$host$request_uri;
    }



    server {
        listen       443 ssl;
        server_name  my-domain-name.com www.my-domain-name.com;
        ssl_certificate     /etc/nginx/fullchain.pem;
        ssl_certificate_key /etc/nginx/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5; …
Run Code Online (Sandbox Code Playgroud)

nginx ssl-certificate docker dockerfile lets-encrypt

5
推荐指数
1
解决办法
2219
查看次数