AS2-Troubleshooting - Tutorial

Last Update: 30.05.2023

Diagramm


Das folgende Diagramm dient als Orientierungshilfe und AS2-Fehler lassen sich damit besser eingrenzen/einordnen. Bitte fangen Sie oben an und arbeiten Sie sich je nach Zwischenergebnis nach unten weiter.


images/download/attachments/137301981/AS2_DE-version-1-modificationdate-1740475446868-api-v2.png


Ausgehende Verbindungen


A5 - Ist der AS2-Endpunkt des Partners erreichbar?

Hierfür werden zwei Tests benötigt.


  • Netzwerktest
    Dazu führen Sie bitte einen Pingtest/telnet vom Integration Server aus. Ist der Verbindungsversuch auf IP und Port außerhalb des Integration Servers erfolglos → Bitte mit A10 fortfahren.
    Bei Bedarf fragen Sie bitte bei Ihrer Infrastruktur nach.

  • HTTP-Test
    Der zweite Test wird benötigt, wenn netzwerktechnisch alles in Ordnung ist. Dazu muss die Verbindung über HTTP getestet werden. Für einen einfachen Test können Sie auch die AS2-Adresse des Partners per Browser aufrufen.
    Wenn ein HTTP-Fehlercode zurückkommt, dann fahren Sie bitte fort mit A11.

A6 - Wird eine gültige MDN zurück geliefert?

Was ist eine MDN?

Eine MDN (Message Disposition Notification) ist eine Empfangsbestätigung. Diese wird während eines AS2-Austauschs nach Erhalt der AS2-Nachricht vom Empfänger an den Absender verschickt.

Damit signalisiert der Empfänger, dass die Datei vollständig übertragen wurde. In der MDN wird dem Absender mitgeteilt, ob der Sendeversuch erfolgreich war oder dabei ein Fehler unterlaufen ist.

War die Sendung erfolgreich, kann der Absender mit der MDN den fristgerechten Empfang der Nachricht bestätigen. Bei erfolglosen Übertragungen, also bei einem Fehler in der MDN, kann man oft anhand des Fehlers auf das Problem der Übertragung schließen.

Eine MDN kann synchron und asynchron versendet werden. Der Unterschied ist, dass bei ersterem gewartet wird, bis die Inhalte verarbeitet wurden und bei zweiterem die MDN sofort bei Erhalt der AS2-Nachricht gesendet wird, ohne auf den Prozess zu warten.

Eine gültige MDN hat einen eindeutigen Aufbau. Es handelt sich um einen Multipart-Request. Die einzelnen Bereiche sind getrennt durch Boundaries z. B. ------=_Part_14_2121847739.1648642823595.

Wenn die Datei anders aufgebaut ist, wie z. B. eine HTML-Seite, dann ist dies keine gültige MDN und es geht weiter bei A15.

Hinweis: Die MDNs finden Sie im Comm-Log (Control Center → Logs Comm-Log) und werden entsprechend der in der Konfigurationsdatei ./etc/as2.xml angegebenen Aufbewahrungsdauer im System gespeichert.

Hier ein Beispiel einer richtig aufgebauten MDN.


Beispiel - OK
null: HTTP/1.1 200 OK
AS2-From: fdsa
AS2-Version: 1.2
Set-Cookie: JSESSIONID=x691tc8tp8kp1qhwndeqjp3d3;Path=/partner
Message-Id: <MDN_1973241435.0.1648642822885@example.com>
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Length: 838
AS2-To: asdf
EDIINT-Features: multiple-attachments
MIME-Version: 1.0
Date: Wed, 30 Mar 2022 14:20:23 +0200 (CEST)
Content-Type: multipart/report; Report-Type=disposition-notification; boundary="----=_Part_14_2121847739.1648642823595"
 
------=_Part_14_2121847739.1648642823595
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
 
MDN for -
Message-ID: <1973241435.0.1648642822885@example.com>
From: asdf
To: fdsa
Subject: asdf
Received on: Wed Mar 30 14:20:22 CEST 2022
Status: processed
Comment: This is not a guarantee that the message has
been completely processed or understood by the receiving
translator
 
------=_Part_14_2121847739.1648642823595
Content-Type: message/disposition-notification
Content-Transfer-Encoding: 7bit
 
