Einrichtung des Moduls und der Nachrichtenverarbeitung mit AS2

Einleitung

Der AS2 Adapter ist im B2B Standard enthalten. Zur Einrichtung müssen einige Global Properties, Services, Actions und Extensions angepasst werden. Außerdem müssen Änderungen am JDK vorgenommen werden. Weitere Infos dazu sind hier zu finden.

Die Sicherheit (Verschlüsselung und Signatur sowie Entschlüsselung und Verifikation einer Signatur) der Kommunikation von AS2-Nachrichten kann mit dem Fastlane Security Server (FSS) umgesetzt werden.

Siehe dazu auch die ausführlichere Ankündigung hier.

Administration

Global Properties

Key

Value

Erklärung

B3P_KEYSTORE_KEY

Vlc4ZIHi7oc=

base64 verschlüsseltes Passwort für den Java Keystore, dass die Zertifikate enthält. Ist nur bei der Verwendung des B2B-AS2-Moduls anzugeben, nicht bei der Verwendung des FSS.

com.nextlevel.b2bbp.as2.service.inbound.AS2ReceiverServiceExtern.LOG_LEVEL

1

 

B3P_AS2_USE_MPID_SYNC

false

Falls „false“, dann wird die Extension B3P_AS2_MPID_MAP verwendet, statt MPID_SYNC. Sinnvoll, falls MPID_SYNC viele Einträge hat, die für AS2 nicht benötigt werden.

B3P_AS2_LOG_STREAM

true

Falls „true“ wird beim Versenden der AS2 Stream gespeichert. Es ist nicht der exakte, versendete Stream, der kann in Java nicht gespeichert werden, aber er enthält alle Header Variablen, die softwareseitig gesetzt werden.

Services

Es müssen zwei neue Services angelegt werden:

Receiver Service

Eigenschaft

Wert

ID

default_as2  (alternativ default_as2_new) WICHTIG keine anderen IDs!!!

Name

AS2 Receiver Service

Typ

AS2

Klasse:

com.nextlevel.b2bbp.as2.service.inbound.AS2ReceiverServiceExtern

Channel

Inbound (Beliebig auswählbar)

Richtung

Business Partner nach Engine

Status

STP

Erstellt von

b2bbp

Startup

nein

Eigenschaften:

B3P_STORE_ORIG_MSG

1 (dann werden die Originalnachrichten (verschlüsselt und signiert) gespeichert)

Anhang-Kodierungen Base64 und Quoted-Printable werden automatisch unterstützt.

Der Name des Anhangs (Dateiname) wird in die MessageContext-Variable B3P_ATTACHMENT_NAME gespeichert. Damit sie auch beim Neustart der Nachricht verfügbar bleibt, soll die Variable dem Save Messages Restartable Feature bekannt gegeben werden. Dafür sollte die Global Property Global Property RESTART_UTIL_SAVE_MESSAGES_RESTARTABLE auf true gesetzt und der Global Property RESTART_UTIL_OPTIONAL_ATTRIBUTES_TO_SAVE die MessageContext-Variable B3P_ATTACHMENT_NAME hinzugefügt werden.

Extension AS2_RECEIVER_EDI_PRIORITIES:

Diese Extension ist dazu da, eingehenden Edi Nachrichten in Abhängigkeit vom Edi-Inhalt eine Priorität zuzuordnen. Je kleiner der Zahlenwert umso höher ist die Priorität:

Anbei ein Beispiel:

equalsEdi(“UNB+2+0”, 9903681000004) AND equalsEdi(“UNH+2+0”, UTILMD) = 35

equalsEdi(“UNB+2+0”, 9903681000004) AND equalsEdi(“UNH+2+0”, INVOIC) = 10

equalsEdi(“UNB+2+0”, 9903681000004) AND equalsEdi(“UNH+2+0”, MSCONS) = 20

Sender Service

Eigenschaft

Wert

ID

egal z.B. as2-send

Name

AS2 Sender Service

Typ

AS2

Klasse:

com.nextlevel.b2bbp.as2.service.outbound.AS2SenderServiceExtern

Channel

 

Richtung

Engine nach Business Partner

Status

STP

Erstellt von

b2bbp

Startup

nein

Eigenschaften:

B3P_ENCODING              

UTF-8

B3P_STORE_ORIG_MSG

1

B3P_AS2_TRANSFER_MC_VARIABLE_TYPES

; separierte Liste mit MessageContext Variablen, die zum Receiver Service übertragen und in den MessageContext geschrieben werden. Achtung: Variablennamen dürfen nur aus Großbuchstaben bestehen!

