Podpinamy domenę pod Cloudflare - instalacja certyfikatu SSL i TLS, konfiguracja Nginx’a

pax | 2020-11-05 23:20:47 UTC | #1

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ć:


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.*
1. W panelu domeny wybieramy "Strefa DNS", następnie znajdujące się w prawym rogu "Dodaj rekord",

![strefadns|690x355](upload://lf25gk7SDVWfFu6am56UwOmsiR2.png) 

2. Wybieramy pole wskazania "**A**", a w adresie docelowym podajemy adres IP swojego serwera,
3. Klikamy "Dalej" i zatwierdzamy,
4. W rekordach szukamy rekordu "A" z adresem IP nie będącym adresem naszego serwera. Usuwamy ten rekord,
5. 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**".
1. Podajemy naszą domenę,

![domena|478x215](upload://lwObwUgHyRGxPZnGaJnznHq919x.png) 

2. Wybieramy free plan,
3. Sprawdzamy poprawność rekordów DNS które odczytał Cloudflare z tymi które mamy ustawione w panelu domeny OVH,
4. Przechodzimy dalej. W tym momencie Cloudflare poprosi nas o zmianę serwerów DNS.


**Zmiana serwerów DNS domeny na DNSy Cloudflare**

1. W panelu domeny na OVH przechodzimy do zakładki "Serwery DNS",
2. Wybieramy opcję "Zmień serwery DNS",

![serwerydns|690x193](upload://tB9udTigFQFsiSuSH8SQeMO6SFt.png) 

3. 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,

![serwerydcloudflare|591x259](upload://8wOZPe0YmRZ2495T4lChVyFnQ1g.png) 

4. Klikamy "Done, chceck nameservers", a następnie "Finish later",
5. **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)**
1. W panelu domeny w Cloudflare przechodzimy do zakładki "**SSL/TLS**",

![SSL|690x64](upload://aFBckUS84R1puiXsQn3f7bdkuSo.png) 

2. Następnie wybieramy "Origin Server" i klikamy "Create Certificate",
3. Wszystkie ustawienia zostawiamy domyślne. Klikamy "Next",
4. Przechodzimy na nasz serwer i przenosimy się do katalogu **/etc/ssl/certs** (cd /etc/ssl/certs/),
5. 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),
6. Otwieramy plik cert.pem wybranym edytorem tekstu i wklejamy do niego cały "**Origin Certificate**" i zapisujemy (np. sudo nano cert.pem),
7. 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!**
8. Edytujemy domyślny plik konfiguracyjny hosta Nginxa (**sudo nano /etc/nginx/sites-available/default**), usuwamy wszystko i wklejamy:

server {
listen 443 ssl defaultserver;
listen [::]:443 ssl default
server;
sslcertificate /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;
    }

}

9. **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,**
10. Następnie w konsoli wpisujemy:

sudo systemctl reload nginx

11. 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)**
1. Pobieramy plik: https://support.cloudflare.com/hc/en-us/article_attachments/360044928032/origin-pull-ca.pem,
2. 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,
3. Następnie edytujemy plik konfiguracyjny hosta Nginxa (sudo nano /etc/nginx/sites-available/default) i wklejamy:

sslclientcertificate /etc/nginx/certs/cloudflare/cloudflare.crt;
sslverifyclient 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;
    }

}

4. Na serwerze reloadujemy Nginxa:

sudo systemctl reload nginx

5. 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!

-------------------------

Jordii | 2020-11-06 14:04:50 UTC | #2

[quote="pax, post:1, topic:16633"]
`sudo systemctl reload nginx`
[/quote]

nie moge cos zainstalowac ngnixa, ![image|690x373](upload://wm2i8v4Fua4BsiGjgMhVcQ1OTye.png)

-------------------------

pax | 2020-11-06 16:05:18 UTC | #3

@Jordii 

sudo lsof -i:80
```
Daj screena co ci wypisze. Możliwe, że masz inną usługę działającą na porcie 80.
Dodatkowo z zasady nie powinno się robić takich rzeczy na roocie.


BrixNW | 2020-11-06 20:43:53 UTC | #4

Po co dodawać nowy rekord A do dns na ovh skoro chwilę później i tak całość jest kierowana przez cf?


pax | 2020-11-06 21:42:11 UTC | #5

CF działa jak proxy.
W momencie gdy nie dodasz rekordu A z adresem serwera to po wejściu na domenę zobaczysz domyślną stronę domenową z OVH. Bez rekordu A skąd domena miałaby wiedzieć na jaki adres chcesz zrobić przekierowanie?


BrixNW | 2020-11-06 22:40:15 UTC | #6

Ja zawsze dodaje rekordy w CF, a nie tam gdzie mam domenę zarejestrowaną.


Nieznajomy11 | 2020-11-07 05:17:37 UTC | #7

[quote=”pax, post:5, topic:16633”]
CF działa jak proxy.
[/quote]

Zmieniając serwery DNS na serwery od CF powodujesz, że to teraz w CloudFlare się zarządza strefą DNS. Ustawianie jej chwilę przed przenoszeniem u starego operatora nie ma żadnego sensu.

Podczas “podpinania” domeny system automatycznie pobiera co może, tj. między innymi główny rekord A i je automatycznie migruje (poprzez skopiowanie) do strefy zarządzanej przez CloudFlare. Od tego momentu to, co ustawiłeś w takim OVH nie ma żadnego wpływu na rozwiązywanie DNS.


pax | 2020-11-07 13:47:18 UTC | #8

To i tak na to samo wychodzi.


pax | 2020-11-07 13:49:58 UTC | #9

Jeżeli dodasz rekord A u operatora domeny to Cloudflare sobie to zczyta i będzie działać.
Jeżeli tego nie zrobisz to dodasz sobie ten rekord A na Cloudflarze i też będzie działać.
To na to samo wychodzi. Nie ma to żadnego znaczenia gdzie to zrobisz.


Nieznajomy11 | 2020-11-07 14:26:29 UTC | #10

Ma to duże znaczenie dla potencjalnej osoby, która znajdzie ten poradnik i nie będzie używać OVH. Zależność od tego operatora w tym poradniku jest całkowicie sztuczna i niepotrzebna.

Dodatkowo ja rozumiem, że aktualizacja strefy DNS z OVH jest stosunkowo szybka, ale po co to robić i ryzykować konieczność ponownej modyfikacji już po stronie CF, jak można ten krok całkowicie pominąć?

Ustawienie i weryfikacja po stronie CloudFlare daje znacznie większą pewność poprawnego skonfigurowania domeny niż przeklikanie na oślep, bo “cloudflare sobie to zczyta”.