Apache 2.x WebServer: Unterschied zwischen den Versionen
Zeile 28: | Zeile 28: | ||
Entscheidet man sich, die Intermediate Zertifikate auch unter <code>/etc/ssl/certs</code> abzulegen, müssen noch die Links in Form von Prüfsummen erzeugt werden, die eine Funktion mit dem Parameter <code>SSLCACertificatePath</code> erlauben. | Entscheidet man sich, die Intermediate Zertifikate auch unter <code>/etc/ssl/certs</code> abzulegen, müssen noch die Links in Form von Prüfsummen erzeugt werden, die eine Funktion mit dem Parameter <code>SSLCACertificatePath</code> erlauben. | ||
Der einfachste Weg wäre der Aufruf des Scripts <code>c_hash</code>. Das Programm gehört zum Lieferumfang von OpenSSL. Sollte es sich nicht im Suchpfad finden lassen, liegt es häufig im Dokumentationsverzeichnis des OpenSSL Programmpaketes (zB <code>/usr/ | Der einfachste Weg wäre der Aufruf des Scripts <code>c_hash</code>. Das Programm gehört zum Lieferumfang von OpenSSL. Sollte es sich nicht im Suchpfad finden lassen, liegt es häufig im Dokumentationsverzeichnis des OpenSSL Programmpaketes (zB <code>/usr/share/doc/openssl/</code>). | ||
= Anpassung der Konfiguration = | = Anpassung der Konfiguration = |
Version vom 21. Juli 2015, 11:02 Uhr
Installation eines SSL Zertifikates für den Apache Webserver 2.x
Vorbereitungen
Für die Installation des Zertifikates benötigen Sie:
- den Private Key
- das Zertifikat
- das bzw die Intermediate Zertifikat/-e
Wenn die Zwischenzertifikate von der CA nicht mit dem eigentlichen Zertifikat ausgeliefert wurden, bietet die jeweilige Zertifizierungsstelle eine Möglichkeit diese zu beziehen.
Bezugsquellen für Intermediate Zertifikate
Ablage von Zertifikaten und Schlüssel
Für die Ablage bietet sich die Verzeichnisstruktur unter /etc/ssl
an.
<source lang=bash> /etc/ssl/private /etc/ssl/certs </source>
Im Verzeichnis private
werden die privaten Schlüssel abgelegt. Im Verzeichnis certs
werden die Zertifikate gespeichert.
Entscheidet man sich, die Intermediate Zertifikate auch unter /etc/ssl/certs
abzulegen, müssen noch die Links in Form von Prüfsummen erzeugt werden, die eine Funktion mit dem Parameter SSLCACertificatePath
erlauben.
Der einfachste Weg wäre der Aufruf des Scripts c_hash
. Das Programm gehört zum Lieferumfang von OpenSSL. Sollte es sich nicht im Suchpfad finden lassen, liegt es häufig im Dokumentationsverzeichnis des OpenSSL Programmpaketes (zB /usr/share/doc/openssl/
).
Anpassung der Konfiguration
Die Önderungen an der Konfiguration werden in der Regel an der VHost Konfiguration vorgenommen. Diese findet sich unter /etc/apache2/sites-available/
oder verlinkt auch hier /etc/apache2/sites-enabled/
.
Um SSL anzuschalten legen Sie eine Kopie des VHosts an, der auf Port 80 horcht.
<source lang=apache> <VirtualHost 10.0.0.1:80>
ServerName server1.example.org ServerAlias www.server1.example.org
DocumentRoot /var/www CustomLog /var/log/apache2/vh1_access_log combined ErrorLog /var/log/apache2/vh1_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 server1.example.org ServerAlias www.server1.example.org
DocumentRoot /var/www CustomLog /var/log/apache2/vh1_ssl_access_log combined ErrorLog /var/log/apache2/vh1_ssl_error_log
ServerAdmin webmaster@localhost
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>
</VirtualHost> </source>
Fügen Sie hier folgende Parameter hinzu:
Alternative 1 (bis Apache 2.4.7)
<source lang=apache> <VirtualHost 10.0.0.1:443>
ServerName server1.example.org ServerAlias www.server1.example.org
DocumentRoot /var/www CustomLog /var/log/apache2/vh1_ssl_access_log combined ErrorLog /var/log/apache2/vh1_ssl_error_log
ServerAdmin webmaster@localhost
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>
# SSL Config SSLEngine on SSLCertificateFile /etc/ssl/certs/meinzertifikat.crt SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key SSLCACertificateFile /etc/ssl/certs/certificate-chain.crt # SSL Config
</VirtualHost> </source>
Alternative 2
Da seit spätestens der Version 2.4.8 die Option SSLCACertificateFile
nicht mehr unterstützt wird, muss man die Konfiguration der Intermediate Zertifikate mit anderen Parametern vornehmen.
Dabei bietet sich die Option an. Die Vorarbeit ist etwas umfangreicher, dafür können eventuelle spätere Zertifikatsinstallationen davon profitieren.
<source lang=apache> <VirtualHost 10.0.0.1:443>
ServerName server1.example.org ServerAlias www.server1.example.org
DocumentRoot /var/www CustomLog /var/log/apache2/vh1_ssl_access_log combined ErrorLog /var/log/apache2/vh1_ssl_error_log
ServerAdmin webmaster@localhost
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> # SSL Config SSLEngine on SSLCertificateFile /etc/ssl/certs/meinzertifikat.crt SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key SSLCACertificatePath /etc/ssl/certs/ # SSL Config
</VirtualHost> </source>
Alternative 3 (seit Apache 2.4)
In der Datei, die für SSLCertificateFile
angegeben wird, kann seit Apache 2.4 auch die Kette der Intermediate Zertifikate hinterlegt werden. Dabei muss eine Sortierung von der Spitze bis zur Wurzel eingehalten werden. (vgl. ModSSL Dokumentation)
Dieses Vorgehen kann alternativ oder parallel zur Direktive SSLCACertificatePath
gewählt werden.
<source lang=apache>
# SSL Config SSLEngine on SSLCertificateFile /etc/ssl/certs/meinzertifikat-mit-kette.crt SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key # SSL Config
</source>
Abschluss
Speichern Sie die Konfiguration und starten Sie den Webserver neu. Das kann auf Debian Linux basierten Systemen wie folgt geschehen:
service apache2 restart
oder
/etc/init.d/apache2 restart
Unter *BSD auch mit service apache22 start
oder /usr/local/etc/rc.d/apache22 start
.
Ausblick
Die Konfiguration läßt sich noch weiter verfeinern. Die Dokumentation von ModSSL für Apache ist umfangreich und gut verständlich.
Es bietet sich vor allem an, die Auswahl der unterstützten Protokolle einzugrenzen.
<source lang=apache> SSLProtocol All -SSLv2 -SSLv3 </source>
Es kann auch eine Auswahl unterstützter Verschlüsselungsmechanismen mitgegeben werden, die verhandelt werden dürfen:
<source lang=apache> SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP </source>
Wie stark die jeweilige Auswahl die zur Verfügung stehenden Mechanismen eingrenzt, kann mit dem Befehl:
<source lang=bash> openssl ciphers -v 'HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP' </source>