Use Case: Wie konfiguriere ich den Hamster für eine SSL-Verbindung (am Beispiel des POP3-Servers pop3.arcor.de (SSL) und des SMTP-Servers postman.arcor.de (TLS)) Fassung vom: 21.09.2007 Original-URL: http://home.arcor.de/robert.lieske/ssl-usecase.txt Change-History: 23.02.2003: initial upload 21.09.2007: Anpassung Download-Links von Martins Hamsterseite 1. Unterstützt der gewünschte Server überhaupt SSL/TLS? Wenn der Mailprovider SSL/TLS unterstützt, ist es naheliegend, daß er das irgendwo auf seiner Homepage erwähnt. Falls man da nicht fündig wird, kann man sich die Informationen ja auch anderweitig beschaffen: Eine Übersicht mit POP3- und SMTP-Servern sowie den von ihnen unterstützten Möglichkeiten findet man auf Philipps Homepage (wenn Du einen Fehler in den Listen entdeckst oder einen Server kennst, der noch nicht erfaßt ist, schicke ihm bitte eine Mail (philippwendler@web.de)): http://www.philippwendler.de/saslpop3.html http://www.philippwendler.de/saslsmtp.html Aus diesen Listen geht hervor, daß der POP3-Server pop3.arcor.de SSL auf Port 995 unterstützt und daß der SMTP-Server postman.arcor.de TLS auf dem Standardport (für SMTP: #25) unterstützt. Werden sowohl SSL als auch TLS angeboten, so ist TLS vorzuziehen. 2. Was brauche ich an Zusatzprogrammen für SSL/TLS beim Hamster? Auf Martins Hamsterseite (http://www.ximera.de/hamster.html) gibt's die notwendigen Zusatzprogramme, die da wären (man kann die Sourcen natürlich auch nach einem Code-Review selber kompilieren): - die beiden OpenSSL-DLLs libeay32.dll und libssl32.dll http://www.ximera.de/openssl_dlls.zip PGP Signatur: http://www.ximera.de/openssl_dlls.zip.sig - OpenSSL Binary http://www.ximera.de/openssl_exe.zip PGP-Signatur: http://www.ximera.de/openssl_exe.zip.sig - Wrapper für TLS Verbindungen mit OpenSSL http://www.ximera.de/hamster/SSL_Tool.zip (Signatur des Binary inliegend) - Script zur Umwandlung von Zertifikaten http://www.ximera.de/hamster/SSL-Cert-Hash.hsc Die beiden OpenSSL-DLLs kommen ins Hamsterverzeichnis und das Script ins Scriptverzeichnis (anschließend den Hamster neu starten). 3. Wo bekomme ich Zertifikate von fremden Servern her? Zunächst einmal brauchen wir das sog. Serverzertifikat. Dieses erhält direkt man vom Provider, falls er es auf seiner Webseite veröffentlicht hat. Alternativ kann man es sich auch mit den hier beschriebenen Tools einfach während einer Onlineverbindung besorgen. Neben diesem Serverzertifikat selbst interessiert uns noch, welche CA das Serverzertifikat unterschrieben hat, da wir dessen CA-Zertifikat ebenfalls benötigen. Wir wollen den Hamster so einrichten, daß wir später mal sowohl Server- als auch CA-Zertifikat mit den lokalen Kopien vergleichen. Die Kapitel 3.1 und 3.2 sind alternativ zu sehen. In ihnen wird erklärt, wie man das zur Erstellung des Zertifikats notwendige Log erstellt. 3.1 Server verwendet SSL auf separatem Port Starte OpenSSL, während eine Onlineverbindung besteht, mit diesen Parametern: openssl.exe s_client -connect : > OpenSSL.log Für : gib die Adresse des SSL-Servers an, dessen Zertifikat du bekommen willst, also in unserem SSL-Beispiel: openssl.exe s_client -connect pop3.arcor.de:995 > OpenSSL.log 3.2 Server bietet TLS an Bei TLS empfiehlt es sich, das SSL_Tool (http://www.ximera.de/hamster/SSL_Tool.zip) zu verwenden. Bei TLS auf dem Standardport wird die verschlüsselte Verbindung erst noch durch den SMTP-Befehl STARTTLS aktiviert. Davon weiß das Programm OpenSSL nichts und beginnt sofort mit dem sog. TLS/SSL 'Handshake', obwohl der SMTP-Server dazu noch gar nicht bereit ist. Das SSL_Tool kümmert sich um diese Aktivierung (STARTTLS) bevor OpenSSL den TLS/SSL 'Handshake' ausführt. Starte das SSL_Tool und trage die Daten des Servers unter "Remote" und einen freien lokalen Port unter "local" ein, und aktiviere den Wrapper mit einem Klick auf "Start Wrapper". Jetzt verbinde dich mit OpenSSL auf den lokalen Port, den du angegeben hast: openssl.exe s_client -connect localhost: > OpenSSL.log Das Programm handelt daraufhin eine TLS-Verbindung mit dem angegebenen Server aus und tunnelt dann die Verbindung zu OpenSSL. Für unser TLS-Beispiel ergibt sich: Der SMTP-Server postman.arcor.de bietet TLS auf Port 25 an. Der Port 1025 ist auf dem lokalen Rechner (localhost) noch frei. Trage im SSL_Tool folgendes ein: Local: Port: 1025 Remote: Host: postman.arcor.de Port: 25 Protocoll: SMTP Verbinde dich zum lokal laufenden Wrapper: openssl.exe s_client -connect localhost:1025 > OpenSSL.log 3.3 Wie bekomme ich das Zertifikat aus dem aufgezeichneten Log? Öffne anschließend die Datei OpenSSL.log mit einem beliebigen Texteditor und kopiere alles von einschließlich der Zeile -----BEGIN CERTIFICATE----- bis zu einschließlich der Zeile -----END CERTIFICATE----- in eine neue Datei. Gib dieser Datei einen möglichst aussagekräftigen Namen mit der Endung .pem (z.B. cert.pop3.arcor.de.995.pem) und lege sie in dein Zertifikat-Verzeichnis (z.B. C:\Programme\Hamster\Certificates\). 3.4 Welche CA-Zertifikate brauche ich? Du hast nun alle deine Zertifikate im Zertifikat-Verzeichnis. "Alle?" "Nicht alle!" Denn bisher haben wir uns nur die sog. Serverzertifikate besorgt. Hamster benötigt aber unbedingt auch die CA-Zertifikate, mit denen die Serverzertifikate unterschrieben wurden (siehe hierzu Hamster-SSL-FAQ 3.4, Kapitel 8.1.2). Um die unterzeichnende CA für unsere Serverzertifikate zu ermitteln, können wir einerseits die für uns interessante Zeile mit openssl.exe x509 -issuer -noout -in cert.pop3.arcor.de.995.pem ermitteln, andererseits aber auch einfach das später sowieso noch benötigte Script http://www.ximera.de/hamster/SSL-Cert-Hash.hsc ausführen. Die gesuchten Informationen stehen dann in der Zeile "Issuer:" der zum Zertifikat angelegten txt-Datei. Auch wenn die Datei OpenSSL.log bereits die gesuchten Informationen enthält, sollten sie besser aus dem Serverzertifikat selbst statt aus dem Log herausgesucht werden. Für pop3.arcor.de (zu erkennen an der Zeile "Subject:" des Server- Zertifikats) ergibt sich: Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/emailAddress=server-certs@thawte.com Für postman.arcor.de erhalten wir: Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/emailAddress=server-certs@thawte.com Beide Serverzertifikate sind also mit demselben CA-Zertifikat unterschrieben, nämlich einem der Firma Thawte. 3.5 Wie besorge ich mir das CA-Zertifikat? Wegen der größeren Bedeutung des CA-Zertifikates im Hamster (wird auf jeden Fall benötigt, wenn man nicht auf die Überprüfung der Zertifikate gänzlich verzichten will) sollte man sich das CA-Zertifikat direkt von der Homepage der CA (gegebenenfalls Google bemühen) besorgen, da sonst die Gefahr eines Fakes im Zertifikate-Speicher besteht (insbesondere, wenn man "vergißt" die Fakes zu löschen, wenn herauskommt, daß sie nicht funktionieren). Die daraus resultierende Gefahr ist besonders groß, wenn man im Hamster auf das Überprüfen der Serverzertifikate verzichten würde. Im Beispiel Thawte: https://www.thawte.com/html/SUPPORT/index.html Menü-Punkt "get root certificate" bzw. https://www.thawte.com/html/SUPPORT/keygen/serverbasic.txt Vergibt eine CA mehrere verschiedene CA-Zertifikate, so muß man sich anhand der "Issuer:" Zeile des Serverzertifikates die richtige heraussuchen. Das Zertifikat sollte man anhand seines Fingerabdrucks telefonisch oder per E-Mail bei der CA überprüfen. Den Fingerabdruck erhält man mit folgendem Befehl: openssl.exe x509 -fingerprint -noout -in cert.pop3.arcor.de.995.pem Anmerkung: Theoretisch besteht auch die Möglichkeit, CA-Zertifikate aus der bei Internet-Browsern mitgelieferten Zertifikatesammlung zu extrahieren (siehe hierzu Hamster-SSL-FAQ 3.4, Kapitel 5.1). Aus den o.g. Gründen sollte man jedoch darauf verzichten. 4. Wie benutze ich nun das Zertifikat im Hamster? Du hast nun alle deine Zertifikate zusammen und auch im Zertifikat- Verzeichnis abgelegt. Das reicht aber leider noch nicht aus, da die Dateien ihren Hashwert als Dateinamen haben müssen. Um aus den Zertifikaten solche Dateien zu erstellen, kann das Hamsterscript http://www.ximera.de/hamster/SSL-Cert-Hash.hsc verwendet werden. Anmerkung: Es würde noch eine andere Möglichkeit geben, nämlich sämtliche Zertifikate in eine Datei zu speichern. Dieser Weg wird in Hamster-SSL-FAQ 3.4, Punkt 7.1 beschrieben. Das Zertifikatsverzeichnis muß im Hamster eingetragen werden: Unter "Einstellungen | Grundeinstellungen | SSL" bei "Pfad mit Zertifikaten zwecks Überprüfung" den Pfad für die Zertifikate angeben (z.B. C:\Programme\Hamster\Certificates). In den Servereinstellungen "Einstellungen | Mailserver konfigurieren" beim entsprechenden POP3-Mailserver bzw. SMTP-Mailserver unter "Einstellungen" muß die Verwendung von SSL/TLS bekannt gegeben werden. Wenn der Server TLS unterstützt, trage den Server ganz normal ein und stelle die erste Auswahlliste in den "SSL-Einstellungen" auf "SSL immer nutzen" (der Menüpunkt heißt künftig "TLS immer nutzen"). Wenn der Server öftersmal Probleme mit dem TLS hat, und du dann lieber über eine unsichere Verbindung abfragst, als gar nicht, kannst du es auch auf "SSL nutzen, wenn möglich" (der Menüpunkt heißt künftig "TLS nutzen, wenn möglich") stellen. Wenn der Server kein TLS unterstützt, dafür aber SSL über einen separaten Port, trage den Server in den Hamster ein, setzte die Auswahlliste auf "SSL bei sicherem Port nutzen" und ersetzte den Standardport durch den SSL-Port. Das ist normalerweise 995 bei POP3- SSL, 465 bei SMTP-SSL und 563 bei NNTP-SSL (in der Hamster-SSL-FAQ 3.4, Kapitel 1 wird gezeigt, wie man das auch übersichtlicher darstellen kann: 'pop3s', 'smtps' und 'nntps'). Bei der zweiten Checkbox ist folgende Bedeutung zu beachten: "Zertifikate immer überprüfen" bedeutet, daß die Unterschrift (Signatur) der CA überprüft wird. Hierzu muß nur das CA-Zertifikat lokal installiert sein. "Zusätzlich Serverzertifikat lokal überprüfen" bedeutet, daß zusätzlich zur Überprüfung des CA-Zertifikats auch noch das Serverzertifikat selbst mit der lokal installierten Kopie verglichen wird. Da wir sowohl das Server- als auch das CA-Zertifikat in unserem Zertifikatsverzeichnis haben, können wir hier "Zusätzlich Serverzertifikat lokal überprüfen" anwählen. Das hat den Vorteil, daß wir mitbekommen, wenn sich am Serverzertifikat etwas ändert, insbesondere wenn der Provider die CA wechselt. Für unser Beispiel (pop3.arcor.de) tragen wir also ein: Port: 995 (oder 'pop3s' bei Beachtung von Hamster-SSL-FAQ 3.4, Kapitel 1) SSL: Nutzungsart: "SSL bei sicherem Port nutzen" Überprüfungsverfahren: "Zusätzlich Serverzertifikat lokal überprüfen" Überprüfung mittels: kann leer bleiben (werden über den Hashwert als Dateinamen im Zertifikateverzeichnis gefunden) Für unser TLS-Beispiel (postman.arcor.de) ergibt sich: Port: smtp SSL: Nutzungsart: "SSL immer nutzen" Überprüfungsverfahren: "Zusätzlich Serverzertifikat lokal überprüfen" Überprüfung mittels: kann leer bleiben (werden über den Hashwert als Dateinamen im Zertifikateverzeichnis gefunden) 5. Wie geht's nun weiter? Tja, nun sind wir schon am Ende dieses Use-Case angelangt. Wir haben schrittweise und am Beispiel gesehen, wie SSL und TLS mit dem Hamster eingerichtet werden. Über das Online-Menü sollte die Kommunikation jetzt klappen. Probier's aus! Wie Du die Funktionalität auch in Skripten einbauen kannst, wird in der SSL-FAQ (und der Hamster-Hilfe) gezeigt. Wenn Du dann immer noch Fragen hast, zögere nicht, sie in den Hamster-Newsgroups zu stellen.