🔐 Skapa en egen Root CA och kör HTTPS i Nginx för inf.local och *.inf.local
Den här guiden visar hur du:
- Skapar en egen intern Root CA
- Skapar ett wildcard-certifikat för
*.inf.local - Installerar certifikatet i Nginx
- Får full HTTPS utan browser-varningar
Detta är en korrekt intern PKI-setup för labb, hemnät eller isolerade miljöer.
🏗 Steg 1 – Skapa en intern Root CA (görs en gång)
Skapa en katalog:
mkdir -p ~/ca
cd ~/ca
1.1 Skapa privat nyckel (hemlig!)
openssl genrsa -out inference-root-ca.key 4096
🔒 Skydda denna fil. Den är din “master key”.
1.2 Skapa Root-certifikatet
openssl req -x509 -new -nodes \
-key inference-root-ca.key \
-sha256 -days 3650 \
-out inference-root-ca.crt \
-subj "/CN=Inference Local Root CA"
Du har nu:
inference-root-ca.key(hemlig)inference-root-ca.crt(installeras i klienter)
🌐 Steg 2 – Skapa servercertifikat för inf.local och *.inf.local
Moderna browsers kräver SAN (Subject Alternative Name).
CN räcker inte.
2.1 Skapa konfigfil
cat > inference.cnf <<'EOF'
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn[dn]
CN = inf.local[req_ext]
subjectAltName = @alt_names[alt_names]
DNS.1 = *.inf.local
DNS.2 = inf.local
EOF
Detta gör att certet gäller för:
inf.localfrd.inf.localtrading.inf.local- Alla andra subdomäner
2.2 Skapa servernyckel
openssl genrsa -out inf.key 2048
2.3 Skapa CSR
openssl req -new \
-key inf.key \
-out inf.csr \
-config inference.cnf
2.4 Signera med din Root CA
openssl x509 -req \
-in inf.csr \
-CA inference-root-ca.crt \
-CAkey inference-root-ca.key \
-CAcreateserial \
-out inf.crt \
-days 825 \
-sha256 \
-extfile inference.cnf \
-extensions req_ext
2.5 Verifiera SAN
openssl x509 -in inf.crt -noout -subject -issuer -ext subjectAltName
Du ska se:
DNS:*.inf.local, DNS:inf.local
Issuer: Inference Local Root CA
🖥 Steg 3 – Installera certifikatet i Nginx
3.1 Kopiera certifikaten
sudo mkdir -p /etc/nginx/ssl
sudo cp inf.crt inf.key /etc/nginx/ssl/
sudo chmod 600 /etc/nginx/ssl/inf.key
3.2 Skapa Nginx-site
sudo nano /etc/nginx/sites-available/inf-local
Lägg in:
server {
listen 443 ssl;
server_name *.inf.local inf.local; ssl_certificate /etc/nginx/ssl/inf.crt;
ssl_certificate_key /etc/nginx/ssl/inf.key; root /var/www/inf;
index index.html;
}
3.3 Aktivera siten
sudo ln -s /etc/nginx/sites-available/inf-local \
/etc/nginx/sites-enabled/
Testa:
sudo nginx -t
sudo systemctl reload nginx
🌍 Steg 4 – DNS eller /etc/hosts
Om du inte har intern DNS:
Redigera på klienterna:
sudo nano /etc/hosts
Exempel:
10.9.0.1 frd.inf.local
10.9.0.1 trading.inf.local
Observera:/etc/hosts stöder inte wildcard.
Du måste lägga in varje subdomän.
🔑 Steg 5 – Installera Root CA på klienter (Linux)
sudo cp inference-root-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Chrome / Chromium (Linux)
sudo apt install -y libnss3-toolsmkdir -p $HOME/.pki/nssdb
certutil -d sql:$HOME/.pki/nssdb -N
(Tryck Enter två gånger.)
Importera:
certutil -d sql:$HOME/.pki/nssdb -A \
-t "C,," \
-n "Inference Local Root CA" \
-i inference-root-ca.crt
Starta om Chrome.
Firefox
Inställningar → Privacy & Security → Certificates → View Certificates → Authorities → Import
Välj:
inference-root-ca.crt
Markera:
Trust this CA to identify websites
Klart.
✅ Test
curl -v https://frd.inf.local
Du ska se:
SSL certificate verify ok
Browser:
https://frd.inf.local
✔ Låst hänglås
✔ Ingen varning
✔ SAN matchar hostname