Reporting-UA: Lobster AS2-Server (IS/5.9.12_40548)
Original-Recipient: rfc822; fdsa
Final-Recipient: rfc822; fdsa
Original-Message-ID: <1973241435.0.1648642822885@example.com>
Disposition: automatic-action/MDN-sent-automatically; processed
 
------=_Part_14_2121847739.1648642823595--

A7 - Gibt die MDN einen Fehler zurück?

Im "Beispiel - FAILED" unten in Zeile 11 bzw. 24+25 lässt sich der Fehler erkennen (authentication-failed).


Beispiel - FAILED
------=_Part_496_2093794820.1678111677590
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
 
MDN for -
Message-ID: null
From: null
To: null
Subject: null
Received on: n.a.
Status: failed/failure: authentication-failed
Comment: This is not a guarantee that the message has
been completely processed or understood by the receiving
translator
 
------=_Part_496_2093794820.1678111677590
Content-Type: message/disposition-notification
Content-Transfer-Encoding: 7bit
 
Reporting-UA: Lobster AS2-Server
Original-Recipient: rfc822; null
Final-Recipient: rfc822; null
Original-Message-ID: null
Disposition: automatic-action/MDN-sent-automatically; failed/failure: authentication-failed
Failure: You're unknown to this system
------=_Part_496_2093794820.1678111677590--


MDNs können eine Vielzahl von Fehlern beinhalten. Um diese besser verständlich zu machen, muss näher auf den Aufbau einer AS2-Übertragung eingegangen werden. Siehe auch E7.


Fehlermeldung

Richtung

Ursache/Möglicher Fehler/Mögliche Lösung

