Prinzipiell ist die Anleitung von Linux-StepByStep sehr brauchbar.
Allerdings musste ich nur mod_ssl nachinstallieren.
Die Punkte 8.2-8.5 ("8.2 Edit or create an OpenSSL template", "8.3. Create a new CA certificate", "8.4. Create a Certificate Signing Request (CSR)", "8.5. Sign the CSR") fielen natürlich weg, weil ich ein CAcert-Zertifikat besitze und den Key schon vorher generiert habe.
Unter Fedora gibt es schon vorgegebene Verzeichnisse für die SSL-Keys (/etc/httpd/conf/ssl.*
). Zunächst habe ich die vorgenerierten Keys und Zertifikate (server.key, server.crt) gelöscht und meine eigenen als ssl.key/cacert.key
bzw. ssl.crt/cacert.crt
gespeichert. Wichtig ist auch, dass die privaten Schlüssel root gehören müssen und auch nur von root gelesen werden dürfen!
Die eigentliche Apache-SSL-Konfiguration geschieht über /etc/httpd/conf.d/ssl.conf
. Da ich aber lieber SSL direkt bei meinen virtual hosts konfiguriere, habe ich alle Anweisungen innerhalb von <VirtualHost> ... </VirtualHost>
auskommentiert.
Statt dessen habe ich der /etc/httpd/conf/sites-enabled/default
folgende Einträge hinzugefügt:
<VirtualHost *:443> SSLEngine on LogLevel warn ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log SSLCertificateFile /etc/httpd/conf/ssl.crt/cacert.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/cacert.key SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SetEnvIf User-Agent ".*MSIE.*" \ SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost>
Anschließend noch Apache neu starten und anschließend sollte die Verbindung gesichert sein.
Ab und an hat man ein Zertifikat (z.B. ein Class-3-Zertifikat von CAcert), das nur von einer Zwischenzertifizierungsstelle (Intermediate CA) zertifiziert wurde. Das Zertifikat dieser intermediate CA ist nicht im Browser integriert, jedoch von einer CA signiert, die im Browser enthalten sein sollte. Auf Grund der asymmetrischen Verschlüsselung kann der Browser jedoch trotzdem das Zertifikat verifizieren, wenn er Zugriff auf das Zwischenzertifikat hat.
Daher muss man das Zertifikat der intermediate CA ebenfalls im Apache eintragen. Die folgende virtual host-Definition muss ergänzt werden um den Eintrag:
SSLCACertificateFile /etc/httpd/conf/ssl.crt/intermediate_ca.crt
Anschließend muss natürlich auch der Apache neu gestartet werden und alles sollte im Lot sein.