Installation eines SSL Zertifikates unter Apache http Server 2.x
Transcrição
Installation eines SSL Zertifikates unter Apache http Server 2.x
Installation eines SSL Zertifikates unter Apache http Server 2.x Inhaltsverzeichnis 1. 2. 3. 4. 5. 6. 7. Allgemeines ................................................................................................... 1 Voraussetzungen........................................................................................... 1 Erstellen des Certificate Requests unter OpenSSL ....................................... 2 Senden des Requests an a.trust ................................................................... 4 Einbinden des SSL-Zertifikates unter der Version 2.x ................................... 4 SSL-Verbindung erzwingen ........................................................................... 5 Automatisch auf https umleiten ..................................................................... 5 1. Allgemeines Dieses Dokument beschreibt den Ablauf zur Einbindung eines A-Trust SSLZertifikates in Apache 2.x Webserver (http://www.apache.org). Man hat dadurch die Möglichkeit, eine Homepage über eine sichere, verschlüsselte Client Server Verbindung aufzurufen und ein Abhören durch Dritte zu unterbinden. 2. Voraussetzungen Um einen Apache 2.x Webserver SSL-fähig zu machen, wird zusätzlich die zum Apache passende mod_ssl Version benötigt (http://www.modssl.org). Diese wird zum Einbinden des SSL-Modules und openssl (http://www.openssl.org) zur Erzeugung eines Schlüsselpaares und des Certificate Requests benötigt. Auf Basis dieses Requests kann a.trust ein a.sign corporate SSL Zertifikat ausstellen (Bestellung und Informationen auf http://www.a-trust.at/Business/Produkte.aspx#Serverzertifikate). Seite 1 von 6 3. Erstellen des Certificate Requests unter OpenSSL Bevor man mit der Erzeugung eines Schlüsselpaares und des Certificate Requests beginnt, muss überprüft werden, ob in der openssl-Konfigurationsdatei (openssl.cnf in unserem Beispiel ist diese unter C:\xampp\apache\bin zu finden) die Schlüssellänge auf mindestens 1024 Bit gesetzt ist (eine Beispiel Konfigurationsdatei ist zu finden auf unserer Homepage http://www.a-trust.at/Anleitungen/Openssl.cnf ) Danach Bitte den folgenden Befehl eingegeben: openssl req -new -out my-server.csr Mit diesem Befehl wird sowohl ein privater Schlüssel (privkey.pem – falls nicht anders in der openssl.cnf angegeben) als auch der öffentliche Request (mycsr = Certificate Signing Request) erzeugt. Es müssen nun noch einige server.csr Angaben zum privaten Schlüssel getätigt werden, wie auf den folgenden 2 Masken sichtbar: Die Angaben für Common Name (CN; muss dem Domain Namen entsprechen, z.B. www.my-domain.com), Organisation (O) und Organisation Unit (OU) sowie alle weiteren Angaben sind optional. Seite 2 von 6 Jetzt noch den folgenden Befehl ausführen: openssl rsa -in privkey.pem -out my-server.key Dieser Befehl entfernt das Passwort vom privaten Schlüssel und erzeugt ein key-File (Diese Dateien werden später bei der Implementierung des SSL-Zertifikates benötigt). Bitte dieses File gut aufbewahren und niemandem weiter geben. Seite 3 von 6 4. Senden des Requests an a.trust Der zuvor erzeugte Certificate Request (my-server.csr) wird nun im OnlineBestellformular eingefügt (einfach die Datei mit Notepad öffnen und den kompletten Inhalt kopieren). Zur Kontrolle: Der Request sollte mit -----BEGIN CERTIFICATE REQUEST----beginnen und mit -----END CERTIFICATE REQUEST----- enden. 5. Einbinden des SSL-Zertifikates unter der Version 2.x Es gibt bei der Version 2.x eine eigene SSL-Konfigurationsdatei (httpd-ssl.conf). Bevor man Änderungen an der Apache Konfiguration vornimmt, bitte unbedingt eine Sicherheitskopie der httpd.conf- und der httpd-ssl.conf-Datei anlegen! Wichtig: Dies sind nur Konfigurationsvorschläge, bitte diese erst nach sorgfältiger Prüfung in die eigene Konfiguration übernehmen. Zuerst die httpd.conf Datei öffnen und prüfen ob das modssl Modul geladen ist, indem mit folgender Zeile gesucht wird: LoadModule ssl_module modules/mod_ssl.so Wenn ein # davor gesetzt ist, bitte entfernen, da sonst das mod_ssl Modul nicht geladen wird. Bei Apache 2.x sind die SSL-Einstellungen in einer eigenen Konfigurations Datei ausgelagert – Daher ist in der httpd.conf anzugeben werden, dass die SSLKonfigurationsdatei httpd-ssl.conf mitgeladen wird - in der httpd.conf nach den Zeilen suchen und die nicht vorhandenen Zeilen einfügen Listen 443 SSLMutex default SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLPassPhraseDialog builtin SSLSessionCache dbm:logs/ssl_scache SSLSessionCacheTimeout 300 <VirtualHost www.my-domain.com:443> SSLEngine On SSLCertificateFile conf/ssl/*_b64.crt SSLCertificateKeyFile conf/ssl/my-server.key </VirtualHost> Abschließend den Apache2-Webserver neu starten und man ist am Ziel! Seite 4 von 6 6. SSL-Verbindung erzwingen Optional gibt es auch die Möglichkeit, für bestimmte Verzeichnisse eine SSLVerbindung zu erzwingen (Aufruf der Seiten in diesem Verzeichnis ist dann nur über https möglich, nicht über http). In unserem Beispiel wurde der Apache Webserver im Verzeichnis C:/Programme installiert und es wurde ein Ordner „test“ im htdocs Startverzeichnis erstellt: <Directory "C:/Programme/Apache/htdocs/test"> SSLRequireSSL </Directory> Soll der komplette Webinhalt ausschließlich über SSL aufgerufen werden, Bitte noch folgende Zeilen einfügen: <Directory /> SSLRequireSSL </Directory> 7. Automatisch auf https umleiten Es gibt aber auch die Möglichkeit, http-Seitenaufrufe automatisch auf https umzuleiten (wird z.B. http://www.my-domain.com an gesurft, wird automatisch auf https://www.mydomain.com umgeleitet): <VirtualHost www.my-domain.com:80> Redirect permanent / https://www.my-domain.com/ </VirtualHost> Oder aber nur ein bestimmtes Verzeichnis automatisch auf https umleiten (in unserem Beispiel wieder mit dem Verzeichnis „Test“): <VirtualHost www.my-domain.com:80> Redirect permanent /test https://www.my-domain.com/test </VirtualHost> Alle anderen Verzeichnisse können bei dieser Einstellung auch über eine gewöhnliche http-Verbindung aufgerufen werden. Seite 5 von 6 8. Warum ist das so Da hier Sicherheit das oberste Gebot ist, ist leider der Komfort etwas geringer … Ziel ist es, dass niemand außer des Antragstellers den privaten Schlüssel kennen darf – auch nicht A-Trust! Deshalb hat der Antragsteller ein Schlüsselpaar (öffentlicher und privater Schlüssel) bei sich generiert, und den öffentlichen Teil an A-Trust gesendet, A-Trust hat den Antrag geprüft und den öffentlichen Teil signiert –> Zertifikat, welches an den Antragsteller zurückgesendet wurde. Der Antragsteller ist nun der einzige, der sowohl den privaten Schlüssel als auch das Zertifikat hat. Und damit auch der einzige der öffentlichen und privaten Teil zusammenführen kann. 9. Nützliche befehle Zertifikat konvertieren von .cer zu .pem openssl x509 –inform der –in certificate.cer –out certificate.pem Zertifikat konvertieren von .pem zu .cer openssl x509 -outform der -in certificate.pem -out certificate.cer Zertifikat konvertieren .pem + .key .p12 openssl pkcs12 -export -in certificate.pem -inkey my-server.key -out test.p12 Zertifikat konvertieren .p12 .pam openssl pkcs12 -in KEYSTORE.p12 -out KEYSTORE.pem –nodes Zertifikat konvertieren .p12 nur Zertifikat openssl pkcs12 –nokeys –in test.p12 –out test.cer Zertifikat konvertieren .p12 nur Privat Key openssl pkcs12 –nocerts –in test.p12 –out test.pem Für weitere hilfreiche Befehle: http://shib.kuleuven.be/docs/ssl_commands.shtml Seite 6 von 6