CONTENT_TYPE_APPLICATION_EDIFACT_RECEIVERS

, separierte Liste mit PartnerILNs, für die der Content-type als application/EDIFACT gesendet wird. Benötigt für NCG unverschlüsselt/unsigniert

REMOVE_MULTIPART_RECEIVERS

, separierte Liste mit PartnerILNs, für die die Nachricht nicht in ein Multipart Objekt gepackt wird. Benötigt für verschlüsselte/signierte Kommunikation mit NCG

Wenn die ServiceProperty B3P_AS2_ATTACHMENT_BASE64_TRANSFER_ENCODING auf X gesetzt wird, werden alle Attachments base64 Codiert versendet.

Action OutboundMailHandler

Die Action mit der Klasse OutboundMailHandler (z.B. namens Sender-Action) wird so konfiguriert, dass der AS2-Service aufgerufen wird:

B3P_USED_SERVICE_ID muss dafür auf die ID des AS2-Sender-Services zeigen. Das kann auch über dynamische Ausdrücke gemacht werden, um je nach Partner unterschiedliche Kommunikationsarten zu nutzen (Email, AS2 intern, AS2 extern) Empfohlener Wert: ${elp(SENDER_EMAIL,${template(OUTBOUNDSERVICE_&(this.FORMAT.partnerCode))},true)}

Die konkrete Service-ID wird in der Extension SENDER_EMAIL konfiguriert, wo die eigenen Systeme konfiguriert werden. Zwischen den eigenen Systemen wird über internes AS2 kommuniziert, mit den externen Partner über Email. Dort können aber auch Partner konfiguriert werden, die über externes AS2 angesprochen werden. Dafür muss für diese Partner die Service-ID des AS2 Sender Service (z.B. as2-send) hintegerlegt werden. Beispiel:

### Default ###
OUTBOUNDSERVICE=MAIL_OUT

### System Lieferant 9999999999999 ###
OUTBOUNDSERVICE_9999999999999=AS2_OUT

### Externes AS2 Partner 8888888888888 ###
OUTBOUNDSERVICE_8888888888888=as2-send

In der Action sollte B3P_AS2_SUBJECT den gleichen Wert und Einstellungen wie B3P_MAIL_SUBJECT erhalten. Zum Beispiel den dynamischen Ausdruck ${template(&(this.FORMAT.type)_&(this.FORMAT.attributes.UtilRef)_&(this.FORMAT.senderCode)_&(this.FORMAT.partnerCode)_&(this.FORMAT.referenceId))}

Benutzersteuerung & GUI

Unter Benutzer und Rollenadministration muss ein neues Attribut erstellt werden:

ID: Module_AS2

Wert:

Override={view=mainView,type=AddChild,target=toolBarBox,name=org.b2bbp.ui.uicomponent.MainNavLinkButton,value=[id:'KeystoreButton';label:'AS2 Partnerbeziehungen';isExtension:'false';type:'com.nextlevel.b2b.as2.ui.swf';provider:'nextlevel.com';version:'1.0';container:'applicationViewStack';toolTip:'AS2 Partnerbeziehungen';width:'180';labelPlacement:'right';textAlign:'left';horizontalGap:'10';paddingLeft:'5';paddingRight:'5';iconURL:'images/famfamfam-icons/key.png']}

Des Weiteren wird für jeden Benutzer, der AS2 Partnerbeziehungen administrieren darf, eine Rolle für dieses Attribut erstellt. z.B: RollenID: admin, AttributID: Module_AS2

Wenn die Security für AS2-Nachrichten mit dem B2B-AS2-Modul und nicht mit dem FSS umgestezt wird, mus des Weiteren eine Global Property mit dem Namen B3P_KEYSTORE_KEY erstellt werden. Sie gibt das Base64 codierte Passwort des Java Keystores an, in dem alle Zertifikate abgelegt werden. Das Passwort kann frei gewählt werden, darf aber nach erstmaligem Start des Moduls nicht mehr verändert werden. Falls b2bbp als Passwort verwendet werden soll, lautet die base64 Verschlüsselung Vlc4ZIHi7oc=

Einrichtung AS2-Verbindung

Die Einrichtung neuer Partnerbeziehungen geschieht über das Modul AS2 Partnerbeziehungen. Es besteht aus 2 Tabs:

MPIDs

B2B_Installation_as2_gui_mpid

In diesem Tab werden die System- und Partner-MPIDs gepflegt, für die die Partnerbeziehungen konfiguriert werden sollen.

