Konfiguration af Apache med SSL
Følgende instruktioner forudsætter, at du vil køre begge en sikker server (på port 443
) og en almindelig server (på port 80
). Først skal du konfigurere serveren til at lytte i begge porte. Enten rediger /etc/apache2/ports.conf
(i Debian; dette er inkluderet i apache2.conf
) eller rediger /etc/apache2/apache2.conf
direkte for at inkludere linjerne:
Lyt 80 Lyt 443
Dernæst rediger /etc/apache2/sites-enabled/yoursite
at bruge SSL-indstillingerne. Adskillelse af de regelmæssige og sikre serverindstillinger ud ved hjælp af VirtualHosts er den nemmeste mulighed med hensyn til vedligeholdelighed. Enhver konfiguration uden for VirtualHosts-sektionerne (f.eks. Indstilling af ServerAdmin) gælder både (og enhver anden) VirtualHosts.
Versioner af Apache 2.4.8 og nyere forventer, at dit servercertifikat sammenkædes med mellemliggende certifikater i en fil. Hvis du vil hente en kædet fil fra SSL.com, skal du vælge Nginx
download-link på din portalkonto:
Alternativt kan du sammenkoble dit eksisterende certifikat og mellemfiler med en kommando som følgende:
$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
Føj følgende afsnit til din konfigurationsfil:
# ==================================================== # SSL /TLS indstillinger # =================================================== = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine on SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
Et par bemærkninger til denne konfiguration:
SSLEngine
skal være aktiveret, så serveren bruger SSL.DocumentRoot
sætter rodkataloget til denne virtuelle vært. Dette betyder, at du kan adskille sikkert indhold helt fra almindeligt indhold.SSLCertificateFile
skal indstilles til det sted, hvor du placerer filen med dit servercertifikat og mellemkæde.SSLCertificateKeyFile
skal indstilles til det sted, hvor du placerer din private nøglefil.
Føj følgende afsnit til din konfigurationsfil:
# ==================================================== # SSL /TLS indstillinger # =================================================== = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine on SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ssl- private / ca-bund klient.crt
Et par bemærkninger til denne konfiguration:
SSLEngine
skal være aktiveret, så serveren bruger SSL.DocumentRoot
sætter rodkataloget til denne virtuelle vært. Dette betyder, at du kan adskille sikkert indhold helt fra almindeligt indhold.SSLCertificateFile, SSLCertificateChainFile,
ogSSLCertificateKeyFile
skal indstilles til de steder, hvor du placerer henholdsvis dit certifikat, mellemliggende og private nøglefiler.
For at køre den almindelige server på port 80 skal du tilføje følgende afsnit til konfigurationsfilen:
NameVirtualHost *: 80 DocumentRoot "/ var / www / yoursite" # Værtsspecifik katalogopsætning, indstillinger osv. # De fleste af disse indstillinger sandsynligvis indstilles uden for VirtualHosts # -sektionerne.
Når du har gemt den redigerede konfigurationsfil, skal du genstarte webserveren. Hvis du brugte en adgangssætning, når du genererede dit certifikat, skal du indtaste det, når du bliver udfordret.
Test
Opret en grundlæggende index.html side, hvor rodmappen til din webserver er placeret, hvis du ikke allerede har indhold der.
Peg derefter din webbrowser på https://www.yoursite.com
. Du skal se en SSL-forbindelse åbnet og siden leveret. Hvis du bruger et selvsigneret certifikat, popper din browser en advarsel, der advarer dig om, at serverens identitet ikke kan verificeres. Du kan vælge at få vist og acceptere certifikatet. Hvis du bruger et eksternt certifikat, skal det hele ske uden indblanding.
Sørg også for, at du ikke kan få adgang til det beskyttede indhold ved hjælp af http: //. Hvis du prøver, skal du få en fejlmeddelelse.
Fejlfinding
Hvis det ikke fungerer som forventet, skal du først kontrollere, om din server faktisk kører ved hjælp af ps -a | grep apache
. Hvis det ikke returnerer noget, skal du prøve at genstarte det og kontrollere, om der er fejlmeddelelser på terminalen.
Kontroller også, at tilladelserne på dine nøgle- og certifikatfiler er indstillet korrekt (se ovenfor) samt tilladelserne på din test-HTML-fil og dens overordnede bibliotek.
Tjek derefter logfilerne. Du skal kontrollere både de vigtigste serverlogfiler og også de SSL-logfiler, du opretter i din konfigurationsfil ovenfor. Hvis du ikke får noget nyttigt, så prøv at ændre LogLevel-værdien i Apache2-konfigurationsfilen til "fejlretning", genstart Apache2 og test igen. Dette skulle give flere logfildata.
Hvis du også kører en almindelig webserver på port 80, skal du prøve at hente en testside via http: // snarere end https: // for at hjælpe med at identificere, om problemet er med webserveren eller med SSL-forbindelsen. Bemærk, at i opsætningen ovenfor er webserverens rodmappe forskellig for http: // og https: //, så du vil ikke (eller burde ikke!) Være i stand til at få adgang til det samme indhold. Hvis din testside i http: // rodmappen fungerer fint, og din testside i https: // rodmappen ikke gør det, kan det hjælpe dig med at lokalisere problemet.
Hvis problemet er SSL-forbindelsen, er et nyttigt værktøj s_client
, som er et diagnostisk værktøj til fejlfinding TLS/ SSL-forbindelser. Den grundlæggende anvendelse er: /usr/bin/openssl s_client -connect localhost:443
. Der er også mange andre muligheder, som du kan kontrollere dokumentationen for. Hvis du får fejlmeddelelser, skal dette hjælpe dig med at finde problemet.