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