Anmelden

View Full Version : Digital Certificate Manager



KM
07-12-21, 15:12
Hallo,

durch die Verwendung von externen Webservices direkt von der IBM i aus, bin ich nun auch gezwungen mich mit dem "Digital Certificate Manager" auseinanderzusetzen, da ich darin die benötigten SSL-Zertifikate hinterlegen muss.
Teilweise klappt das auch so wie ich mir das vorgestellt habe, nämlich dass ich die Zertifikate aus dem Zertifizierungspfad des betreffenden externen Webservers als Zertifizierungsinstanzen in den DCM importiere. Oftmals funktioniert danach der jeweilige SSL-Handshake.

Aber in vielen Fällen funktioniert das leider nicht. Dann erhalte ich beim SSL-Handshake folgenden Fehler:


07/12/2021 15:12:40:115 00000039 transport X TCPChannel::doSSLHandshake(): Line=1002: File=/build/axiscpp/src/ws-axis/c/src/transport/TCPChannel/TCPChannel.cpp:
HTTPTransportException - CLIENT_SSLCHANNEL_CHANNEL_INIT_ERROR: Failed to establish SSL connection to server, the operation gsk_secure_soc_init() failed.
GSKit Error is 6000 - Das Zertifikat wurde nicht von einer anerkannten Zertifizierungsinstanz signiert.

Kann mir jemand sagen wo hier das Problem liegt? Kann es sein, dass der DCM hier ziemlich buggy ist? Oder muss ich im DCM noch andere Einstellungen vornehmen?

Viele Grüße,
KM

manuel.marcos
08-12-21, 14:12
Wir hatten vor einiger Zeit mal die gleiche Meldung obwohl passendes Zertifikat hinterlegt war. Nach etwas Recherche stellte sich heraus das Axis nur "SNI CRITICAL" akzeptiert. Gab glücklicherweise aber schon kurz zuvor veröffentlichten Fix von IBM.
Schau mal ob du beim axiscTransportSetProperty den AXISC_PROPERTY_HTTP_SSL_SNI_CRITICAL auf false setzen kannst, Default ist true.
https://www.ibm.com/support/pages/apar/SE75710

Gruß,
Manuel

KM
08-12-21, 14:52
Hallo Manuel,

ich hab das zugehörige PTF jetzt installiert und die Property entsprechend auf "false" gesetzt. Das hat aber leider an dem Problem nichts geändert.

Trotzdem Danke für den Hinweis!

Viele Grüße,
KM

Andreas_Prouza
08-12-21, 18:07
Hallo,
Normalerweise sollte das genau so funktionieren wie du es gemacht hast.
Was ich mir nur vorstellen könnte wäre, dass da mehrere WebService Server vorhanden sind, die eine Art load balancer betreiben.
Normal sollte das keinen Unterschied machen, wenn du wirklich das Root-Zertifikat im DCM hinterlegt hast.
Dann sollten alle Zertifikate, die mit dem Root-Zertifikat signiert sind, aktzeptiert werden.
Falls nicht, dann ist es eine Glückssache, ob du eine Verbindung zu genau dem Server aufbaust, für das du das Zertifikat hinterlegt hast.

Du könntest auch in der QSH via OpenSSL die Verbindung prüfen. Dieser macht auch ein Zertifikats-Check:
openssl s_client -connect www.prouza.at:443

Ist jetzt nur die Frage wie oft das Problem auftritt und ob du den openssl öfters ausführen musst um den entsprechenden Fehler zu finden.
Das schöne beim openssl ist, dass er dir dann auch gleich die Zertifikats-Kette anzeigt und du das entsprechende rauskopieren und in den DCM importieren kannst.

lg Andreas