Situatie
În mod normal, pentru a securiza un server web cu HTTPS folosind Let’s Encrypt avem nevoie de un nume de domeniu asociat serverului.
Începând cu 2026, Let’s Encrypt permite însă emiterea certificatelor SSL/TLS și direct pentru adrese IP publice, atât IPv4, cât și IPv6. Astfel, putem avea o conexiune HTTPS validă chiar dacă accesăm serverul direct prin IP și nu avem un domeniu configurat. Această funcționalitate poate fi utilă pentru servere VPS, servicii de test, infrastructură cloud, servere temporare sau diferite servicii self-hosted.
Solutie
Pentru exemplul nostru vom folosi Certbot pe un server Linux.
1. Verificăm versiunea Certbot
Suportul pentru certificate emise direct pe IP a fost introdus în Certbot 5.3. Pentru anumite metode, precum webroot, este recomandată versiunea 5.4 sau mai nouă.
Putem verifica versiunea instalată cu:
certbot --version
Dacă Certbot nu este instalat, acesta trebuie instalat sau actualizat folosind metoda recomandată pentru distribuția Linux utilizată.
2. Verificăm accesibilitatea serverului
Let’s Encrypt trebuie să poată verifica faptul că avem control asupra adresei IP.
În cazul metodei standalone, Certbot pornește temporar propriul server web pentru efectuarea verificării. Din acest motiv, portul 80 trebuie să fie accesibil din internet și să nu fie folosit în acel moment de alt serviciu.
Dacă avem deja Apache sau Nginx pornit pe portul 80, acesta poate fi oprit temporar.
Exemplu pentru Nginx:
sudo systemctl stop nginx
3. Testăm emiterea certificatului
Este recomandat să testăm mai întâi folosind serverul staging al Let’s Encrypt pentru a evita eventualele limite de emitere.
Executăm:
sudo certbot certonly --staging \
--preferred-profile shortlived \
--standalone \
--ip-address ADRESA_IP
Înlocuim ADRESA_IP cu IP-ul public al serverului.
Dacă validarea se finalizează cu succes, Certbot va genera un certificat de test.
4. Generăm certificatul real
După ce am confirmat că validarea funcționează, executăm aceeași comandă fără parametrul --staging:
sudo certbot certonly \
--preferred-profile shortlived \
--standalone \
--ip-address ADRESA_IP
Certificatul rezultat va fi unul public trusted și va putea fi folosit pentru HTTPS.
Fișierele certificatului sunt salvate în:
/etc/letsencrypt/live/ADRESA_IP/
Cele mai importante sunt:
fullchain.pem
privkey.pem
Acestea pot fi configurate ulterior în Nginx, Apache sau în aplicația care oferă serviciul HTTPS. Certbot nu configurează momentan automat Nginx sau Apache atunci când certificatul este emis pentru o adresă IP.
5. Atenție la perioada de valabilitate
Certificatele Let’s Encrypt pentru adrese IP sunt obligatoriu de tip short-lived și sunt valabile aproximativ 6 zile, mai exact 160 de ore. Din acest motiv, reînnoirea automată este foarte importantă.
Putem verifica dacă mecanismul de reînnoire funcționează cu:
sudo certbot renew --dry-run
În cazul unui server web, după reînnoirea certificatului poate fi necesar și un deploy-hook care să dea reload serviciului pentru ca noul certificat să fie încărcat. Prin această metodă putem avea acum un serviciu HTTPS cu certificat recunoscut de browsere direct pe o adresă IP publică, fără să mai fie obligatorie achiziționarea sau configurarea unui domeniu.
Leave A Comment?