SSL/TLS Konfiguration – HTTPS för Din VPS
Konfigurera SSL/TLS korrekt på din VPS med Let's Encrypt. Certifikathantering, Nginx-konfiguration och säkerhetshärdning.
Varför HTTPS är obligatoriskt
HTTPS krypterar all kommunikation mellan webbläsare och server. Utan det skickas lösenord, formulärdata och session-cookies i klartext. Dessutom:
- Google rankar HTTPS-sidor högre
- Moderna webbläsare markerar HTTP-sidor som "Inte säkert"
- HTTP/2 och HTTP/3 kräver TLS
- Användare förväntar sig hänglåsikonen
Installera Let's Encrypt med Certbot
Let's Encrypt erbjuder gratis SSL-certifikat med 90 dagars giltighet och automatisk förnyelse:
# Installera Certbot för Nginx
sudo apt install certbot python3-certbot-nginx -y
# Skapa certifikat
sudo certbot --nginx -d dindomän.se -d www.dindomän.se
# Testa automatisk förnyelse
sudo certbot renew --dry-runCertbot konfigurerar automatiskt Nginx med rätt certifikatfiler och HTTPS-redirect.
Härdad Nginx TLS-konfiguration
Standard-konfigurationen duger men kan förbättras. Redigera din Nginx server-block:
server {
listen 443 ssl http2;
server_name dindomän.se www.dindomän.se;
# Certifikatfiler
ssl_certificate /etc/letsencrypt/live/dindomän.se/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dindomän.se/privkey.pem;
# Protokoll – Inaktivera gamla versioner
ssl_protocols TLSv1.2 TLSv1.3;
# Cipher suites – Moderna och säkra
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS – Tvinga HTTPS i 1 år
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8;
# Session cache
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
}
# Redirect HTTP till HTTPS
server {
listen 80;
server_name dindomän.se www.dindomän.se;
return 301 https://$host$request_uri;
}Testa din konfiguration
Kör SSL Labs-testet mot din domän för att få betyg A+:
# Testa lokalt med openssl
openssl s_client -connect dindomän.se:443 -servername dindomän.se
# Kontrollera certifikatets utgångsdatum
echo | openssl s_client -connect dindomän.se:443 2>/dev/null | openssl x509 -noout -datesCertifikatövervakning
Automatisera bevakning av certifikatets utgångsdatum:
#!/bin/bash
# check-cert.sh
DOMAIN="dindomän.se"
EXPIRY=$(echo | openssl s_client -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
DAYS_LEFT=$(( ($(date -d "$EXPIRY" +%s) - $(date +%s)) / 86400 ))
if [ $DAYS_LEFT -lt 14 ]; then
echo "VARNING: SSL-certifikat för $DOMAIN går ut om $DAYS_LEFT dagar!" | mail -s "SSL-varning" admin@dindomän.se
fiVanliga misstag
- Mixed content – HTTP-resurser på en HTTPS-sida. Kontrollera alla bilder, skript och stylesheets
- Glömd redirect – HTTP-versionen ska alltid redirecta till HTTPS
- Certifikatkedja – Använd fullchain.pem, inte bara cert.pem
- Förnyelse-fel – Kontrollera att cron-jobbet för certbot renew fungerar
Sammanfattning
SSL/TLS-konfiguration tar 10 minuter med Let's Encrypt och Certbot, men skillnaden i säkerhet och förtroende är enorm. Härda konfigurationen, övervaka certifikatets giltighet, och testa regelbundet.