Cześć. W tym poradniku zaprezentuję jak poprawnie "podpiąć" swoją domenę pod Cloudflare i skonfigurować certyfikat SSL (full strict) oraz kliencki certyfikat TLS.
Do wyżej wymienionych rzeczy będziemy potrzebować:
- serwera VPS oraz użytkownika w grupie sudo,
- domeny (ja zaprezentuje to na przykładzie OVH),
- konto na Cloudflare.
Instalacja i wstępna konfiguracja serwera WWW - Nginx (Ubuntu) Jeżeli posiadasz już zainstalowany serwer WWW pomiń ten krok.
Aktualizacja pakietów:
sudo apt update
Instalacja pakietów:
sudo apt upgrade
Instalacja Nginx:
sudo apt install nginx
Konfiguracja firewalla:
sudo ufw allow 'Nginx HTTPS'
sudo ufw allow ssh
sudo ufw enable
Konfiguracja strefy DNS domeny Jeżeli Twoja strefa DNS domeny jest skonfigurowana tak by przekierowywała na Twój serwer pomiń ten krok.
- W panelu domeny wybieramy "Strefa DNS", następnie znajdujące się w prawym rogu "Dodaj rekord",
- Wybieramy pole wskazania "A", a w adresie docelowym podajemy adres IP swojego serwera,
- Klikamy "Dalej" i zatwierdzamy,
- W rekordach szukamy rekordu "A" z adresem IP nie będącym adresem naszego serwera. Usuwamy ten rekord,
- Zmiana ustawień strefy DNSy zajmuje do 24h lecz zazwyczaj dzieje się to o wiele szybciej.
Podpięcie domeny pod Cloudflare
Logujemy się na nasze konto Cloudflare, a następnie przechodzimy pod adres: https://dash.cloudflare.com/. Klikamy "Add a Site".
- Podajemy naszą domenę,
- Wybieramy free plan,
- Sprawdzamy poprawność rekordów DNS które odczytał Cloudflare z tymi które mamy ustawione w panelu domeny OVH,
- Przechodzimy dalej. W tym momencie Cloudflare poprosi nas o zmianę serwerów DNS.
Zmiana serwerów DNS domeny na DNSy Cloudflare
- W panelu domeny na OVH przechodzimy do zakładki "Serwery DNS",
- Wybieramy opcję "Zmień serwery DNS",
- Serwery DNS z OVH zastępujemy odpowiednio tymi podanymi przez Cloudflare. Klikamy "Zastosuj konfigurację". Zmiana serwerów DNS może zająć do 48h lecz tak jak w przypadku strefy DNS dzieje się to zazwyczaj dużo szybciej,
- Klikamy "Done, chceck nameservers", a następnie "Finish later",
- W momencie zmiany serwerów DNS przechodzimy do kolejnego punktu. Informację o udanej zmianie serwerów DNS dostaniesz na maila przypisanego do konta OVH.
Konfiguracja certyfikatu SSL (full strict)
- W panelu domeny w Cloudflare przechodzimy do zakładki "SSL/TLS",
- Następnie wybieramy "Origin Server" i klikamy "Create Certificate",
- Wszystkie ustawienia zostawiamy domyślne. Klikamy "Next",
- Przechodzimy na nasz serwer i przenosimy się do katalogu /etc/ssl/certs (cd /etc/ssl/certs/),
- W tym katalogu tworzymy folder cloudflare (sudo mkdir cloudflare), a następnie przechodzimy do utworzonego folderu. W utworzonym folderze tworzymy dwa pliki: cert.pem i key.pem (sudo touch cert.pem key.pem),
- Otwieramy plik cert.pem wybranym edytorem tekstu i wklejamy do niego cały "Origin Certificate" i zapisujemy (np. sudo nano cert.pem),
- Otwieramy plik key.pem wybranym edytorem tekstu i wklejamy od niego cały "Private key" i zapisujemy (np. sudo nano key.pem), Pamiętaj by zapisać gdzieś u siebie na komputerze private key gdyż później nie ma opcji podglądu tego klucza!
- Edytujemy domyślny plik konfiguracyjny hosta Nginxa (sudo nano /etc/nginx/sites-available/default), usuwamy wszystko i wklejamy:
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/ssl/certs/cloudflare/cert.pem;
ssl_certificate_key /etc/ssl/certs/cloudflare/key.pem;
gzip off;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name twojadomena.pl;
location / {
try_files $uri $uri/ =404;
}
}
- Przechodzimy do panelu Cloudflare do "SSL/TLS", a następnie "Overview". Zaznaczamy opcję "Full (strict)". Dalej przechodzimy do zakładki "Edge Certificates" i zaznaczamy "Always Use HTTPS" i "Automatic HTTPS Rewrites" tak by były ON,
- Następnie w konsoli wpisujemy:
sudo systemctl reload nginx
- Teraz po przejściu na Twoją domenę zauważysz klikając na kłódkę, że Twój certyfikat jest aktywny.
Konfiguracja klienckiego certyfikatu TLS (opcjonalne lecz zalecane)
- Pobieramy plik: https://support.cloudflare.com/hc/en-us/article_attachments/360044928032/origin-pull-ca.pem,
- Kopiujemy zawartość pliku, a następnie na serwerze w utworzonym folderze tworzymy plik cloudflare.crt (sudo nano /etc/ssl/certs/cloudflare/cloudflare.crt), wklejamy wcześniej skopiowaną zawartość i zapisujemy,
- Następnie edytujemy plik konfiguracyjny hosta Nginxa (sudo nano /etc/nginx/sites-available/default) i wklejamy:
ssl_client_certificate /etc/nginx/certs/cloudflare/cloudflare.crt;
ssl_verify_client on;
Ostatecznie nasz plik konfiguracyjny hosta powinien wygląda tak:
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/ssl/certs/cloudflare/cert.pem;
ssl_certificate_key /etc/ssl/certs/cloudflare/key.pem;
ssl_client_certificate /etc/ssl/certs/cloudflare/cloudflare.crt;
ssl_verify_client on;
gzip off;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name twojadomena.pl
location / {
try_files $uri $uri/ =404;
}
}
- Na serwerze reloadujemy Nginxa:
sudo systemctl reload nginx
- W zakładce "Orgin Server" w panelu SSL/TLS naszej domeny włączamy "Authenticated Origin Pulls".
To już koniec... od teraz możesz cieszyć się certyfikatem SSL i klienckim TLS!