Web Services Security Dokumentation zu den Beispielen Vortrag vom 11.12.02 Svetoslav Draganov
Einrichtung der Entwicklungsumgebung unter Windows NT/2000/XP 1. Herunterladen aller Packages - VeriSign Trust Services Integration Kit http://www.xmltrustcenter.org/developer/verisign/tsik/download2.htm - Axis 1.0 (für den TCP Monitor) http://xml.apache.org/axis/ 2. Installieren der Packages - VeriSign TSIK Das Package soll entpackt werden und alle jar-dateien vom /lib Verzeichnis müssen auf den CLASSPATH gesetzt werden: z.b.: TSIK_HOME = <tsik_home_verzeichnis> CLASSPATH %TSIK_HOME%\lib\tsik.jar %TSIK_HOME%\lib\xml_pilot_key.jar %TSIK_HOME%\lib\xml_prod_key.jar %TSIK_HOME%\lib\xerces.jar Sollte der Xerces Parser schon auf den CLASSPATH sein, braucht man ihn nicht noch einmal zu setzen. Soweit sollten alle Beispiele, die den TCPMonitor nicht benutzen lauffähig sein. - Axis 1.0 Nach dem Entpacken als erster Schritt kann man das axis-verzeichnis, das sich unter webapps im AXIS_HOME Verzeichnis befindet ins webapps-verzeichnis vom Tomcat verschieben (obwohl dieser Schritt für das Testen der Beispiele nicht notwendig ist). Als nächster Schritt soll man wieder alle jar-dateien aus dem /lib Verzeichnis von Axis, auf den CLASSPATH setzen. AXIS_HOME = <axis_home_verzeichnis> CLASSPATH %AXIS_HOME%\lib\axis.jar %AXIS_HOME%\lib\axis-ant.jar %AXIS_HOME%\lib\commons-discovery.jar %AXIS_HOME%\lib\commons-logging.jar %AXIS_HOME%\lib\jaxrpc.jar %AXIS_HOME%\lib\log4j-1.2.4.jar %AXIS_HOME%\lib\saaj.jar %AXIS_HOME%\lib\wsdl4j.jar 3. TCP Monitor Da in den Beispielen eine leicht modifizierte Version vom TCPMonitor benutzt wird, sollte man auch die mitgelieferte tcpmonitor.jar Datei auf den CLASSPATH setzen. 2
Bemerkung: Sollte der Java Interpreter die Klassen im tcpmonitor Package nicht finden, sollte man die tcpmonitor.java Datei selbst kompilieren und packen. Hier der Befehl zum Packen: jar cvf tcpmonitor.jar tcpmonitor\*.class Wichtig in dem Fall ist es, dass man sich beim Ausführen des obigen Befehles im Verzeichnis befindet, wo auch das tcpmonitor Package angelegt ist. Es ist falsch, wenn der Befehl aus dem tcpmonitor Package heraus ausgeführt wird. Die Originalversion vom TCPMonitor könnte auch benutzt werden, allerdings funktioniert die bei einigen Beispielen nicht richtig. Wenn man die Originalversion benutzen möchte, sollte man den Quellcode aller Beispiele ändern, die den TCPMonitor benutzen. if(findvalue("-tcpmon", argv, "false").equals("true")) { new tcpmonitor.tcpmon( 8888, // port to intercept soap messages "interop-xkms.verisign.com", // soap target host 80 // soap target host port ); } Die markierte Zeile sollte mit der folgenden ersetzt werden: new org.apache.axis.utils.tcpmon, d.h. der Code sollte wie folgt aussehen: if(findvalue("-tcpmon", argv, "false").equals("true")) { new org.apache.axis.utils.tcpmon ( 8888, // port to intercept soap messages "interop-xkms.verisign.com", // soap target host 80 // soap target host port ); } 3
Zu den Beispielen Alle Befehle, die für das Ausführen der Beispiele benutzt werden, sind in batch-dateien untergebracht worden. Unter Windows genügt es einen Doppelklick auf die batch-datei, um das Beispiel zu starten. Ausnahme: das Beispiel für das Signieren und Verifizieren von XML- Dateien. XMLSigning and Verifying Das Beispiel zeigt einfaches Signieren und Verifizieren von XML Dokumente mit Hilfe von digitalen Signaturen. Signieren java XMLSign sign in request.xml out signed_doc.xml Es wird der Private Key, der sich im Keystore befindet, benutzt, um eine einmalige digitale Signatur erzeugt zu werden. Verifizieren java XMLSign verify in signed_doc.xml Für das Verifizieren wird der Public Key benutzt. XKMSKeystore Der XKMS Keystore erweitert den von Sun bereitgestellten Keystore und benimmt sich wie ein ganz normaler Java Keystore, d.h. der speichert Keys und Certficates in einer gesicherten Datei. Normalerweise fügt man seine Privatschlüssel und Zertifikate in den Keystore ein. Wie funktioniert der XKMS Keystore: Beim Einfügen oder Herausholen eines Zertifikates kontaktiert der Keystore in real time mit einem Web Service, um den Zertifikat zu validieren. Um richtig zu funktionieren, muss ein signierter Schlüssel (signing key) in dem Keystore vorgeladen (vorinstalliert) sein. Mit diesem Schlüssel werden alle Anfragen signiert, die an den XKMS Web Service geschickt werden. Der XKMS Keystore benutzt zwei Dateiformate entweder eigenes XML Format oder das JKS - Format (java keystore format) Bsp.: xkms\keystore\keystore.xml Nur eine binäre Datei kann in den Keystore importiert werden, d.h. wenn das Zertifikat in einem XML Format vorliegt, muss es in ein binäres Format konvertiert werden. Dazu wird das von Verisign bereitgestellte Werkzeug com.verisign.xmlsig.tools.keyconverter benutzt. Bsp.: convertcert.bat Das Importieren wird von einem anderen Werkzeug übernommen, und zwar von dem com.verisign.xkms.tools.xkmstool. Bsp.: importcert.bat 4
XKMS Client Der XKMS Sample Client gibt uns die Möglichket VeriSign's OnSite Managed PKI (Public Key Infrastructure) über das Web services framework. Diese Anwendung kann public keys mit Hilfe des XKMS Dienstes lokalisieren, validieren und registrieren. Locate Die Locate Funktion ermöglicht uns den public key einer bestimmten Person zu finden, den wir später zur Verschlüsselung einer Nachricht, die zu dieser Person bestimmt ist, benutzen können. Bsp.: locatexkms.bat und locatexkmstcpmon.bat Register Mit der Register Funktion können wir einen public key von dem XKMS Service registrieren lassen. Diesen Key kann danach von anderen Personen, die uns eine Message schicken wollen, lokalisiert und validiert werden, für die Verschlüsselung von Nachrichten, die jemand an uns schicken will oder für Verifizierung von Dokumenten, die wir digital signiert haben, benutzt werden. Der Register Befehl erzeugt einen Java Keystore, der den zu dem Public Key passenden Private Key verschlüsselt aufbewahrt. Bsp.: siehe die Dokumentation zu TSIK (%TSIK_HOME%\samples\xkms\index.html) Validate Die Validierungsfunktion prüft die Gültigkeit des Public Key. Z.B. Nachdem die Verifizierung gezeigt hat, dass eine digitale Signature gültig ist, kann der Public Key des Unterzeichneten validiert werden. Bsp.: validatexkms.bat und validatexkmstcpmon.bat Eine ausführliche Dokumentation zum XML Key Management Specification API ist unter %TSIK_HOME%\docs\services\xkms\XKMS.pdf zu finden. Payment Sample Application Das Beispiel führt eine Credit Card Transaktion gegen den VeriSign Payflow payments Service durch. Für mehr Infos siehe die TSIK Dokumentation unter %TSIK_HOME%\samples\payments\index.html 5