Zertifikate

Die Zertifikatsverwaltung im AS2-Modul ist nicht mehr relevant und wird demnächst entfernt, siehe dazu der Hinweis oben in der Einleitung.

Falls signiert und/oder verschlüsselt werden soll, müssen Zertifikate hochgeladen werden. Falls der FSS genutzt wird, wird diese Ansicht nicht genutzt, da die Zertifikatsverwaltung dann durch den FSS durchgeführt wird.

B2B_Installation_as2_gui_cert

Zur Erstellung einer Signatur wird der Private Key des Systems benötigt, zur Verifizierung einer Signatur der Public Key des Partners. Falls Nachrichten verschlüsselt werden sollen, wird der Public Key des Partners benötigt. Zum Entschlüsseln muss der Private Key des Systems hochgeladen werden.

Spalte 1 der Tabelle gibt an, ob ein Private Key hochgeladen wurde. In Spalte 2 ist zu erkennen, ob ein Public Key hinterlegt wurde.

In Spalte 3 ist zu erkennen, ob das Zertifikat gültig, oder abgelaufen ist .

Neue Zertifikate können zu allen MPIDs hochgeladen werden, die im Tab MPIDs aufgeführt sind. Diese sind über den zugehörigen Namen im Drop-Down Menü aufgeführt.

Des Weiteren können auch direkt MPIDs eingegeben werden. Falls eine MPID direkt eingegeben wird, wird sie bei der Erstellung von Partnerbeziehungen und in der Zertifikatsübersicht ohne zugehörigen Firmennamen dargestellt. Zur einfacheren Wartung wird empfohlen, die MPID_SYNC Extension zu pflegen.

Über “Durchsuchen…” kann das Zertifikat bzw. der Private Key hochgeladen werden. Unterstützte Formate für Public Keys sind “.pem”, “.cer” und “.crt”. Private Keys können in den Formaten “.pfx” und “.p12” hochgeladen werden.

Falls ein Private Key hochgeladen werden soll, muss das B2B-Base64 (B2B Base64 mit Salt) kodierte Passwort des Zertifikats angegeben werden. Das Kodierungs-Tool dazu kann beim Support angefragt werden.

Falls das Zertifikat nur für einen eingeschränkten Zeitraum verwendet werden soll, kann dieser unter gültig von/bis angegeben werden.

Über den Button “Gültigkeiten ändern” können die Gültigkeiten vorhandener Zertifikate modifiziert werden.

Mithilfe des Buttons “Zertifikat herunterladen” kann das öffentliche Zertifikat zum ausgewählten Eintrag als .cer Datei heruntergeladen werden. Falls Eintrag des eigenen Systems mit hinterlegtem private Key gewählt wurde, kann auf diese Weise das eigene Zertifikat an Partner verschickt werden.

Partnerbeziehungen

B2B_Installation_as2_gui_partnerrel

Unter Partnerbeziehungen sind alle bisher angelegten Partnerbeziehungen mit deren Einstellungen sichtbar. Außerdem können neue Beziehungen angelegt, alte gelöscht und die Gültigkeit einer Beziehung angepasst werden.

Bei der Erstellung einer neuen Beziehung muss angegeben werden, welche Art der Signatur verwendet wird, wie verschlüsselt wird, ob die Beziehung für ein- (inbound markiert) oder ausgehende Nachrichten gilt und ob Nachrichten komprimiert ausgetauscht werden sollen.

Durch Anklicken einer bestehenden Beziehung werden die entsprechenden Daten als Vorbelegung der Felder zur Erzeugen einer neuen Beziehung verwendet.

In Abhängigkeit von den Einstellungen erscheinen unter SystemMPID und PartnerMPID unterschiedliche Auswahlmöglichkeiten. Für ausgehende, signierte Nachrichten können beispielsweise nur MPIDs gewählt werden, für die ein Private Key hinterlegt wurde.

Bei ausgehenden Nachrichten werden diese an “URL” gesendet, bei eingehenden Nachrichten ist die Beziehung nur gültig, wenn die Nachricht an die unter “URL” angegebene Url versendet wurde. (Bei interner Kommunikation wird auf einen Tomcat unter /b2bbp-engine/as2Extern, nicht as2New versendet)

Des Weiteren kann die Gültigkeit der Beziehung über die Felder gültig von bzw. gültig bis eingeschränkt werden.

Konfiguration der AS2-Ids bei den ausgehenden Nachrichten

Im AS2-Stream werden die Header AS2-From und AS2-To gesetzt. Die Werte werden über folgende Logik ermittelt:

