laravel - 安装通配符可以在 laravel 帆上加密 ssl 证书

标签 laravel docker ssl lets-encrypt laravel-sail

我使用 laravel 8 和第一方包创建了一个 SaaS 应用程序 laravel 帆 ( Docker ) 和 tenancy for laravel
SaaS 软件包。
我需要在主应用程序上安装通配符让加密 SSL,所有租户应用程序都将使用 HTTPS。
我尝试安装 certbot image像这样

  certbot:
    image: certbot/certbot:latest
图像已安装,但我不知道之后该怎么做。
我尝试不使用 docker 使用 certbot instructions
它已安装并且一切都成功了,但是网站没有打开并且所有请求都超时。
更新:
这是我的 docker-compose.yml 文件中的端口部分
ports:
    - '443:443'
我跑了docker ps并且所有服务都已启动并正在运行。
enter image description here
我跑了sudo ufw status这就是结果
enter image description here

最佳答案

TLDR:Laravel 帆不适用于生产。使用不同的 docker 配置,如果需要示例,可以在这里找到:https://github.com/thomasmoors/laravel-docker
还有通配符 证书是 不是 可通过使用 HTTP-01 challenges , 你需要一个 DNS-01 challenge ,您可以通过将 txt 记录添加到您的 dns 配置来完成。

Let's Encrypt 的通配符证书只能使用 DNS-01 challenge .但是,这需要您将 TXT 记录粘贴到您的 DNS 注册表中。所以除非你有一个 api 来改变你的 dns,否则不要使用通配符。可能值得一试:https://stackexchange.github.io/dnscontrol/
但是我不知道您的域提供商是否支持这一点。
对于常规(非通配符)证书:
默认情况下 Laravel Sail runs using the built in php artisan serve command-webserver ,它不支持 ssl 证书。所以你需要添加一个像nginx这样的反向代理。 正因为如此,我相信 Sai 没有准备好生产,也不是有意的。 我为 laravel 制作了一个非帆 docker-compose 配置示例:https://github.com/thomasmoors/laravel-docker
Certbot 作品 by placing a file on your webserver which will be retrieved for the challenge .但是,您当前的配置似乎没有在您的网络服务器和 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

关于laravel - 安装通配符可以在 laravel 帆上加密 ssl 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67107225/

相关文章:

ssl - 如何使用公钥隐私/完整性模式验证 PFX

node.js - Laravel 8 的 NPM 安装失败

docker - 当 `-e` 环境变量被传递到 docker 容器中时,幕后会发生什么?

docker - 无法从Docker容器连接到外部Oracle DB

docker - 消费者 : Cannot connect to amqp://user:**@localhost:5672//: [Errno 111] Connection refused

java - c3p0 和 Heroku postgres,SSL 问题

SSL 终止 Nginx 入口 Controller

php - Laravel 5 "Trying to get property of non-object"传递多个连接表值查看时出错

php - Laravel ModelNotFound 异常处理与命名空间

laravel - 如何在多个模型中使用Laravel Scout