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