HowTo - SSL certifikat med Apache2

Här kan du dela med dig av dina bästa tips och knep.
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

HowTo - SSL certifikat med Apache2

Inlägg av northface »

Denna handledning beskriver hur man kan skapa och installera ett SSL-certifikat för krypterad trafik med Apache2. Handledningen baseras på OpenSSL.

Exemplet nedan tillämpas på domänen: demo.se

Starta med att installera Apache2 och OpenSSL. Är detta redan gjort - skippa momentet:

Kod: Markera allt

sudo apt-get install apache2 openssl 
Vi väljer att placera våra nycklar och certifikat i foldern /etc/apache2/ssl/ Vi skapar denna:

Kod: Markera allt

sudo mkdir /etc/apache2/ssl/
och förflyttar oss dit:

Kod: Markera allt

cd /etc/apache2/ssl/
Skapa nycklar

Först skapar vi ett publikt/privat nyckelpar som används för att kryptera trafiken - höggradig kryptering (AES-256 256 bit).

Kod: Markera allt

sudo openssl genrsa -out demo.se.key 1024
En 1024 bitars privat nyckel har nu skapats och finns i filen /etc/apache2/ssl/demo.se.key. För enkelhetens har vi valt att inte kryptera denna nyckel. (Det låter sig göras genom att lägga till -des3 i kommandoraden ovan. Man blir även då tvungen att ange en lösenordsfras). Observera att den privata nyckeln måste hållas hemlig och skyddas mot obehörig åtkomst. Den som kommer över den här filen kan låtsas vara din server! Av säkerhetskäl vill vi således att endast root ska ha åtkomst till den privata nyckeln.


Skapa ett certifikat

Ett certifikat är en validerad publik nyckel. Den används av servern för att visa sin identitet för webbläsaren. Certifikatet måste först validereras genom att det signeras - antingen av oss själva eller en betrodd certifikatsutfärdare "Certificate Authority". I denna handledning inskränker vi oss till att skapa ett självsignerat certifikat.

Kod: Markera allt

sudo openssl req -new -key demo.se.key -x509 -days 365 -nodes -out demo.se.crt
Ett antal frågor behöver besvaras vid körningen av kommandot ovan. Den viktigaste är "Common Name". Det motsvarar domännamnet/ipnumret - i vårt fall således demo.se. Det är samma domännamn/ipnummer som vi sedan anger som ServerName i Apache. (Se nedan). Skriv ej heller in specialtecken i svaren.

Certifikatet finns nu i filen /etc/apache2/ssl/demo.se.crt


Installera certifikatet

Från den färska installationen av Apache2 skapar vi en ny virtuell host genom att kopiera default och ge den namnet ssl.

Kod: Markera allt

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Möjliggör åtkomst för Apache:

Kod: Markera allt

sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl 
alternativt:

Kod: Markera allt

sudo a2ensite ssl
Vi ska nu ändra i /etc/apache2/sites-available/ssl och öppnar filen:

Kod: Markera allt

gksudo gedit /etc/apache2/sites-available/ssl
Ändra så att bl.a. följande rader finns i filen (ersätt även demo.se):
...................................................

NameVirtualHost *:443
<VirtualHost *:443>

ServerAdmin webmaster@localhost
Servername demo.se

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/demo.se.crt
SSLCertificateKeyFile /etc/apache2/ssl/demo.se.key

DocumentRoot /var/www/
.
.
.
osv.

</virtualhost>

...................................................

Öppna /etc/apache2/ports.conf

Kod: Markera allt

gksudo gedit /etc/apache2/ports.conf
Kontrollera att Listen 80 och Listen 443 finns inskrivit på sidan.

"Ladda SSL-motorn"

Kod: Markera allt

sudo a2enmod ssl
Ändra även i default

Kod: Markera allt

gksudo gedit /etc/apache2/sites-available/default
...................................................

NameVirtualHost *:80
<VirtualHost *:80>

ServerAdmin webmaster@localhost
Servername demo.se

