Last Updated on 28/10/2024 by administrator
Nastavení Nginx SSL .pfx (Nginx setup SSL pfx files)
Nastavení Nginx SSL .pfx (Nginx setup SSL pfx files)
Motivace:
Návod popisuje, jak zprovoznit jednoduše zprovoznit SSL pro webový server pomocí souboru .pfx.
Soubory PKCS#12 jsou často označovány jako „PFX“ soubory (Personal Information Exchange). Tyto soubory mohou obsahovat několik kryptografických prvků, včetně:
- Privátní klíče: Používají se k podepisování nebo dešifrování dat. Jsou chráněny heslem nebo jiným mechanismem zabezpečení.
- Certifikáty: Obsahují informace o vlastnícím subjektu a jeho veřejném klíči. Certifikáty jsou často vydávány certifikačními autoritami a slouží k ověření identity.
- Řetězec certifikátů: PKCS#12 může obsahovat celý řetězec certifikátů, od konkrétního certifikátu až po certifikační autoritu.
OS:
Implementace byla prováděna na Ubuntu 22.04 LTS.
Prerekvizita:
Je předpokládáno, že webové stránky již na Nginx běží.
Implementace[1]:
Extrahování souborů ze souboru PKCS#12:
Přejít do /etc/ssl složky:
cd etc/ssl
Extrahovat klientský certifikát ze souboru PKCS#12 (.pfx) a uložit jej ve formátu PEM (.crt):
openssl pkcs12 -in ./VAS_PFX_SOUBOR.pfx -clcerts -nokeys -out domain.crt
Legenda:
- pkcs12 – je standard definující formát datového souboru .pfx
- –in ./VAS_PFX_SOUBOR.pfx – je vstupní PKCS#12 soubor (s příponou .pfx)
- -clcerts– určuje, že bude zahrnutý na výstupu pouze klientský certifikát
- -nokeys – určuje, že není potřeba do výstupu zahrnout privátní klíče
- -out domain.crt – je výstupní soubor ve formátu PEM (s příponou .crt)
Soubor domain.crt obsahuje, veřejný klíč, informace o subjektu (vlastníkovi certifikátu), informace o vydavateli certifikátu (certifikační autoritu), období platnosti certifikátu, digitální podpis a algoritmus pro generování veřejného klíče.
Extrahovat privátní klíč ze souboru PKCS#12 (.pfx) a uložit jej s příponou (.rsa):
openssl pkcs12 -in ./YOUR-PFX-FILE.pfx -nocerts -nodes -out domain.rsa
Legenda:
- -nocerts – s tímto parametrem se bude nebudou se zahrnovat certifikáty (x509) do výstupního souboru (pouze privátní klíč)
- -nodes – určuje, že privátní klíče nebudou šifrovány
- -out domain.crt – je výstupní soubor s příponou .rsa
Soubor domain.rsa obsahuje, privátní klíč včetně modulu (modulus).
Konfigurace NGINX:
Zde je příklad pro konfiguraci v defaultním souboru Nginx. Bude předpokládáno, že doménové jméno pro webový server je domain.com.
Otevřít soubor default ve složce/etc/nginx/sites-enabled/:
vi /etc/nginx/sites-enabled/default
vložit následující řádky (toto je nejjednodušší konfigurace NGINX):
server { listen 443 ssl; server_name domain.com domain.com; ssl_certificate /etc/ssl/domain.crt; ssl_certificate_key /etc/ssl/domain.rsa; root /var/www/html; index index.html; include /etc/nginx/mime.types; }
Pro kontrolování Nginx syntaxe použít:
sudo nginx -t
Provést restart služby Nginx:
sudo systemctl reload nginx
Zkontrolovaní expirace certifikátu:
openssl x509 -enddate -noout -in /etc/ssl/domain.crt
TIP – Jak přesměrovat HTTP na HTTPS [2]:
Přesměrování je možné provést přes příkaz níže v souboru /etc/nginx/sites-enabled/default:
return 301 https://domain.com$request_uri;
Otevřít soubor default ve složce /etc/nginx/sites-enabled/:
vi /etc/nginx/sites-enabled/default
a takto výsledná konfigurace v souboru /etc/nginx/sites-enabled/ vypadá takto:
server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://domain.com$request_uri;
...
}
Zdroj:
[1] https://blog.knoldus.com/easiest-way-to-setup-ssl-on-nginx-using-pfx-files/
[2] https://blog.knoldus.com/nginx-redirecting-traffic-between-www-and-non-www-domain/