failed/failure:
authentication-failed (Failure: You're unknown to this system)

Beide

  • Die AS2-Kennungen (IDs) stimmen nicht überein. Bitte prüfen Sie bzw. auch Ihr Partner, ob die AS2-Kennungen entsprechend des AS2-Datenblatts im Kanal eingetragen sind. Achtung: Die AS2-Kennungen sind case-sensitive.

  • MDN-Signierung oder Zertifikat für Signatur stimmt nicht überein.
    Wenn die Gegenseite veraltet ist, kann es sein, dass diese Sicherung abgeschaltet werden muss. Dies geht mit dem Haken "Sicherheitseinstellung der Signatur entfernen".

failed/failure:internal-error

Eingehend

  • Es ist kein Profil für die Verarbeitung vorhanden (eingehend).

  • Nur bei synchroner MDN: Es ist ein Problem beim Verarbeiten der Inhalte aufgetreten.

MDN is negative with type processed/error: integrity-check-failed Error: Signature couldn't be verified

Beide

Signatur oder Signaturalgorithmus stimmt nicht mit der des Partners überein, bzw. Partner hat das falsche Zertifikat hinterlegt.

check of signature failed: signature invalid or tempered message

Beide

Signatur stimmt nicht überein. Zertifikate oder Verschlüsselung überprüfen!

got failed disposition from partner: insufficient-message-security

Beide

Das bedeutet, dass die Nachricht nicht verschlüsselt ist, aber der Partner die Nachricht verschlüsselt haben möchte.
Bitte aktivieren Sie die Checkbox Verschlüsselt senden im Kanal und versuchen es erneut.

processed/error: decryption-failed (unable to get enveloped S/MIME-data)

Meist ausgehend

Die Nachricht kann nicht entschlüsselt werden, weil das Zertifikat nicht passt oder der Verschlüsselungsalgorithmus nicht passt.

A10 - Handelt es sich um einen Netzwerkfehler?


Wie kann ein Netzwertfehler identifiziert werden?

Als Netzwerkfehler werden alle Fehler bezeichnet, bei denen eine Verbindung zur Gegenseite nicht aufgebaut werden kann.

Im Log gibt es die Zeile "try to connect to server", ab dort wird erstmal versucht die Gegenseite zu erreichen. Befindet sich gleich dahinter eine Fehlermeldung, handelt es sich um ein Netzwerkfehler.


Connection timed out
try to connect to server
error while trying to connect
java.net.ConnectException: Connection timed out: connect
at java.base/java.net.PlainSocketImpl.connect0(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) 


"Connection timed out: connect" bedeutet, dass die IP-Adresse von der Gegenseite bereits nicht erreichbar ist.

Der Verbindungsversuch wird nach einer bestimmten Zeit abgebrochen, ein Abbruch erfolgt meistens durch eine Netzwerkkomponente, aber nicht vom Integration Server.

Hier bitte alle beteiligten Firewalls prüfen!


Connection refused
try to connect to server
error while trying to connect
Java.net.ConnectException: Connection refused: connect


"Connection refused: connect" bedeutet, dass die Verbindung zur Gegenseite über die IP erreicht werden konnte, jedoch der Port nicht.

Die Ursachen können sein, dass der Port im Kanal nicht korrekt ist, der Port in der Firewall nicht offen ist oder dass der Port auf der Partnerseite nicht offen ist, weil z. B. die Anwendung auf der anderen Seite nicht läuft.

Folgende Fehler können darauf hinweisen, dass der Server auf der Gegenseite überlastet ist.


Read Timeout/IOException/EOFException
Read Timeout
IOException 
EOFException

A11 - Handelt es sich um einen HTTP-Fehler?


Ein HTTP-Fehler kann identifiziert werden, wenn in der Fehlermeldung ein HTTP-Statuscode auftaucht.

Hier eine Liste der gängigsten HTTP-Fehler in Verbindung mit AS2:


Code

Beschreibung

Ursache/Möglicher Fehler/Mögliche Lösung

401

unauthorized

Authentifizierung erforderlich. In seltenen Fällen wird eine Basic Authentication für AS2 gefordert.

Hierfür kann man in der Adresse die Anmeldung wie folgt angeben: <user>:<pw>@<IP>/partner/AS2Retrieve

403

forbidden

Der Integration Server hat keine Berechtigung auf den AS2-Service auf der anderen Seite zuzugreifen.

Code 403 kann auch erscheinen, wenn das Subject/Betreff der AS2-Nachricht nicht übereinstimmt!

404

not found

Die URL zum AS2-Service ist nicht korrekt, das Ziel kann nicht gefunden werden.

A15 - Bitte an den Partner wenden


Mit dem Partner Kanaleinstellungen, Zertifikat, Verschlüsselung/Signatur überprüfen.

Eingehende Verbindungen


E5 - Sind die Nachrichten im request.log ersichtlich?


Das Request-Log befindet sich in der GUI unter Control Center → Logs → Server-Logs → Http server oder in der Datei ./logs/request.log.

Anhand des Zeitstempels können Sie erkennen, wann der AS2-Request empfangen wurde. Gibt es zu der Zeit keinen Eintrag, kam kein AS2-Request am Integration Server an. Achtung: Im Request-Log wird die UTC-Zeit verwendet!

Offizielle AS2-Nachrichten sind immer an der POST-Methode und der IP-Adresse des Partners erkennbar. Als Pfadangabe muss der richtige AS2-URL-Pfad angegeben werden .../partner/AS2Retrieve

E6 - Sind die AS2-Nachrichten im Comm-Log ersichtlich?


Das Comm-Log befindet sich in der GUI unter Control Center → Logs → Comm-Log.

Dort ist erkennbar, ob es sich um eingehende oder ausgehende Nachrichten handelt.

Eine AS2-Nachricht besteht dabei immer aus einer Übertragung (Daten) und der MDN Bestätigung/Zurückgewiesen.


images/download/attachments/137301981/image-2023-5-24_9-47-8-version-1-modificationdate-1684914428864-api-v2.png

Eine automatisierte Benachrichtigung mittels Comm-Log-Event wird weiter unten beschrieben.

E7 - Welcher Status ist im Comm-Log ersichtlich?


Zurückgewiesen → Die MDN wurde an den Partner gesendet, allerdings mit einer Fehlermeldung. Diese können Sie in der MDN einsehen. Im Comm-Log sollte in der Spalte Datei ein Dokument zum Download zur Verfügung stehen.

Bestätigt → Die MDN wurde an den Partner gesendet und darin wurde eine erfolgreiche Übertragung gemeldet.

Siehe Punkt E6 (Screenshot unterer Teil).

E15 - Bitte an den Partner wenden


Kommen die Nachrichten nicht an Ihrer Firewall an, könnte es sein, dass der Partner die Nachrichten an eine falsche Adresse sendet oder seine Firewall die Nachricht blockiert. Oftmals wird auch Test- und Produktiv-System verwechselt!

E16 - An Ihre Infrastruktur wenden


Kommen die Nachrichten an der Firewall an, sind aber in der Datei ./logs/request.log nicht ersichtlich, liegt es zumeist an Firewall-Einstellungen, welche die Nachrichten nicht an den Integration Server weiterleitet.

E17 - AS2-Kanal ist nicht richtig konfiguriert oder nicht angelegt


Bitte überprüfen Sie zuerst, ob der Kanal angelegt und aktiv ist. Anschließend gleichen Sie (idealerweise mit dem Partner) die Kanaleinstellungen ab.

Die häufigsten Fehlerursachen sind vertauschte IDs oder eine falsche Adresse/Zertifikat/Verschlüsselungsalgorithmen.

E18 - Fehlermeldungen überprüfen/abgleichen


Siehe Punkt A7.

Sonstiges


Logs


Logs können bei der Fehlerfindung (und für unseren Support) sehr hilfreich sein! Hierzu können Sie auch einen Log-Extract über die GUI (Control CenterLogs Server Logs) durchführen.

  • ./logs/request.log
    Ist ein POST-Request der Gegenstelle im Log zu sehen?
    Hinweis: Wurde die AS2-Adresse per Browser aufgerufen, sollte es ein GET sein.

  • ./logs/as2/error.log & message.log
    Für AS2-spezifische Fehler.

  • ./logs/services/error.log & message.log
    Für Fehler im Message-Protokoll oder falls ein DMZ-Server im Einsatz ist.

Wann erscheint eine Nachricht unter "Unresolved" (nur für AS2)?

Eine Nachricht erscheint unter Unresolved, wenn


  • kein Profil für die Verarbeitung gefunden wurde,

  • eine Signaturprüfung erfolgreich war,

  • die Nachricht entschlüsselt werden konnte.


Eine Nachricht erscheint nicht unter Unresolved, wenn


  • die Signaturprüfung nicht erfolgreich war,

  • die Nachricht nicht entschlüsselt werden konnte.

Error Handling mittels Comm-Log-Event

Anbei ein Standardprofil, mit dem die Comm-Log-Einträge mit dem Comm-Log-Eingangsagenten ausgelesen werden können. Die Abfrage-Logik in Phase 3 muss hierbei noch ergänzt werden! H inweis: Profil funktioniert nur mit Version > 4.5!

Profile-ComLogCheck.pak

Empfehlung für Zertifikate

Wir empfehlen ganz allgemein auf AS2-Ebene möglichst selbst signierte Zertifikate zu verwenden, aus folgenden Gründen:

  • Sie sind verbreitet und werden auch von den "Großen", wie z. B. Amazon, akzeptiert.

  • Da sie selbst signiert sind, kann man deren Gültigkeitsdauer ohne Probleme auf 10+ Jahre legen, wodurch man sich den jährlichen Zertifikatswechsel erspart.

  • Wenn man aus Versehen einen privaten Schlüssel exportiert (AS2-Zertifikate werden häufig auf drittem Weg ausgetauscht), ist nicht viel Geld verloren.

Anderes


  • Andere Fehler könnten auch mit dem Umstieg auf eine neue Lobster/Java-Version zu tun haben. Hierfür bitte die java.security bzw. die hub.xml bezüglich Ciphers überprüfen!

  • Auf das Thema AS2 mit DMZ-Server wird hier noch nicht eingegangen. Bei AS2-Problemen in Verbindung mit einem DMZ-Server bitte den Lobster Support kontaktieren!

  • Bei eingehenden Nachrichten wird keine MDN an den Partner zurückgesendet.

    • Die Partneradresse ist nicht erreichbar.
      Da die Nachrichten aber teilweise erfolgreich durchgehen, würde man das hier nicht sehen, bzw. wenn, nur zeitweise Ausfälle auftreten.

    • Ihre DNS-Auflösung hat zeitweise Probleme.
      Prüfen Sie bitte mit Ihrer Infrastruktur, ob zu diesen Timestamps Probleme mit Ihrer DNS-Auflösung vorliegen. Dann könnte die Adresse nicht mehr aufgelöst und in weiterer Folge auch nicht erreicht werden.


Haben Sie Änderungsvorschläge oder Ideen zu dieser Seite, lassen Sie es uns wissen, indem Sie ein Ticket aufmachen!