www.moja-domena.pl.conf
sudo touch /etc/nginx/sites-available/www.moja-domena.pl.conf
/etc/nginx/sites-available/www.moja-domena.pl.conf
wklej poniższą zawartość: server {
listen 1.2.3.4:443 ssl http2;
server_name www.moja-domena.pl;
root root /var/www/html;
index index.html index.htm;
access_log /var/log/nginx/www.moja-domena.pl.log;
error_log /var/log/nginx/www.moja-domena.pl.log error;
ssl_certificate_key /etc/nginx/ssl/www.moja-domena.pl.key;
ssl_certificate /etc/nginx/ssl/www.moja-domena.pl.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security max-age=31536000;
}
listen 1.2.3.4:443
- Adres IP i port pod którym będzie nasłuchiwał serwer nginx w szyfrowanym połączeniu SSL.ssl http2
- Włączenie SSL oraz protokołu HTTP/2 ( RFC 7540), który m.in. skraca czas ładowania stron. Obsługa protokołu HTTP/2 jest dostępna od wersji nginx 1.10.0. HTTP/2 zastępuje protokół SPDY zapoczątkowany przez Google.ssl_certificate_key
- Plik zawierający klucz prywatny.ssl_certificate
- Plik zawierający certyfikat serwera i certyfikat pośredni wystawcy.ssl_protocols TLSv1.2 TLSv1.3
- wyłączenie przestarzałych protokołów SSLv2
, SSLv3
, TLSv1.0
, TLSv1.1
. Włączenie aktualnie bezpiecznych protokołów TLSv1.2
i TLSv1.3
. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
- Ustawienie priorytetu dla silnych szyfrów ( ang. ciphers), jednocześnie wyłączenie słabych i przestarzałych.add_header Strict-Transport-Security
- Nagłówek Strict-Transport-Security (HSTS) powiadamia przeglądarkę aby za każdym razem łączyła się do serwera tylko poprzez protokół SSL (HTTPS). Czas ustalony w max-age podaje się w sekundach (31536000 sekund = 12 miesięcy)/etc/nginx/ssl/www.moja-domena.pl.key
przenieś klucz prywatny. Użyj tego samego klucza, za pomocą którego wygenerowałeś CSR, który następnie przesłałeś w formularzu zamówieniowym Gigaone w celu wystawienia certyfikatu SSL. -----BEGIN PRIVATE KEY-----
IEvwIBADANBgkqhki4/IWM5mvU/3ErC77llAgEAAoIBAQOAwfCnTKLWDYBrOAw
0lezH9BwMkOrrgIgAOnE4d6zFf5MYZjzf3PnQvwy5KDDVxhbee43FetdrQbKaf
FJKdVVwjHJUdgGkWazsMPPLZndhINTlsOl0Vy59+7fLc0XbyfghlA0BK8CgYB0
V3bsdWE9X0V8wBQnp1V+k3FA4f==
---END PRIVATE KEY-----
Do pliku /etc/nginx/ssl/www.moja-domena.pl.pem
przenieś wystawiony certyfikat SSL oraz certyfikat pośredni wystawcy. Certyfikat serwera, jak i certyfikat pośredni możesz pobrać z Panelu Klienta Gigaone. Bardzo ważne jest zachowanie kolejności certyfikatów w pliku – najpierw certyfikat SSL serwera, a następnie certyfikat pośredni.
Struktura pliku z certyfikatami powinna być następująca:
-----BEGIN CERTIFICATE-----
jLjNGrII5i98fcKYlXhxuvts7dcMD5m1b+nwcO4gt
ezN2vxF+gjG0hU804uFXwgIgAOnE6ksTRSxVcvcR+ « certyfikat serwera
O2IWGtrgZqYZN2zPAQpYaXc5NOjJbi2vcbxcbvvbj
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
BgNVsHR8t587fdghddfgEP6DAMDigNqA0hjJodHRw
Oi8vcmFwgIgAOnEkLmdl5cejjb3eefrRydXN0LmNv « certyfikat pośredni wystawcy
BDvp4RHwRE44bT49ymDAdvsfgX3kVWGWfGpN3Q
-----END CERTIFICATE-----
/etc/nginx/sites-available/www.moja-domena.pl.conf
z nowo utworzonym serwerem wirtualnym. Serwer nginx podczas startu przeszukuje katalog /etc/nginx/sites-available
i aktywuje wszystkie znalezione serwery wirtualne. sudo ln -s /etc/nginx/sites-available/www.moja-domena.pl.conf /etc/nginx/sites-enabled/www.moja-domena.pl.conf
sudo service nginx configtest
Jeżeli w wyniku testu pojawi się [Fail]
zobacz poniżej do sekcji Częste problemy.sudo service nginx restart
system MacOS (manager pakietów Homebrew)
sudo nginx -s reload
Jeżeli używasz osobnego pliku konfiguracyjnego do serwowania strony w połączeniu nieszyfrowanym należy umieścić dodatkową linię return 301 https://$host$request_uri;
, która przekieruje wszystkie odwołania do strony nieszyfrowanej na stronę w połączeniu szyfrowanym (HTTPS).
server {
listen 1.2.3.4:80;
server_name www.moja-domena.pl;
return 301 https://$host$request_uri;
}
/var/log/nginx/error.log
: SSL_CTX_use_PrivateKey_file("/etc/nginx/ssl/www.moja-domena.pl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
Możliwe przyczyny i sposoby rozwiązania: ssl_certificate
. Serwer nginx spodziewa się pierwszego certyfikatu jako certyfikatu serwera. Zmień kolejność certyfikatów.