Настройка SSL для пользовательского порта в nginx - letsencrypt

Настройка SSL для пользовательского порта в nginx - letsencrypt

Я пытаюсь включить SSL на пользовательском порту(не 443), управляя веб-страницей. Поискав вокруг, я не смог найти много информации, которая могла бы помочь.

На сервере имеются неизменяемые порты: внешний: 26143, внутренний: 80.

Чтобы войти на сервер (без SSL), вам нужно ввести example.com:26143, и система увидит это как подключение к порту 80.

Как мне настроить сертификат (letes encrypt) для включения SSL на этом порту?


В результате тестирования выяснилось, что все, что я делаю, получает доступ к серверу только через порт 80, даже если я установил его на 26143.

Вот конфигурация с поддержкой сайтов nginx:

server {
    listen 80;
    listen [::]:80;

    root /root/html;

    index index.php;
    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
    
        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known {
        root /var/www/ssl/example.com/;
    }
}

Команды, которые я пробовал:

certbot --nginx -d example.com:26143
certbot certonly --standalone --preferred-challanges http -d example.com:26143
certbot certonly --standalone --preferred-challenges http -d example.com
certbot certonly --standalone --preferred-challenges http --http-01-port 26143 -d example.com
certbot certonly --nginx --preferred-challenges http --http-01-port 26143 -d example.com
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com:26143 -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --http-01-port 26143 -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --preferred-challenges http --http-01-port 26143 -m [email protected] --webroot -w /root/html

Повозившись с настройками туда-сюда, наиболее распространенная ошибка, с которой я столкнулся, была следующей:

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: example.com
   Type:   unauthorized
   Detail: Invalid response from
   https://example.com/.well-known/acme-challenge/ho73up1dR3KU4V37awccOw2T5xsSILWUM365ZnwVEN4
   [159.81.xxx.xxx]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
   2.0//EN\">\n<html><head>\n<title>404 Not
   Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

404 — этоНетиз моей системы это example.com:80, а не example.com:26143. Кроме того, у меня нет доступа к изменению записей DNS.


По моему опыту, Let's Encrypt и SSL оказались довольно запутанными, а в сочетании с ограничениями скорости я не могу разобраться в них достаточно подробно, чтобы понять.

Я знаю, что это возможно, я просто не знаю, как и/или что я делаю неправильно.

Любая помощь будет оценена по достоинству.

решение1

Let's encrypt http-01 challenges требует порт 80 для обмена данными проверки. Сервер https никогда не используется. Порт 80 является жестким требованием. Если это не вариант, то DNS — единственный другой способ.

Существуют тестовые серверы, которые следует использовать до тех пор, пока не будут выполнены правильные настройки (меньшее ограничение скорости или, возможно, даже отсутствие ограничения), после чего следует переключиться на производственные серверы.

Похожий вопрос:https://community.letsencrypt.org/t/port-4434-instead-of-443/61349

Связанный контент