установить подстановочный знак позволяет зашифровать сертификат ssl на laravel sail

Я создал приложение SaaS, используя laravel 8 со сторонним пакетом laravel sail (Docker) и аренда для laravel

пакет для SaaS. Мне нужно установить подстановочный знак, позволяющий шифровать SSL в основном приложении, и все приложения клиента будут на HTTPS. Я пробовал установить certbot image вот так

  certbot:
    image: certbot/certbot:latest

образ установлен, но я не знаю, что делать после этого.

Я пробовал без докера, используя инструкции certbot, он установлен, и все прошло успешно, но веб-сайт не работает Не открывается и все запросы истекли.

Обновление:

это раздел портов в моем файле docker-compose.yml

ports:
    - '443:443'

Я запустил docker ps, и все службы работают. введите описание изображения здесь

Я запустил sudo ufw status, и это результат  введите описание изображения здесь


person Moauya Meghari    schedule 15.04.2021    source источник


Ответы (2)


TL; DR: парус Laravel не предназначен для производства. Используйте другую конфигурацию докера, если вам нужен пример, вы можете найти его здесь: https://github.com/thomasmoors/laravel-docker

Кроме того, подстановочные сертификаты недоступны при использовании HTTP-01 запросов, вам понадобится Задача DNS-01, которую вы выполняете, добавляя текстовую запись в конфигурацию DNS.


Подстановочные сертификаты от Let's Encrypt возможны только с вызовом DNS-01. Однако для этого необходимо вставить запись TXT в реестр DNS. Так что не используйте подстановочные знаки, если у вас нет API для изменения DNS. Возможно, стоит попробовать взглянуть на это: https://stackexchange.github.io/dnscontrol/ Однако я не знаю, поддерживает ли это ваш провайдер домена.

Для обычных (без подстановочных знаков) сертификатов:

По умолчанию Laravel Sail запускается с использованием встроенной команды php artisan serve - веб-сервер, который не поддерживает SSL-сертификаты. Поэтому вам нужно добавить обратный прокси, например nginx. Из-за этого я считаю, что парус не будет готов к производству и также не предназначен. Я сделал пример конфигурации docker-compose без использования паруса для laravel: https://github.com/thomasmoors/laravel-docker.

Certbot работает , помещая на ваш веб-сервер файл, который будет извлечен для задачи < / а>. Однако похоже, что ваша текущая конфигурация не разделяет том между вашим веб-сервером и Certbot. Также вам необходимо разрешить certbot изменять вашу конфигурацию nginx.

Местоположение вашего кода по умолчанию - _2 _, поэтому вы должны включить 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

person online Thomas    schedule 28.04.2021

Информации недостаточно, но я могу предложить ознакомиться с этим руководством https://github.com/Daanra/laravel-lets-encrypt и дважды проверьте свою конфигурацию. Если веб-сайт не отображается, согласно ошибке, проблема может быть связана с сетью (брандмауэр) или чем-то еще (приложение не работает и привязывается к порту 80 для HTTP-запросов и 443 для https).

person Inc0    schedule 23.04.2021
comment
Я обновил вопрос, проверьте его. О двойной проверке вашей конфигурации, я был бы признателен, если бы вы могли указать, какой файл. - person Moauya Meghari; 23.04.2021
comment
когда я включил sudo ufw allow 'Nginx Full', домен работает на порту 80 и показывает страницу nginx по умолчанию, но https не работает. - person Moauya Meghari; 23.04.2021