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.

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