Beispiel: Vollständiger AS2-Nachrichtenaustausch (komplex)
In diesem Beispiel wird ein komplexerer AS2-Nachrichtenaustausch zwischen zwei AS-Partnern über FlowForce Server mit Verschlüsselung und Signierung der Nachrichten erläutert. Bevor Sie dieses Tutorial durcharbeiten, müssen Sie bereits das vorhergehende Beispiel, siehe Beispiel: Vollständiger AS2-Nachrichtenaustausch (einfach) durchgearbeitet haben.
In diesem Beispiel wird das komplexere Kommunikationsszenario zwischen zwei AS2-Partnern erläutert (die zwölfte von zwölf möglichen Varianten laut Abschnitt 2.4.2 von RFC 4130). Im Prinzip geschieht dabei Folgendes:
•Der Absender sendet verschlüsselte AS2-Daten.
•Der Absender sendet signierte AS2-Daten.
•Der Absender verlangt in Antwort auf die Nachricht eine signierte MDN vom Empfänger.
Annahmen
•Es werden derselbe Absender und Empfänger wie im vorhergehenden Beispiel verwendet, nämlich: Hermes (FlowForce Server unter Linux) und Apollo (FlowForce Server unter Windows).
•Hermes möchte eine verschlüsselte und signierte Nachricht an Apollo senden und verlangt in Antwort eine MDN.
•Sowohl Apollo als auch Hermes wird in einem lokalen privaten Netzwerk ausgeführt.
•Der empfangende AS2-Server (Apollo) akzeptiert HTTP-Requests von nicht authentifizierten Clients (d.h. es besteht öffentlicher Zugriff auf den AS2-Dienst).
Voraussetzungen
•Die FlowForce Server Advanced Edition muss sowohl auf Apollo als auch auf Hermes installiert und lizenziert sein.
•Die FlowForce Web-Verwaltungsschnittstelle muss sowohl auf Apollo als auch auf Hermes am konfigurierten Host und Port (z.B. http://apollo:8082 und http://hermes:8082, wenn "apollo" und "hermes" die jeweiligen Host-Namen sind) ausgeführt werden. Siehe auch Definieren der Netzwerkeinstellungen.
Einrichten der Zertifikate von Apollo
In diesem Konfigurationsschritt geschieht Folgendes:
1.Apollo generiert ein öffentliches Zertifikat und einen Private Key und importiert beide in FlowForce Server.
2.Apollo sendet das öffentliche Zertifikat (ohne den Private Key) an Hermes.
3.Hermes importiert Apollos öffentliches Zertifikat in FlowForce Server.
Warum ist dies notwendig:
•Bevor Hermes die Nachricht an Apollo sendet, benötigt er zur Verschlüsselung der Nachricht den Public Key (öffentlichen Schlüssel) von Apollo. Apollo entschlüsselt die Nachricht bei Empfang mit seinem eigenen Private Key (privater Schlüssel).
•Bevor Apollo die verlangte MDN an Hermes sendet, signiert Apollo diese mit seinem eigenen Private Key. Bei Empfang der signierten MDN benötigt Hermes das öffentliche Zertifikat von Apollo, um die Signatur zu überprüfen.
Wir werden zum Zweck dieses Beispiels über die mit Cygwin (https://cygwin.com/) inkludierte OpenSSL (https://www.openssl.org/) Library ein selbst signiertes Zertifikat generieren. Dies dient nur zu Beispielzwecken. In einem echten Anwendungsszenario müssen Sie eventuell andere Tools zur Generierung des SSL-Zertifikats verwenden. Eventuell steht in Ihrem Unternehmen bereits ein solches Zertifikat zur Verfügung.
Um das selbst signierte Zertifikat für Apollo zu generieren, öffnen Sie den Cygwin-Terminal und geben Sie Folgendes ein:
openssl req -x509 -newkey rsa:2048 -keyout apollo_private.pem -out apollo_public.pem -days 365 |
Wenn Sie aufgefordert werden, ein Passwort einzugeben, geben Sie das Passwort, mit dem Sie den Private Key verschlüsseln möchten, ein, und notieren Sie sich das Passwort. Sie benötigen dieses Passwort später, um das Zertifikat in FlowForce Server zu importieren. Befolgen Sie die Anweisungen des Assistenten und geben Sie alle erforderlichen Felder ein ("Country", "State or Province Name", "Locality Name", "Organization Name", "Department Name", "Common Name" und "Email").
Nach Beendung des Assistenten werden mit dem obigen Befehl die zwei Dateien apollo_private.pem und apollo_public.pem im Startverzeichnis von Cygwin generiert (z.B. C:\cygwin64\home\<user>\, wenn Sie Cygwin unter C:\cygwin64 installiert haben). Da dieses Paar nur in Form einer einzigen Datei in FlowForce Server hochgeladen werden kann, führen Sie den folgenden Zusatzbefehl aus, um das öffentliche Zertifikat in die Private Key-Datei zu kopieren:
cat apollo_public.pem >> apollo_private.pem |
Melden Sie sich auf dem Apollo-Rechner auf FlowForce Server an, klicken Sie auf das Menü Konfiguration und anschließend auf Erstellen > Zertifikat erstellen.
Geben Sie den Namen und eine Beschreibung für das Zertifikat ein, klicken Sie auf "Durchsuchen" und wählen Sie die zuvor erstellte Datei apollo_private.pem aus. Sie müssen in diesem Schritt auch das vorher erstellte Passwort eingeben. Klicken Sie anschließend auf Speichern.
Das public+private-Zertifikatpaar wird nun in den FlowForce Server von Apollo importiert. Beachten Sie, dass das Symbol und der beschreibende Text anzeigen, dass diese Zertifikatdatei beides enthält:
Um den öffentlichen Schlüssel (Public Key) an Hermes zu senden, kopieren Sie die Datei apollo_public.pem auf den Hermes-Rechner. Melden Sie sich nun auf dem Hermes-Rechner auf FlowForce Server an und importieren Sie die Datei auf dieselbe Weise wie weiter oben beschrieben (diesmal ist in der Datei kein Private Key vorhanden, daher wird kein Passwort benötigt).
Beachten Sie, dass das Symbol und der beschreibende Text anzeigen, dass die Zertifikatdatei nur das öffentliche Zertifikat (und keinen Private Key) enthält.
Einrichten der Zertifikate von Hermes
In diesem Konfigurationsschritt geschieht Folgendes:
4.Hermes generiert ein öffentliches Zertifikat und einen Private Key und importiert beide in FlowForce Server.
5.Hermes sendet das öffentliche Zertifikat (ohne den Private Key) an Apollo.
6.Apollo importiert das öffentliche Zertifikat von Hermes in FlowForce Server.
Warum ist dies notwendig:
•Bevor Hermes die Nachricht an Apollo sendet, signiert Hermes sie mit Hilfe seines eigenen Private Key.
•Bei Empfang der Nachricht von Hermes überprüft Apollo die Signatur der Nachricht anhand des öffentlichen Zertifikats von Hermes.
Erstellen Sie zuerst das öffentliche Zertifikat und den Private Key von Hermes, wie für Apollo beschrieben. Dabei müssen die Dateinamen ersetzt werden:
openssl req -x509 -newkey rsa:2048 -keyout hermes_private.pem -out hermes_public.pem -days 365 |
Außerdem müssen "Organization name", "Common Name", usw. diejenigen von Hermes sein:
Kombinieren Sie als nächstes beide Dateien mit dem folgenden Befehl zu einer einzigen:
cat hermes_public.pem >> hermes_private.pem |
Importieren Sie nun die Datei hermes_private.pem in FlowForce Server auf dem Hermes-Rechner:
Kopieren sie als nächstes hermes_public.pem auf den Apollo-Rechner und importieren Sie sie in FlowForce Server:
Aktivierung der AS2-Verschlüsselung, Signieren und Überprüfen der MDN-Signatur auf Hermes
Bearbeiten Sie auf dem Hermes-Rechner die APOLLO-Partnereinstellungen wie folgt:
Aktivieren der AS2-Entschlüsselung, MDN-Signierung und Signaturüberprüfung auf Apollo
Bearbeiten Sie die HERMES-Partnereinstellungen auf dem Apollo-Rechner wie folgt:
Verarbeiten der MDN
Gemäß den oben angeführten Anforderungen verlangt Hermes, dass Apollo zur Bestätigung der AS2-Übertragung eine MDN sendet. Der Status der eingehenden MDN (Erfolg, Fehler), kann mit Hilfe der Ausdrucksfunktion as2-success berechnet werden. Melden Sie sich dazu auf dem Rechner "Hermes" bei FlowForce an und öffnen Sie den zuvor im Beispiel: Vollständiger AS2-Nachrichtenaustausch (einfach) erstellten Auftrag "send-as2". Bearbeiten Sie als nächstes den Auftrag, wie unten gezeigt:
Beachten Sie die folgenden Punkte:
•Das Ergebnis des ersten Ausführungsschritts vom Typ "AS2 MDN" wurde nun deklariert (Siehe Feld Ergebnis dieses Schritts zuweisen an).
•Das Kontrollkästchen Bei Fehler abbrechen ist deaktiviert, da die Ausführung mit dem nächsten Schritt fortgesetzt werden muss.
•Im zweiten Ausführungsschritt wird die Funktion /system/compute aufgerufen. Diese Funktion berechnet mit Hilfe der Funktion as2-success einen Boole'schen Ausdruck. Die Funktion erhält als Argument die im ersten Ausführungsschritt zurückgegebene MDN.
Senden der AS2-Nachricht
Sie sind jetzt soweit und können die verschlüsselte und signierte AS2-Nachricht von Hermes an Apollo senden. Kopieren Sie auf dem Rechner "Hermes" eine .edi-Datei in das zuvor konfigurierte Verzeichnis /home/altova/as2/outgoing. Nach Ablauf des Verzeichnisabfrageintervalls (standardmäßig 60 Sekunden), wird der Trigger ausgelöst und der Auftrag sendet die Datei an den AS2-Dienst auf dem Rechner "Apollo". Das Verzeichnis C:\as2\incoming auf dem Rechner "Apollo" sollte nun die von Hermes gesendete Nachricht enthalten, z.B:
Um zu sehen, ob der Auftrag fehlgeschlagen ist oder erfolgreich ausgeführt wurde, überprüfen Sie das Fehler-Log (Sie müssen dies eventuell nicht nur auf Hermes, sondern auch auf Apollo überprüfen). Nähere Informationen dazu finden Sie unter Anzeige des Auftrags-Logs.
Das Log enthält Informationen über etwaige Fehler, die bei dieser Übertragung aufgetreten sind. Wenn Hermes z.B. nicht verschlüsselte Daten sendet, aber Apollo verschlüsselte Daten erwartet, schlägt die Auftragsausführung fehl und es wird eine entsprechende Meldung protokolliert.