DocumentRoot /var/www/
.
.
.
osv.

</virtualhost>

...................................................


Kontrollera certifikatet

För att slippa att Apache klagar på att domänen inte är fullvärdig gör vi ett tillägg i hosts:

Kod: Markera allt

gksudo gedit /etc/hosts
Skriv in demo.se (eller ditt motsvarande) på andra raden med ipnummer - efter ipnumret, men före (maskin)namnet som troligen redan står där.

Vi ska också kontrollera en rad på sidan /etc/apache2/sites-available/ssl. Öppna denna:

Kod: Markera allt

gksudo gedit /etc/apache2/sites-available/ssl
Raden:
RedirectMatch ^/$ /apache2-default/ ska se ut så här. Den får inte inledas med "brädgård" #

Starta om datorn.


Provkör

Surfa nu till https://demo.se. Först dyker en varning upp men gå vidare och ..."It works!" Vid läsarens adressfält finns ett hänglås. Klicka på det och se uppgifter om ditt certifikat.


Betrodda certifikatsutfärdare

I vårt fall signerade vi själva certifikatet. Det duger bra speciellt om vi bara är ute efter att kryptera trafiken. Vill vi däremot att besökare till webbplatsen ska få ett kvitto på att de kommit till rätt server kanske det kan det vara idé att köpa ett certifikat. Med vårt självsignerade certifikat får besökaren upp en varning i webbläsaren och får då själv avgöra om att fortsätta. Det är en olägenhet, men kan mildras om besökaren väljer att importera certifikatet i sin webbläsare. När detta är gjort slipper man varningen fortsättningsvis.

Att få ett certifikat signerat av en kommerciell utfärdare kostar någon 100 - 1000 lapp. Det billigaste jag kunnat hitta är ett RapidSSL certifikat på 14 USD/1 år (alt. 11 USD/3år). Fungerar helt ok för en privat webbplats, som inte har alltför hög trafik; http://www.revolutionhosting.net/certif ... pidssl.php

Vill man gå en medelväg mellan självsignerat och kommerciellt kan man besöka http://www.cacert.org och registrera sig för att skapa sina certifikat.
Senast redigerad av 1 northface, redigerad totalt 23 gånger.
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: HowTo - SSL certifikat med Apache2

Inlägg av KiviE »

Ser ut som en lysande howto! Får lov att testa någon gång :)
Användarvisningsbild
maths57
Inlägg: 2911
Blev medlem: 22 jun 2007, 15:10
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: HowTo - SSL certifikat med Apache2

Inlägg av maths57 »

Lysande! Skulle den inte platsa i nya wikin?
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: HowTo - SSL certifikat med Apache2

Inlägg av johanre »

maths57 skrev:Lysande! Skulle den inte platsa i nya wikin?
Skulle vilja påstå att varje gång nortface skriver en how-to så platsar den i wikin.... ;D 8)
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: HowTo - SSL certifikat med Apache2

Inlägg av KiviE »

johanre skrev:
maths57 skrev:Lysande! Skulle den inte platsa i nya wikin?
Skulle vilja påstå att varje gång nortface skriver en how-to så platsar den i wikin.... ;D 8)
Får hålla med! Hög kvalité.

Tro om han tar emot requests på howto han kan skriva ;D Inte för jag behöver den men finns säkert några som undrar hur man tex chrootar apache, php och mysql.
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: HowTo - SSL certifikat med Apache2

Inlägg av northface »

Tack, tack.
Howto chroota Apache2 - ja, varför inte ...?
Användarvisningsbild
maths57
Inlägg: 2911
Blev medlem: 22 jun 2007, 15:10
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: HowTo - SSL certifikat med Apache2

Inlägg av maths57 »

johanre skrev:Skulle vilja påstå att varje gång nortface skriver en how-to så platsar den i wikin.... ;D 8)
Exakt min åsikt½ Ge honom ett jobb i wikin. :) Där behövs det bra och kunniga pedagoger.
Skriv svar

Återgå till "Guider"