Falls am AS2-Sender-Service die Eigenschaften B3P_FIXED_PARTNERID und B3P_FIXED_SENDERID gesetzt sind, ist AS2-From der Wert der Eigenschaft B3P_FIXED_SENDERID und AS2-To der Eigenschaft B3P_FIXED_PARTNERID

Andererseits, falls im MessageContext die Variable B3P_AS2_USE_SENDER_RECEIVER_FROM_MC = true gesetzt ist, ist AS2-From der Wert der MessageContext-Variable B3P_AS2_FROM und AS2-To der Wert der Eigenschaft B3P_AS2_TO. Diese Variablen setzt man normalerweise in der Action der Klasse OutboundMailHandler mit den Ausdrücken

AS2_USE_SENDER_RECEIVER_FROM_MC = true
B3P_AS2_FROM = ${loadExtensionProperty(SENDER_EMAIL,${template(AS2_FROM_&(this.FORMAT.senderCode))},true)}
B3P_AS2_TO = ${loadExtensionProperty(SENDER_EMAIL,${template(AS2_TO_&(this.FORMAT.partnerCode))},true)}

Die Einträge AS2_FROM_<MPID> und AS2_TO_<MPID> müssen in der Extension SENDER_EMAIL eingetragen werden.

Andererseits wird AS2-From aus dem Format-Objekt ermittelt und gleicht Format.systemCode, und AS2-To ist gleich Format.partnerCode

Bestimmung der Partnerbeziehung, die benutzt werden soll

Normalerweise werden, um die passende Partnerbeziehung zu finden, die Werte AS2-From und AS2-To genommen (wie sie bestimmt werden, steht im vorherigen Kapitel)

Falls diese Ids nicht in den Partnerbeziehungen benutzt werden können, kann man pro System oder Partner direkt angeben, unter welchen Ids die Partnerbeziehung ermittelt werden soll.

Für die ausgehenden Nachrichten passiert das über die MessageContext-Variablen B3P_PARTNER_RELATIONSHIP_FROM und B3P_PARTNER_RELATIONSHIP_TO

B3P_PARTNER_RELATIONSHIP_FROM = ${elp(SENDER_EMAIL,${template(AS2_MODULE_ID_&(this.FORMAT.systemCode))},true)}
B3P_PARTNER_RELATIONSHIP_TO = ${elp(SENDER_EMAIL,${template(AS2_MODULE_ID_&(this.FORMAT.partnerCode))},true)}

Die Ids werden somit in der Extension SENDER_EMAIL unter dem Schlüssel AS2_MODULE_ID_<MPID> konfiguriert.

Für die eingehenden Nachrichten passiert das über die Extension B3P_RECEIVER_AS2_MAP, in der die Header-Werte auf die Ids in der Partnerbezierung gemappt werden, zum Beispiel:

21X-DE-F-G0G0G-2=980022200002_AS2
21X-DE-F-A0BBB-8=990099900002_AS2

Fachliche Belege

B2B_Installation_as2_gui_prof_record

Im Monitoring wird unter Fachliche Belege die ein-/ausgehende Nachricht abgelegt. Falls die ServiceProperty B3P_STORE_ORIG_MSG gesetzt ist, wird auch die Originalnachricht (verschlüsselt und signiert) abgelegt.

Des Weiteren wird das empfangende/gesendete MDN (Message Disposition Notification) angezeigt. Ein MDN ist eine automatisch generierte Nachricht, die synchron als Bestätigung versendet wird. Falls sie positiv ist, wird bestätigt, dass die Nachricht beim Empfänger entschlüsselt und die Signatur überprüft werden konnte. Ein negatives MDN liefert den Fehler an den Sender zurück, der bei der Verarbeitung des Empfängers aufgetreten ist. Negative MDNs werden als Icon im Bestätigungsfeld angezeigt (Status MER). Ein MDN bestätigt keine erfolgreiche Verarbeitung der Nachricht, sondern nur eine erfolgreiche Übertragung der Nachricht!

AS2-Security mit Fastlane Security Server

Verschlüsselung und Signatur für AS2-Nachrichten kann sowohl mit dem B2B-AS2-Modul als auch mit dem Fastlane Security Server (FSS) umgesetzt werden. Letzterer ist durch folgende B2B-GlobalProperty für AS2 zu aktivieren:

USE_FSS_FOR_AS2 = true

(Diese Property wird ab B2B Release 2002.1.0 automatisch auf true gesetzt. Es ist dann nicht mehr möglich, mit dem alten AS2 Crypto Modul zu arbeiten.)

