Задать вопрос
@Eitewi

Получить сертификат автоматически и продлить https для apache?

Привет, у меня статический сайт, но я хочу https
проблемма в том что
<VirtualHost _default_:443>
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/public-certificate.pem
        SSLCertificateKeyFile /etc/apache2/ssl/private-key.pem
</VirtualHost>

если /etc/apache2/ssl/public-certificate.pem не сущевствует то апач крашится и ничего не сервит даже http
и тут проблемма что серитификат я хочу получать и обновлять автономно через certbot/acme
им для обновления через -webroot нужно что б апач (для валидации) работал на 80 порту
тоесть апач не робит потому что нету файла а файла нету потому что апач не робит
запускаю все в докере, в docker compose а значит (certbot и apache) запустятся одновременно, как сделать так что б апач
проверял появился сертефикат или нет а не вырубался
запустить standalone можно но все равно апач выпрубится потому что не найдет сертификат который лишь спустя 15 секунд подгрузит сертбот, как вы решаете такую проблемму)
вариант ручками не вариант, все должно быть автоматизировано)
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Сложный 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@q2digger
никого не трогаю, починяю примус
тут два совершенно очевидных варианта.
первый. запустить апач на 80 порту и получить сертификат первый раз (LE для проверки нужен 80й порт, верно пишите). После этого настроить 443й и запустить уже полный конфиг, настроить автообновление.
второй. у acme и у certbot есть режим запуска без вебсервера. (standalone)
Ответ написан
@dronmaxman
VoIP Administrator
Я вот так это делаю

services:
  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - 80:80
      - 443:443
    networks:
      - web
    volumes:
      - ./letsencrypt:/etc/letsencrypt:ro
      - ./www:/var/www/html
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"


  certbot:
    image: certbot/certbot
    environment:
      - PGID=101
      - PUID=101
    volumes:
      - ./letsencrypt:/etc/letsencrypt:rw
      - ./www/certbot:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
Ответ написан
Комментировать
1. у вас выдан сертификат и вы хотите его обновить
certbot renew
это одна история
2. если вы первый раз выдаете

location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

куда он будет ложиться файл и проверять ?
для тестов просто зайдите в эту папку положите рандомный текстоыый файл и проверьте получится ли он у вас на сайте
site.ru/.well-known/acme-challenge/111.txt
если файл видно то в этой папке будет положен верификационный файл.
так же не заывайте что у вас в день 5 попыток и тестируйте с --dry-run оно для отладки в таком сслучае все ошибки и все все будет как при настоящей попытке выдать сертификат, кроме самого сертификата. Но попытки неогранны, как толкьо поймете что нашли причину уберите --dry-run и получите сертификат.
если вы сегодня использовали 5 попыток то откладываем до завтра
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы