У Certbot проблемы с поиском моей задачи ACME в веб-приложении nodejs

У меня есть веб-служба NodeJS, которая предоставляется через обратный прокси-сервер с использованием Nginx. Я пытаюсь обновить сертификат SSL от certbot, и для продления он смотрит на domain.com/.well-known для задачи ACME. Однако у меня настроена служба узла так, что корневой путь не обслуживает файлы, корень домена перехватывается и обрабатывается моей веб-службой. Мой фактический общедоступный веб-корневой каталог находится в domain.com/public, поэтому задача ACME действительно в domain.com/public/.well-known

Итак, есть два способа исправить это: я мог бы выяснить, как сказать certbot, чтобы он смотрел на domain.com/public/.well-known, а не на domain.com/.well-known, или выяснить, как каким-то образом «прокси» domain.com/public/.well-known на domain.com/.well-known.

Вот моя конфигурация и неудачная попытка перенаправления:

server {
    listen 80;
    listen 443 ssl;
    client_max_body_size 50M;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    server_name domain.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    location /.well-known {
        return 302 "http://{$host}/public{$request_uri}";
    }
}

person chrispytoes    schedule 04.06.2018    source источник
comment
Какой клиент ACME вы используете? Стандартный certbot? Как ты им управляешь?   -  person whites11    schedule 05.06.2018
comment
@ whites11 Просто использую certbot renew, извините.   -  person chrispytoes    schedule 05.06.2018
comment
Как вы указали используемый webroot?   -  person whites11    schedule 05.06.2018
comment
@ whites11 Webroot - это папка, называемая общедоступной в моем приложении nodejs, именно там установлен веб-корневой каталог certbot для этого домена. Эта папка обслуживается только на маршруте /public. Я не могу поместить его в корневой путь, потому что запросы к корневому пути перехватываются и обрабатываются приложением nodejs и отображаются из шаблонов ручек. Я использую только маршрут /public для обслуживания статических файлов js и css. Он помещает задачу в нужное место, а просто не ищет ее в нужном месте, когда выполняет проверку.   -  person chrispytoes    schedule 05.06.2018


Ответы (1)


Если вы не можете использовать проверку домена на основе пути (HTTP), вы можете использовать проверку домена на основе DNS.

certbot certonly --manual --preferred-challenges dns -d mydomain.com

Вам будет предложено добавить запись TXT на DNS-сервер вашего домена. Добавьте запись и подождите несколько минут, прежде чем нажать ENTER, чтобы продолжить.

Скопируйте новые сертификаты в желаемое место.

Руководство пользователя Certbot

person John Hanley    schedule 09.06.2018
comment
Работал отлично, это именно то, что мне нужно, настроить certbot без nginx или apache на моем nodeJS api. - person Rafael Moni; 06.02.2020