Selbstausgesteltes Zertifikat für Apache

Wer entweder temporär wie ich für einen Serverumzug ein Zertifikat für die SSL Verschlüsselung des Apache benötigt oder keine Domäne besitzt um Let’s Encrypt nutzen zu können, der kann jederzeit mit nachfolgenden Befehlen ein sicheres Zertifikat ausstellen, was 365 Tage gültig ist.

openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr -sha256
openssl req -noout -text -in server.csr #Check Certificat
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Alternativ kann man natürlich die Gültigkeitzeit erhöhen. Hierbei beachten, dass wenn das Zertifikat entwendet wurde, dass die Gültigkeit dann etwas hinderlich ist 😉

Um nun Apache nun dazu zu verdonnern https zu machen, muss erst mal das entsprechende Modul wie folgt aktiviert werden:

a2enmod ssl rewrite

Um gleich auch noch die Vorbereitung zu treffen, dass Apache immer zwingend auf die verschlüsselte Verbindung wechselt haben wir in dem Befehl auch direkt das Modul rewrite aktiviert.
Nun muss noch Apache beigebracht werden was zutun ist. Hierzu eine Apache-Beispielkonfiguration für eine Website (/etc/apache2/sites-available/<datei>.conf):

<VirtualHost *:80>
	ServerName domainname.de
	DocumentRoot "<pathToHtmlRoot>"
	<IfModule mod_rewrite.c>
		RewriteEngine On
		RewriteCond %{HTTPS} off
		RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
	</IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
	<VirtualHost *:443>
		ServerName domainname.de
		DocumentRoot "<pathToHtmlRoot>"
		SSLEngine on
		SSLCertificateFile <Path>/server.crt
		SSLCertificateChainFile <Path>/server.csr
		SSLCertificateKeyFile <Path>/server.key
	</VirtualHost>
</IfModule>

Sollte die Domäne fehlen, kann selbstverständlich einfach der Servername weggelassen werden.
Sollte oben eine neue Konfigdatei angelegt worden sein (Empfehlenswert pro Seite eine eigene Datei anzulegen), dann muss diese erst noch im Apache aktiviert werden:

a2ensite <Datei>.conf

Hierbei einfach mit Tab arbeiten. Der Pfad wird nicht mit angegeben!

Nun muss Apache einmal durchgestartet werden:

service apache2 restart

Schreibe einen Kommentar