Use Case: Wie konfiguriere ich den Hamster fr 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. Untersttzt der gewnschte Server berhaupt SSL/TLS?

Wenn der Mailprovider SSL/TLS untersttzt, ist es naheliegend, da er
das irgendwo auf seiner Homepage erwhnt. Falls man da nicht fndig
wird, kann man sich die Informationen ja auch anderweitig beschaffen:
Eine bersicht mit POP3- und SMTP-Servern sowie den von ihnen
untersttzten Mglichkeiten findet man auf Philipps Homepage (wenn Du
einen Fehler in den Listen entdeckst oder einen Server kennst, der noch
nicht erfat 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 untersttzt und da der SMTP-Server postman.arcor.de TLS
auf dem Standardport (fr SMTP: #25) untersttzt.
Werden sowohl SSL als auch TLS angeboten, so ist TLS vorzuziehen.


2. Was brauche ich an Zusatzprogrammen fr SSL/TLS beim Hamster?

Auf Martins Hamsterseite (http://www.ximera.de/hamster.html)
gibt's die notwendigen Zusatzprogramme, die da wren (man kann die
Sourcen natrlich 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 fr 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 (anschlieend den Hamster neu starten).


3. Wo bekomme ich Zertifikate von fremden Servern her?

Zunchst einmal brauchen wir das sog. Serverzertifikat. Dieses erhlt
direkt man vom Provider, falls er es auf seiner Webseite verffentlicht
hat. Alternativ kann man es sich auch mit den hier beschriebenen Tools
einfach whrend einer Onlineverbindung besorgen.
Neben diesem Serverzertifikat selbst interessiert uns noch, welche CA
das Serverzertifikat unterschrieben hat, da wir dessen CA-Zertifikat
ebenfalls bentigen. Wir wollen den Hamster so einrichten, da wir
spter 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
erklrt, wie man das zur Erstellung des Zertifikats notwendige Log
erstellt.


3.1 Server verwendet SSL auf separatem Port

Starte OpenSSL, whrend eine Onlineverbindung besteht, mit diesen
Parametern:

   openssl.exe s_client -connect <Server>:<Port> > OpenSSL.log

Fr <Server>:<Port> 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 verschlsselte 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
kmmert sich um diese Aktivierung (STARTTLS) bevor OpenSSL den TLS/SSL
'Handshake' ausfhrt.

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:<Port> > OpenSSL.log

Das Programm handelt daraufhin eine TLS-Verbindung mit dem
angegebenen Server aus und tunnelt dann die Verbindung zu OpenSSL.

Fr 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 anschlieend die Datei OpenSSL.log mit einem beliebigen
Texteditor und kopiere alles von einschlielich der Zeile

-----BEGIN CERTIFICATE-----

bis zu einschlielich der Zeile

-----END CERTIFICATE-----

in eine neue Datei. Gib dieser Datei einen mglichst aussagekrftigen
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 bentigt 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 fr unsere Serverzertifikate zu ermitteln,
knnen wir einerseits die fr uns interessante Zeile mit

   openssl.exe x509 -issuer -noout -in cert.pop3.arcor.de.995.pem

ermitteln, andererseits aber auch einfach das spter sowieso noch
bentigte Script http://www.ximera.de/hamster/SSL-Cert-Hash.hsc
ausfhren. 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 enthlt, sollten sie
besser aus dem Serverzertifikat selbst statt aus dem Log herausgesucht
werden.

Fr 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
Fr 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, nmlich einem der Firma Thawte.


3.5 Wie besorge ich mir das CA-Zertifikat?

Wegen der greren Bedeutung des CA-Zertifikates im Hamster (wird auf
jeden Fall bentigt, wenn man nicht auf die berprfung der Zertifikate
gnzlich verzichten will) sollte man sich das CA-Zertifikat direkt von
der Homepage der CA (gegebenenfalls Google bemhen) besorgen, da sonst
die Gefahr eines Fakes im Zertifikate-Speicher besteht (insbesondere,
wenn man "vergit" die Fakes zu lschen, wenn herauskommt, da sie
nicht funktionieren). Die daraus resultierende Gefahr ist besonders
gro, wenn man im Hamster auf das berprfen der Serverzertifikate
verzichten wrde.

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 berprfen. Den Fingerabdruck
erhlt man mit folgendem Befehl:

   openssl.exe x509 -fingerprint -noout -in cert.pop3.arcor.de.995.pem

Anmerkung: Theoretisch besteht auch die Mglichkeit, 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. Grnden 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 mssen. Um aus den
Zertifikaten solche Dateien zu erstellen, kann das Hamsterscript
http://www.ximera.de/hamster/SSL-Cert-Hash.hsc verwendet werden.

Anmerkung: Es wrde noch eine andere Mglichkeit geben, nmlich
smtliche 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 berprfung" den Pfad fr 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 untersttzt, trage den Server ganz normal ein und
stelle die erste Auswahlliste in den "SSL-Einstellungen" auf "SSL immer
nutzen" (der Menpunkt heit knftig "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 mglich" (der Menpunkt heit knftig "TLS nutzen,
wenn mglich") stellen.

Wenn der Server kein TLS untersttzt, dafr 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 berprfen" bedeutet, da die Unterschrift
(Signatur) der CA berprft wird. Hierzu mu nur das CA-Zertifikat
lokal installiert sein.
"Zustzlich Serverzertifikat lokal berprfen" bedeutet, da zustzlich
zur berprfung 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, knnen wir hier "Zustzlich
Serverzertifikat lokal berprfen" anwhlen. Das hat den Vorteil, da
wir mitbekommen, wenn sich am Serverzertifikat etwas ndert,
insbesondere wenn der Provider die CA wechselt.

Fr 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"
   berprfungsverfahren:  "Zustzlich Serverzertifikat lokal berprfen"
   berprfung mittels:    kann leer bleiben (werden ber den Hashwert
                           als Dateinamen im Zertifikateverzeichnis
                           gefunden)

Fr unser TLS-Beispiel (postman.arcor.de) ergibt sich:
   Port:    smtp
   SSL:
   Nutzungsart:            "SSL immer nutzen"
   berprfungsverfahren:  "Zustzlich Serverzertifikat lokal berprfen"
   berprfung 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 Funktionalitt auch in Skripten einbauen kannst, wird in der
SSL-FAQ (und der Hamster-Hilfe) gezeigt. Wenn Du dann immer noch Fragen
hast, zgere nicht, sie in den Hamster-Newsgroups zu stellen.
