In diesem Artikel geht es darum, einen Apache2-Webserver für SSL-Verschlüsselung fit zu machen. Dabei wird zuerst ein eigenes SSL-Zertifikat erstellt, dann der Webserver konfiguriert, die SSL-Seite angelegt und anschlißend der Webserver neu gestartet.

1. SSL-Zertifikat erstellen

Wer sich kein teuer signiertes SSL-Zertifikat kaufen möchte, kann unter Linux sehr leicht selber ein SSL-Zertifikat erstellen. Die hierzu benötigten Openssl-Tools sind eigentlich in jeder Linux-Distribution enthalten.

1
2
3
4
5
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
openssl req -new > server.cert.csr
openssl rsa -in privkey.pem -out server.cert.key
openssl x509 -in server.cert.csr -out server.cert.crt  -req -signkey server.cert.key -days 365

Erklärung:

Erst erstellen wir ein Verzeichnis für unsere Zertifikate, dann wechseln wir in eben dieses. Durch Zeile 3-5 erstellen wir unser eigenes Zertifikat. Bei der Frage nach “Common Name” geben wir den Domainnamen an.

2. SSL im Apache aktivieren

Als erstes müssen wir das SSL-Mod aktivieren. Dies machen wir mitdem tool “a2enmod”

1
a2enmod ssl

Nun bringen wir den Apache-Webserver dazu, auf dem SSL-Port 443 zu horchen und Anfragen zu beantworten. Dazu schreiben wir in dei Datei /etc/apache2/ports.conf

1
Listen 443

3. Virtual Host erstellen

Bis jetzt haben wir ein eigenes Zertifikat, Apache ist für SSL vorbereitet und wir müssen nur noch den Virtual-Host erstellen. Dazu erstellen wir am besten eine eigene Datei myssl.conf im Verzeichnis /etc/apache2/sites-enabled/

Am einfachsten ist es, einen bestehenden Virtual-Host aus der Datei /etc/apache2/sites-enabled/vhcs2.conf zu kopieren und in unserer neuen Datei myssl.conf einzufügen. Wir ändern dann lediglich den Port des VHosts und fügen die drei folgenden Zeilen hinzu:

1
2
3
SSLEngine on
SSLCertificateKeyFile /etc/apache2/myssl/server.cert.key
SSLCertificateFile /etc/apache2/myssl/server.cert.crt

Ein vollständiger Virtual-Host in der Datei myssl.conf könnte dann zB so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<VirtualHost ###IP-ADRESSE###:443>
 SSLEngine on
 SSLCertificateKeyFile /etc/apache2/myssl/server.cert.key
 SSLCertificateFile /etc/apache2/myssl/server.cert.crt
 
 ServerAdmin     root@###DOMAIN###
 DocumentRoot    /var/www/virtual/###DOMAIN###/htdocs
 
 ServerName      ###DOMAIN###
 ServerAlias     ###DOMAIN###
 
 ErrorLog        /var/log/apache2/users/###DOMAIN###-error.log
 TransferLog     /var/log/apache2/users/###DOMAIN###-access.log
 CustomLog       /var/log/apache2/###DOMAIN###-traf.log traff
 CustomLog       /var/log/apache2/###DOMAIN###-combined.log combined
 
 Alias /errors   /var/www/virtual/###DOMAIN###/errors/
 
 ErrorDocument 401 /errors/401/index.php
 ErrorDocument 403 /errors/403/index.php
 ErrorDocument 404 /errors/404/index.php
 ErrorDocument 500 /errors/500/index.php
 
 ScriptAlias /cgi-bin/ /var/www/virtual/###DOMAIN###/cgi-bin/
 <Directory /var/www/virtual/###DOMAIN###/cgi-bin>
 AllowOverride None
 Order allow,deny
 Allow from all
 </Directory>
 
 php_admin_value open_basedir "/var/www/virtual/###DOMAIN###/:/var/www/virtual/###DOMAIN###/phptmp/:/usr/share/php/"
 php_admin_value upload_tmp_dir "/var/www/virtual/###DOMAIN###/phptmp"
 php_admin_value session.save_path "/var/www/virtual/###DOMAIN###/phptmp"
 
 <Directory /var/www/virtual/###DOMAIN###/htdocs>
 Options -Indexes Includes FollowSymLinks MultiViews
 AllowOverride AuthConfig FileInfo
 Order allow,deny
 Allow from all
 </Directory>
</VirtualHost>

4. Apache neustarten

Damit unsere Änderungen greifen, muss Apache nun neu mit “/etc/init.d/apache2 restart” neu gestartet werden

Nun sollte die ausgewählte Domain auch unter https://www.domain.de zu erreichen sein.



  1. It‘s quite in here! Why not leave a response?