Apache 2.x WebServer: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 27: | Zeile 27: | ||
Für die Ablage bietet sich die Verzeichnisstruktur unter <code>/etc/ssl</code> an. | Für die Ablage bietet sich die Verzeichnisstruktur unter <code>/etc/ssl</code> an. | ||
< | <pre lang=bash> | ||
/etc/ssl/private | /etc/ssl/private | ||
/etc/ssl/certs | /etc/ssl/certs | ||
</ | </pre> | ||
Im Verzeichnis <code>private</code> werden die privaten Schlüssel abgelegt. Im Verzeichnis <code>certs</code> werden die Zertifikate gespeichert. | Im Verzeichnis <code>private</code> werden die privaten Schlüssel abgelegt. Im Verzeichnis <code>certs</code> werden die Zertifikate gespeichert. | ||
| Zeile 58: | Zeile 58: | ||
Um SSL anzuschalten legen Sie eine Kopie des VHosts an, der auf Port 80 horcht. | Um SSL anzuschalten legen Sie eine Kopie des VHosts an, der auf Port 80 horcht. | ||
< | <pre lang=apache> | ||
<VirtualHost 10.0.0.1:80> | <VirtualHost 10.0.0.1:80> | ||
ServerName server1.example.org | ServerName server1.example.org | ||
| Zeile 95: | Zeile 95: | ||
</Directory> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
</ | </pre> | ||
| Zeile 102: | Zeile 102: | ||
== Alternative 1 (bis Apache 2.4.7) == | == Alternative 1 (bis Apache 2.4.7) == | ||
< | <pre lang=apache> | ||
<VirtualHost 10.0.0.1:443> | <VirtualHost 10.0.0.1:443> | ||
ServerName server1.example.org | ServerName server1.example.org | ||
| Zeile 127: | Zeile 127: | ||
# SSL Config | # SSL Config | ||
</VirtualHost> | </VirtualHost> | ||
</ | </pre> | ||
== Alternative 2 == | == Alternative 2 == | ||
| Zeile 135: | Zeile 135: | ||
Dabei bietet sich die Option an. Die Vorarbeit ist etwas umfangreicher, dafür können eventuelle spätere Zertifikatsinstallationen davon profitieren. | Dabei bietet sich die Option an. Die Vorarbeit ist etwas umfangreicher, dafür können eventuelle spätere Zertifikatsinstallationen davon profitieren. | ||
< | <pre lang=apache> | ||
<VirtualHost 10.0.0.1:443> | <VirtualHost 10.0.0.1:443> | ||
ServerName server1.example.org | ServerName server1.example.org | ||
| Zeile 160: | Zeile 160: | ||
# SSL Config | # SSL Config | ||
</VirtualHost> | </VirtualHost> | ||
</ | </pre> | ||
== Alternative 3 (seit Apache 2.4)== | == Alternative 3 (seit Apache 2.4)== | ||
| Zeile 168: | Zeile 168: | ||
Dieses Vorgehen kann alternativ oder parallel zur Direktive <code>SSLCACertificatePath</code> gewählt werden. | Dieses Vorgehen kann alternativ oder parallel zur Direktive <code>SSLCACertificatePath</code> gewählt werden. | ||
< | <pre lang=apache> | ||
# SSL Config | # SSL Config | ||
SSLEngine on | SSLEngine on | ||
| Zeile 174: | Zeile 174: | ||
SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key | SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key | ||
# SSL Config | # SSL Config | ||
</ | </pre> | ||
= Abschluss = | = Abschluss = | ||
| Zeile 194: | Zeile 194: | ||
Es bietet sich vor allem an, die Auswahl der unterstützten Protokolle einzugrenzen. | Es bietet sich vor allem an, die Auswahl der unterstützten Protokolle einzugrenzen. | ||
< | <pre lang=apache> | ||
SSLProtocol All -SSLv2 -SSLv3 | SSLProtocol All -SSLv2 -SSLv3 | ||
</ | </pre> | ||
Es kann auch eine Auswahl unterstützter Verschlüsselungsmechanismen mitgegeben werden, die verhandelt werden dürfen: | Es kann auch eine Auswahl unterstützter Verschlüsselungsmechanismen mitgegeben werden, die verhandelt werden dürfen: | ||
< | <pre lang=apache> | ||
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP | SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP | ||
</ | </pre> | ||
Wie stark die jeweilige Auswahl die zur Verfügung stehenden Mechanismen eingrenzt, kann mit dem Befehl: | Wie stark die jeweilige Auswahl die zur Verfügung stehenden Mechanismen eingrenzt, kann mit dem Befehl: | ||
< | <pre lang=bash> | ||
openssl ciphers -v 'HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP' | openssl ciphers -v 'HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP' | ||
</ | </pre> | ||
= Weiterführende Links = | = Weiterführende Links = | ||
* [https://www.sslplus.de/produkte/ssl-zertifikate.html Zertifikate für Apache Webserver] | * [https://www.sslplus.de/produkte/ssl-zertifikate.html Zertifikate für Apache Webserver] | ||
Version vom 25. März 2026, 12:25 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.
/etc/ssl/private
/etc/ssl/certs
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
Lage der Konfigurationsdateien
Die Önderungen an der Konfiguration werden in der Regel an der VHost Konfiguration vorgenommen.
- Debian basierenden Distributionen:
/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/
- default Apache2 Installationen:
/usr/local/apache2/conf/
Vorbereitende Önderungen
Um SSL anzuschalten legen Sie eine Kopie des VHosts an, der auf Port 80 horcht.
<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>
Fügen Sie hier folgende Parameter hinzu:
Alternative 1 (bis Apache 2.4.7)
<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>
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.
<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>
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.
# SSL Config
SSLEngine on
SSLCertificateFile /etc/ssl/certs/meinzertifikat-mit-kette.crt
SSLCertificateKeyFile /etc/ssl/certs/meinschluessel.key
# SSL Config
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.
SSLProtocol All -SSLv2 -SSLv3
Es kann auch eine Auswahl unterstützter Verschlüsselungsmechanismen mitgegeben werden, die verhandelt werden dürfen:
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP
Wie stark die jeweilige Auswahl die zur Verfügung stehenden Mechanismen eingrenzt, kann mit dem Befehl:
openssl ciphers -v 'HIGH:!MEDIUM:!aNULL:!MD5:!LOW:!RC4:!EXP'