ssl certificaten en https uitgelegd
Ssl Certificaten En Https Uitgelegd
SSL/TLS-certificaten en HTTPS: installatie en verificatie
Dit artikel legt uit hoe SSL/TLS-certificaten en HTTPS werken, en hoe je ze installeert. Voor ontwikkelaars en systeembeheerders die een website beveiligen op Pixzo of een eigen server.
Vereisten
- Toegang tot je webserver (Apache 2.4.x, Nginx 1.24.x, of IIS 10+) - Domeinnaam met DNS-configuratie - OpenSSL 3.0+ geïnstalleerd op de server - Root- of sudo-toegang voor configuratiewijzigingen
Stappen
1. Genereer een sleutelpaar en CSR
Open een terminal op je server en voer uit:
```bash openssl req -new -newkey rsa:2048 -nodes -keyout voorbeeld.nl.key -out voorbeeld.nl.csr ```
Vul de gevraagde gegevens in. De `Common Name` moet exact overeenkomen met je domeinnaam.
2. Valideer domeineigendom
Kies een van deze methoden: - DNS-record: voeg een TXT-record toe met de waarde die je CA geeft - HTTP-validatie: plaats een validatiebestand op `/.well-known/acme-challenge/` - E-mail: reageer op de verificatiemail naar postmaster@ of admin@
3. Installeer het certificaat
Voor Nginx (`/etc/nginx/sites-available/voorbeeld.nl`):
```nginx server { listen 443 ssl; server_name voorbeeld.nl; ssl_certificate /etc/ssl/certs/voorbeeld.nl.crt; ssl_certificate_key /etc/ssl/private/voorbeeld.nl.key; ssl_trusted_certificate /etc/ssl/certs/intermediate.crt; } ```
Voor Apache (`/etc/apache2/sites-available/voorbeeld.nl-ssl.conf`):
```apache
4. Controleer de certificaatketen
Test of de volledige chain (servercertificaat + intermediates) correct is:
```bash openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt -untrusted /etc/ssl/certs/intermediate.crt /etc/ssl/certs/voorbeeld.nl.crt ```
5. Schakel HSTS in (optioneel)
Voeg in de serverconfiguratie toe:
```nginx add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; ```
HSTS vereist een werkende HTTPS-verbinding. Schakel het pas in nadat je stap 7 hebt geverifieerd.
6. Herstart de webserver
```bash Nginx sudo systemctl restart nginx
Apache sudo systemctl restart apache2 ```
7. Test de configuratie
Gebruik de SSL Labs test voor een uitgebreide controle:
```bash curl https://www.ssllabs.com/ssltest/analyze.html?d=voorbeeld.nl ```
Of lokaal:
```bash openssl s_client -connect voorbeeld.nl:443 -servername voorbeeld.nl ```
Verificatie
Open `https://voorbeeld.nl` in een browser. Het slotje moet groen zijn. Klik op het slotje en controleer:
- Certificaat is geldig (niet verlopen) - Uitgegeven door een vertrouwde CA - Domeinnaam komt overeen - Verbinding gebruikt TLS 1.2 of hoger
Commando voor directe verificatie op de server:
```bash echo | openssl s_client -connect voorbeeld.nl:443 -servername voorbeeld.nl 2>/dev/null | openssl x509 -noout -dates -subject -issuer ```
Veelgestelde problemen
1. Foutmelding `ssl_certificate_key` ontbreekt
Oorzaak: de private key is niet of verkeerd opgegeven in de configuratie.
Oplossing: controleer het pad naar het `.key`-bestand en herstart de webserver.
2. Browser meldt `NET::ERR_CERT_COMMON_NAME_INVALID`
Oorzaak: de domeinnaam in het certificaat komt niet overeen met de URL.
Oplossing: genereer een nieuw CSR met de juiste `Common Name`. Gebruik voor meerdere subdomeinen een wildcard-certificaat (`*.voorbeeld.nl`).
3. Verbinding valt terug naar HTTP
Oorzaak: er is geen HTTPS-redirect of HSTS is niet ingesteld.
Oplossing: voeg in je serverconfiguratie een redirect toe voor poort 80:
```nginx server { listen 80; server_name voorbeeld.nl; return 301 https://$server_name$request_uri; } ```
Hoe los je op dat je certificaatketen incompleet is? De meesten vergeten de intermediate chain. Voeg `ssl_trusted_certificate` (Nginx) of `SSLCertificateChainFile` (Apache) toe. Zonder chain weigert sommige browsers verbinding.