nginx에서 사용자 정의 포트에 대한 SSL 설정 - letsencrypt

nginx에서 사용자 정의 포트에 대한 SSL 설정 - letsencrypt

사용자 지정 포트에서 SSL을 활성화하려고 합니다.(443 아님), 웹페이지를 실행 중입니다. 여기저기 검색해봐도 도움이 되는 정보를 많이 찾을 수 없었습니다.

서버에는 변경할 수 없는 포트(외부: 26143, 내부: 80)가 있습니다.

SSL 없이 서버에 들어가려면 example.com:26143을 입력하면 시스템에서는 이를 포트 80에 대한 연결로 간주합니다.

이 포트에서 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:26143 대신 example.com:80에서 왔습니다. 또한 DNS 레코드를 수정할 수 있는 권한이 없습니다.


내 경험상 Let encrypt와 SSL은 다소 혼란스러웠고 속도 제한과 함께 이해할 만큼 충분히 문제를 해결할 수 없었습니다.

나는 그것이 가능해야 한다는 것을 알고 있지만, 내가 어떻게 그리고/또는 무엇을 잘못하고 있는지 모르겠습니다.

어떤 도움이라도 주시면 감사하겠습니다.

답변1

Let's encrypt http-01 챌린지는 검증 데이터를 교환하기 위해 포트 80이 필요합니다. https 서버는 사용되지 않습니다. 포트 80은 어려운 요구 사항입니다. 이것이 옵션이 아닌 경우 DNS가 유일한 다른 방법입니다.

설정이 올바르게 될 때까지(속도 제한이 적거나 제한이 없을 수도 있음) 사용해야 하는 테스트 서버가 있으며, 그 후 먼저 프로덕션 서버로 전환합니다.

비슷한 질문:https://community.letsencrypt.org/t/port-4434-instead-of-443/61349

관련 정보