Installation eines SSL-Zertifikates für Apache2 / mod_SSL (OpenSSL)

Installation eines SSL-Zertifikates für den Apache Webserver 2.x

In diesem Tutorial behandeln wir die Installation eines SSL-Zertifikates für den Webserver Apache 2 mit mod_ssl (OpenSSL)

Voraussetzungen

Sie benötigen folgende Dateien, um Ihr Zertifikat zu installieren:

1) Den Privaten Schlüssel (Private Key)
2) Ihr Serverzertifikat
3) Zwischenzertikate der Vergabestelle

Zwischenzertifikate

Um eine vollständige Zertifikatskette auszugeben, die vom Client als vertrauenswürdig erkannt wird, müssen auch die Zwischenzertifikate der Vergabestelle (z.B. Comodo, GeoTrust, thawte oder Symantec) installiert werden. Sollte mehr als ein Zwischenzertifikat benötigt werden, müssen diese in eine Datei zusammengefasst werden. Eine zusammengefasste Datei für Ihr Produkt können Sie hier herunterladen:
SSL Zwischenzertifikate

Speicherort für Dateien

Für die Ablage der Dateien verwenden wir in dieser Anleitung den Pfad/etc/ssl:
/etc/ssl/certs -> Ablage für Ihr Serverzertifikat und die Zwischenzertifikate
/etc/ssl/private -> Ablage für den privaten Schlüssel

Konfiguration des virtuellen Apache Hosts (vhost)

Um SSL zu aktivieren, muss die vhost Konfiguration von Apache angepasst werden.
Je nach verwendeter Distribution finden Sie die Konfigurationsdatei in einem der folgenden Verzeichnisse:

Debian, Ubuntu: /etc/apache2/sites-available/ oder verlinkt /etc/apache2/sites-enabled/
Redhat, Fedora und Mandriva: /etc/httpd
FreeBSD: /usr/local/etc/apache22/
NetBSD: /usr/pkg/etc/httpd/
Selbst-kompilierter Apache2: /usr/local/apache2/conf/

Vorbereitung

Um einen neuen vhost mit SSL-Unterstützung anzulegen, kopieren Sie Ihren http vhost, der auf Port 80 lauscht und ändern bei der Kopie den Port auf 443:

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
<VirtualHost 10.0.0.1:80>
   ServerName www.example.tld
   ServerAlias www.www.example.tld
 
   DocumentRoot /var/www
   CustomLog /var/log/apache2/www_access_log combined
   ErrorLog /var/log/apache2/www_error_log 
 
   ServerAdmin webmaster@localhost
 
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>
</VirtualHost>
 
<VirtualHost 10.0.0.1:443>
   ServerName www.example.tld
   ServerAlias www.www.example.tld
 
   DocumentRoot /var/www
   CustomLog /var/log/apache2/www_ssl_access_log combined
   ErrorLog /var/log/apache2/www_ssl_error_log 
 
   ServerAdmin webmaster@example.tld
 
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>
</VirtualHost>
<VirtualHost 10.0.0.1:80>
   ServerName www.example.tld
   ServerAlias www.www.example.tld
 
   DocumentRoot /var/www
   CustomLog /var/log/apache2/www_access_log combined
   ErrorLog /var/log/apache2/www_error_log 
 
   ServerAdmin webmaster@localhost
 
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>
</VirtualHost>
 
<VirtualHost 10.0.0.1:443>
   ServerName www.example.tld
   ServerAlias www.www.example.tld
 
   DocumentRoot /var/www
   CustomLog /var/log/apache2/www_ssl_access_log combined
   ErrorLog /var/log/apache2/www_ssl_error_log 
 
   ServerAdmin webmaster@example.tld
 
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>
</VirtualHost>

Anpassung des vhosts

Fügen Sie nun folgende Direktiven ein:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<VirtualHost 10.0.0.1:443>
   ServerName www.example.tld
   ServerAlias www.example.tld
 
   DocumentRoot /var/www
   CustomLog /var/log/apache2/vh1_ssl_access_log combined
   ErrorLog /var/log/apache2/vh1_ssl_error_log 
 
   ServerAdmin webmaster@example.tld
 
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>
 
   # SSL Config
   SSLEngine on
   SSLCertificateFile /etc/ssl/certs/serverzertifikat.crt
   SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
   SSLCACertificateFile /etc/ssl/certs/intermediate-bundle.crt
   # SSL Config
</VirtualHost>
<VirtualHost 10.0.0.1:443>
   ServerName www.example.tld
   ServerAlias www.example.tld
 
   DocumentRoot /var/www
   CustomLog /var/log/apache2/vh1_ssl_access_log combined
   ErrorLog /var/log/apache2/vh1_ssl_error_log 
 
   ServerAdmin webmaster@example.tld
 
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>
 
   # SSL Config
   SSLEngine on
   SSLCertificateFile /etc/ssl/certs/serverzertifikat.crt
   SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
   SSLCACertificateFile /etc/ssl/certs/intermediate-bundle.crt
   # SSL Config
</VirtualHost>

Verwendete Direktiven

SSLEngine on Aktiviert SSL
SSLCertificateFile /etc/ssl/certs/serverzertifikat.crt Pfad zum Serverzertifikat
SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key Pfad zum Privaten Schlüssel
SSLCACertificateFile /etc/ssl/certs/intermediate-bundle.crt Pfad zu den Zwischenzertifikaten

Neustart Apache

Nach der Änderung muss Apache neu gestartet werden, z.B.:
service apache2 restart
oder
/etc/init.d/apache2 restart