- 3. Februar 2011

SSL Webservices im SAP nutzen

Für die Anbindung von produktiven Webservices ist eine verschlüsselte Verbindung aus naheliegenden Gründen natürlich bevorzugt. Allerdings muss man für eine SSL-Verbindung einige Vorarbeiten leisten, die man auf Client-Seite (z.B. mit einem Internet Explorer) in der Regel nicht hat.

Z.B. möchte ein SAP-System im Trust-Manager genau die Stammzertifikate mitgeteilt bekommen, denen es Vertrauen darf. Hat man das nicht getan, tauchen in den Programmen Fehler wie „ICM_HTTP_INTERNAL_ERROR“ und im ICM-Log (Transaktion smicm->Springen->Trace Datei) folgende Fehlermeldungen auf:

[Thr 4832] *** ERROR during SecudeSSL_SessionStart() from SSL_connect()==SSL_ERROR_SSL
[Thr 4832] session uses PSE file „xxxSAPSSLC.pse“
[Thr 4832] SecudeSSL_SessionStart: SSL_connect() failed
secude_error 9 (0x00000009) = „the verification of the server’s certificate chain failed“
[Thr 4832] >> Begin of Secude-SSL Errorstack >>
[Thr 4832] ERROR in ssl3_get_server_certificate: (9/0x0009) the verification of the server’s certificate chain failed #
ERROR in af_verify_Certificates: (24/0x0018) Chain of certificates is incomplete : „OU=Class 3 Public Primary Certification Auth
ERROR in get_path: (24/0x0018) Can’t get path because the chain of certificates is incomplete #
[Thr 4832] << End of Secude-SSL Errorstack
[Thr 4832] SSL_get_state() returned 0x00002131 „SSLv3 read server certificate B“
[Thr 4832] SSL NI-sock: local=x.x.x.x:12345 peer=y.y.y.y:443
[Thr 4832] <<- ERROR: SapSSLSessionStart(sssl_hdl=000000000248AAF0)==SSSLERR_SSL_CONNECT
[Thr 4832] *** ERROR => IcmConnInitClientSSL: SapSSLSessionStart failed (-57): SSSLERR_SSL_CONNECT

Dieser Fehler wird auch in SAP Hinweis 1094342 beschrieben.

Für den Import der Stammzertifikate benötigt man diese in Dateiform. Dies geht relativ einfach mit dem Internet Explorer. Wichtig: Den IE als Administrator ausführen, ansonsten ist ein Zertifikatsexport in eine Datei nicht möglich.


Auf der Zielseite einen Doppelklick auf das Zertifikatssymbol.


Der Zertifikatspfad zeigt die notwendigen Stammzertifikate, die importiert werden müssen.


Für jeden Eintrag der Zertifikatskette muss man einmal „In Datei kopieren“ auswählen.


Dort vorzugsweise ein binär-codiertes Zertifikat verwenden. Das Base-64-Format, dass im Hinweis erwähnt wird, hat nicht funktioniert.

Der Importvorgang im SAP muss dann über die Transaktion STRUST in einer Client-PSE erfolgen. Je nach dem wie man den Aufruf macht, müssen die Zertifikate in andere PSEs importiert werden. Die genutzte PSE kann man z.B. in dem ICM-Log sehen. Die verwendete SAPSSLC.pse entspricht hier der „SSL-Client (Standard)“ im Trust-Manager.


Um das Zertifikat der Zertifikatsliste hinzuzufügen, auf „Zertifikat importieren“ gehen.


Die Datei auswählen und „Binär“ auswählen.


Danach das angezeigte Zertifikat in die Liste aufnehmen und sichern. Danach den ICM-Server durchstarten (smicm).

Nun sollte der Zugriff funktionieren. Wichtig ist, dass die Domain in der URL mit dem Common Name in dem Zertifikat übereinstimmt. Ansonsten gibt einen Fehler vergleichbar mit der IE-Zertifikatswarnung „Der Hostname stimmt nicht überein“, und die Verbindung schlägt fehl.

Im ICM-Log würde das so aussehen:

[Thr 1560] MatchTargetName(„t1234.example.com“, „CN=z99999.example.com, OU=Applications, O=“example.com, Inc.“, L=Hannover
[Thr 1560] SSL NI-sock: local=x.x.x.x:53253 peer=y.y.y.y:443
[Thr 1560] <<- ERROR: SapSSLSessionStart(sssl_hdl=000000000252FE20)==SSSLERR_SERVER_CERT_MISMATCH
[Thr 1560] *** ERROR => IcmConnInitClientSSL: SapSSLSessionStart failed (-30): SSSLERR_SERVER_CERT_MISMATCH {0003000b} [icxxconn

Tipp: In der SM59 eine „HTTP-Verbindung zu ext. Server“ anlegen, damit kann man in der Regel schneller testen, als jedes Mal den Webservice zu debuggen.

Jetzt das kostenlose E-Book zum Thema SAP Basis herunterladen:

Jetzt das kostenlose E-Book mit ausgewählten Fachartikeln herunterladen:




2 Kommentare zu "SSL Webservices im SAP nutzen"

ralf hakspiel - 13. November 2015 | 15:21

Vielen Dank für die Anleitung. Wie teste ich das dann mit SOAP UI?
Ich muss ja dann im SOAP UI irgendwo auch das Zertifikat mitgeben?

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.