Die Konfiguration der AS2-Partnerbeziehungen in der B2B ist weiterhin gültig. Insbesondere können die Outbound-Algorithmen (Verschlüsselungsalgorithmen und Hashalgorithmen für Signatur) partnerscharf konfiguriert werden. Inbound kann partnerscharf konfiguriert werden, ob Verschlüsselung und Signatur gefordert wird.

Die Zertifikatsverwaltung erfolgt nicht mehr über AS2, sondern über den FSS. Vgl. hierzu die FSS Dokumentation. Zertifikate für AS2 müssen als Alias den gleichen Wert haben, der auch in den IDs der Partnerbeziehungen verwendet wird (meistens ILN).

Für das Routing der Nachrichten innerhalb der B2B gelten die gleichen Regeln wie für den FSS. Es sind also die üblichen ChannelDistributions und Channels des FSS zu benutzen. Vergleiche hierzu die FSS Dokumentation.

Der AS2 Receiver Service verschickt das MDN erst, nachdem die Verarbeitung durch den FSS abgeschlossen wurde. Entsprechend sollte der Timeout zum FSS nicht zu hoch gesetzt werden.

Regelwerk

Bei der Verarbeitung auftretende Fehler & Warnungen können per Regelwerk behandelt werden

Zertifikatsmigration

Falls bisher die AS2 Zertifikatsverwaltung genutzt wurde und auf den FSS umgestiegen werden soll, sind die Zertifikate aus der AS2-Zertifikatsverwaltung zu exportieren und in der FSS-Zertifikatsverwaltung zu importieren. Der Export-Button unterstützt nur Partner-Zertifikate. Keys (und die ihnen zugeordneten System-Zertifikate) müssen manuell hochgeladen werden. Für den Import der Partner-Zertifikate steht das FSS-Zertifikatsimporttool zur Verfügung, vgl. die FSS Dokumentation.

Nach der Migration der Zertifikate sind alle Zertifikate und Schlüssel in der AS2 Zertifikatsverwaltung zu löschen.

Proxy Einrichtung

AS2 unterstützt Kommunikation über einen Proxy.

Einrichtung über Global Properties:

B3P_PROXY_SERVER (url:port)

B3P_PROXY_USER

B3P_PROXY_PASSWORD (b2b base64 codiert)

B3P_PROXY_EXCLUDELIST (url1;url2)

Soll mit einem Partner nicht über einen Proxy kommuniziert werden, müssen die URLs in B3P_PROXY_EXCLUDELIST eingetragen werden.

 

Kompatibilität

ACHTUNG: Für verschlüsselte Kommunikation muss die ServiceProperty REMOVE_MULTIPART_RECEIVERS = iln1,iln2 am AS2SenderService gesetzt werden für alle Partner, die diese Software verwenden.

  Für unverschlüsselte Kommunikation muss die ServiceProperty CONTENT_TYPE_APPLICATION_EDIFACT_RECEIVERS = iln1,iln2 gesetzt werden für alle Partner, die diese Software verwenden.

Selbstsignierte Zertifikate erzeugen

Zu Testzwecken können selbstsignierte Zertifikate eingespielt werden. Sie können mit dem Tool OpenSSL erzeugt werden (https://www.openssl.org/). Es folgen die Kommandozeilen-Anweisungen für dieses Tool.

  1. Privates Key erzeugen

    openssl genrsa -des3 -out privkey.pem 2048

  2. Selbstsigniertes Public Zertifikat erzeugen. Dieses wird dem Partner gegeben.

    openssl req -new -x509 -key privkey.pem -out pubcert.crt -days 1095

  3. Privates PKCS#12 Zertifikat erzeugen. Das wird lokal hochgeladen.

    openssl pkcs12 -export -out privcert.p12 -inkey privkey.pem -in pubcert.crt

Bekannte Probleme

MDN: multipart/mixed content not supported

Die PartnerILN muss bei verschlüsselter Kommunikation in die ServiceProperty REMOVE_MULTIPART_RECEIVERS des AS2SenderServices aufgenommen werden.

Bei unverschlüsselter in die ServiceProperty CONTENT_TYPE_APPLICATION_EDIFACT_RECEIVERS.

P12 Zertifikat kann nicht hochgeladen werden

Es muss sichergestellt sein, dass der Keystore-Typ PKCS#12 ist und nicht JKS o.ä.

(im Keystore Explorer steht unten nach dem Öffnen Keystore Type: PKCS#12)

View Me   Edit Me