Puncte:0

Configurarea SSL pentru portul personalizat în nginx - letsencrypt

drapel in

Încerc să activez SSL pe un port personalizat (nu 443), rulând o pagină web. Căutând în jur, nu am găsit prea multe informații care să mă ajute.

Serverul are porturi neschimbabile, externe: 26143, interne: 80.

Pentru a intra pe server (fără SSL), ar trebui să tastați example.com:26143, iar sistemul va vedea aceasta ca o conexiune la portul 80.

Cum aș configura un certificat (permite criptare) pentru a activa SSL pe acest port?


Din testare, se pare că orice aș face, accesează doar serverul de pe portul 80, chiar dacă îl setez la 26143

iată configurația activată pentru site-uri nginx:

Server {
    asculta 80;
    asculta [::]:80;

    root /root/html;

    index index.php;
    numele serverului _;

    Locație / {
        try_files $uri $uri/ =404;
    }

    locație ~ \.php$ {
        include snippets/fastcgi-php.conf;
    
        # Cu php-fpm (sau alte socket-uri Unix):
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    locație ~ /\.ht {
        nega totul;
    }

    locație /.cunoscut {
        rădăcină /var/www/ssl/example.com/;
    }
}

Comenzile pe care le-am încercat sunt:

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

Câteva modificări înapoi și a patra, cea mai frecventă eroare pe care am primit-o a fost aceasta:

NOTITE IMPORTANTE:
 - Următoarele erori au fost raportate de server:

   Domeniu: example.com
   Tip: neautorizat
   Detaliu: răspuns nevalid de la
   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 Nu
   Găsit</title>\n</head><body>\n<h1>Nu a fost găsit</h1>\n<p"

   Pentru a remedia aceste erori, asigurați-vă că numele dvs. de domeniu a fost
   introdus corect și înregistrările DNS A/AAAA pentru acel domeniu
   conțin(e) adresa IP corectă.

404 este Nu din sistemul meu, este de la example.com:80, în loc de example.com:26143. De asemenea, nu am acces la modificarea înregistrărilor DNS.


Din experiența mea, să criptăm și SSL a fost oarecum confuz și, împreună cu limitele de rată, nu sunt capabil să depanez suficient pentru a înțelege.

Știu că ar trebui să fie posibil, pur și simplu nu știu cum și/sau ce greșesc.

Orice ajutor ar fi apreciat

digijay avatar
drapel mx
Se pare că apare o redirecționare, deoarece în loc de acme-challenge LE primește un document html cu un mesaj 404. De asemenea, IIRC LE acceptă doar porturile 80 și 443 (https://serverfault.com/a/805681)
drapel in
Portul 443 nu este relevant, doar portul 80, deoarece acolo trebuie să fie provocarea acme.
Puncte:1
drapel in

Să criptăm http-01 provocările necesită portul 80 pentru a face schimb de date de validare. Serverul https nu este niciodată folosit. Portul 80 este o cerință grea. Dacă aceasta nu este o opțiune, atunci DNS este singura altă modalitate.

Există servere de testare pe care ar trebui să le utilizați până când aveți configurarea corectă (limită de rată mai mică sau poate chiar fără limită), mai întâi după aceea treceți la serverele de producție.

Intrebare asemanatoare: https://community.letsencrypt.org/t/port-4434-instead-of-443/61349

Typewar avatar
drapel in
Mulțumesc pentru explicație! În acest caz, pentru această situație, cred că pot folosi un proxy off-site conectat la server pentru a utiliza portul 80. Dar asta ar funcționa probabil doar pentru numele de gazdă/domeniul proxy-ului, nu pentru origine.
Typewar avatar
drapel in
Privind mai detaliat problema, se pare că ceea ce întreb nu este posibil deocamdată. https://github.com/certbot/certbot/issues/2697
drapel in
După cum am scris în răspuns, trebuie să aveți portul 80 deschis și să adăugați răspunsul la provocare pe acel server http. Portul pe care îl utilizați după aceea nu este relevant.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.