3

我使用 laravel 8 创建了一个 SaaS 应用程序,带有第一方包laravelsai ( Docker ) 和laravel 租赁

SaaS 软件包。我需要在主应用程序上安装通配符让加密 SSL,所有租户应用程序都将使用 HTTPS。我试着这样certbot image安装

  certbot:
    image: certbot/certbot:latest

图像已安装,但我不知道之后该怎么做。

我尝试使用 已安装的certbot 指令不使用 docker ,一切都成功了,但网站无法打开并且所有请求都超时。

更新:

这是我的 docker-compose.yml 文件中的端口部分

ports:
    - '443:443'

我跑了docker ps,所有服务都启动并运行。 在此处输入图像描述

我跑了sudo ufw status,这就是结果 在此处输入图像描述

4

2 回答 2

0

TLDR:Laravel 帆不适用于生产。使用不同的 docker 配置,如果需要示例,可以在这里找到:https ://github.com/thomasmoors/laravel-docker

此外,使用HTTP-01 质询也无法获得通配符证书,您需要DNS-01 质询,您可以通过在 dns 配置中添加 txt 记录来实现。


Let's Encrypt 的通配符证书只能通过DNS-01 质询。但是,这需要您将 TXT 记录粘贴到您的 DNS 注册表中。所以除非你有一个 api 来改变你的 dns,否则不要使用通配符。可能值得一试:https ://stackexchange.github.io/dnscontrol/ 但是我不知道您的域提供商是否支持这一点。

对于常规(非通配符)证书:

默认情况下,Laravel Sail使用内置的php artisan servecommand-webserver运行,它不支持 ssl 证书。所以你需要添加一个像nginx这样的反向代理。正因为如此,我相信 Sai 没有准备好生产,也不是有意的。我为 laravel 制作了一个非帆 docker-compose 配置示例:https ://github.com/thomasmoors/laravel-docker

Certbot通过在您的网络服务器上放置一个文件来工作,该文件将被检索用于挑战。但是,您当前的配置似乎没有在您的网络服务器和 Certbot 之间共享卷。您还需要允许 certbot 修改您的 nginx 配置。

您的代码的默认位置是/var/www/html,因此您应该通过为 Certbot 服务添加一个卷来启用 Certbot 写入该目录:

upstream sentry_docker {
        server 192.168.1.94:9005;
}

server {

    server_name example.dev;



     location / {


               proxy_pass http://sentry_docker;
               proxy_set_header Host $host;
}




    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.dev/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.dev/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}







server {
    if ($host = example.dev) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



    server_name example.dev;
    listen 80;
    return 404; # managed by Certbot


}
     certbot:
        image: certbot/certbot:latest
        volumes:
          - .:/var/www/html
          - ./data/nginx:/etc/nginx/conf.d

于 2021-04-28T09:54:46.607 回答
-3

没有足够的信息可以帮助您,但我建议您查看本指南https://github.com/Daanra/laravel-lets-encrypt并仔细检查您的配置。如果网站没有显示,根据错误,问题可能与网络(防火墙)或其他(应用程序未运行并将自身绑定到 http 请求的端口 80 和 https 的 443)有关。

于 2021-04-23T16:41:18.627 回答