PDA

View Full Version : Webserice Client RPG aktuell an https erzeugt Fehler



Seiten : [1] 2

SiS2020
31-03-20, 08:50
Moin,
bin leider mit meinem griechisch (latein ist langweilig) am Ende.
Bekomme folgenden Log Datei Inhalt, wenn ich versuche, eine https://... Verbindung aufzubauen.
Kann mich da irgendwer auf die richtige Spur setzen???
(ich habe keinen Zeitdruck...ich doch nicht...:rolleyes:)


30/03/2020 17:14:07:280 00004502 transport < TCPChannel::open():
30/03/2020 17:14:07:281 00004502 transport > TCPChannel::doSSLHandshake():
30/03/2020 17:14:07:281 00004502 transport > TCPChannel::createGSKitEnvironment():
30/03/2020 17:14:07:281 00004502 transport D TCPChannel::createGSKitEnvironment(): Attempting to set keyring file using ''
30/03/2020 17:14:07:282 00004502 transport D TCPChannel::createGSKitEnvironment(): Enabled SSLV2
30/03/2020 17:14:07:282 00004502 transport D TCPChannel::createGSKitEnvironment(): Enabled SSLV3
30/03/2020 17:14:07:283 00004502 transport D TCPChannel::createGSKitEnvironment(): Enabled TLSV1
30/03/2020 17:14:07:283 00004502 transport D TCPChannel::createGSKitEnvironment(): Enabled TLSV11
30/03/2020 17:14:07:283 00004502 transport D TCPChannel::createGSKitEnvironment(): Enabled TLSV12
30/03/2020 17:14:07:284 00004502 transport D TCPChannel::createGSKitEnvironment(): Failed to initialize the SSL environment: GSKit Error is 202 - Die Schlüsseldatenbankdatei wurde nicht gefunden.
30/03/2020 17:14:07:284 00004502 transport < TCPChannel::createGSKitEnvironment(): Exit with return code of AXIS_FAIL
30/03/2020 17:14:07:284 00004502 transport X TCPChannel::doSSLHandshake(): Line=855: File=/build/axiscpp/src/ws-axis/c/src/transport/TCPChannel/TCPChannel.cpp:
HTTPTransportException - SERVER_TRANSPORT_CHANNEL_INIT_ERROR: GSKit Error is 202 - Die Schlüsseldatenbankdatei wurde nicht gefunden.
30/03/2020 17:14:07:284 00004502 transport < TCPChannel::doSSLHandshake():
30/03/2020 17:14:07:285 00004502 engine < axiscTransportFlush():
30/03/2020 17:14:07:285 00004502 engine > axiscTransportReceive():

andreaspr@aon.at
31-03-20, 09:05
Guten Morgen!

"Schlüsseldatenbankdatei wurde nicht gefunden." Klingt danach als ob er keinen Keystore mit den Trusted Certificates finden könnte.
Habt ihr einen System-Keystore angelegt? Am besten geht das über den DCM. Im Navigator for i kommst du dort hin. Oder via http://host:2001/QIBM/ICSS/Cert/Admin/qycucm1.ndm/main0

Hier sollten im *SYSTEM key store alle offiziellen Zertifizierungsinstanzen enthalten sein, damit die offiziellen Zertifikate erlaubt sind.
Falls dein HTTPS ein self signed certificate ist, dann musst du dieses ebenfalls in deinen Keystore hinzufügen.

lg Andreas

SiS2020
31-03-20, 09:12
Hallo Andreas,

sorry, aber geht es etwas genauer? Kann ich den *System key store einfach so anlegen? Hat das Seiteneffekte? Was muss ich dabei beachten? Für mich ist das Thema keystore völlig neu....
Das ist übrigens ein DHL track and trace Aufruf...

andreaspr@aon.at
31-03-20, 13:19
Für einen erfolgreichen SSL Handshake muss (als einer von mehreren Steps) das Zertifikat geprüft werden.
Jeder Browser (Firefox, Chrom) aber auch diverse Clients, wie z.B. wenn du mit Java oder RPG auf ein WebService via HTTPS zugreifen willst, muss auf einen Keystore zugreifen können um das Zertifikat zu prüfen.

Im Windows gibt es einen System-Keystore, manche jedoch haben auch einen eigenen (z.B. Java).
In diesem Keystore ist die sogenannten Root-Zertifikate drinnen.
Eines dieser Root-Zertifikate ist DST Root CA X3.
Ich habe für meine eigene homepage (https://www.prouza.at) ein Zertifikat von Let's Encrypt ausstellen lassen. Die haben übergeordnet DST Root CA X3.
Jeder "Standard" Keystore im Windows, Java oder auch IBM i das Zertifikat von DST Root CA X3 enthalten.
Dadurch werden automatisch alle Zertifikate aktzeptiert, die dieses als Root Zert. besitzen.

Im DCM kannst du den *SYSTEM Speicher ohne weiteres anlegen.
Wenn du im RPG dann deinen Web Service Aufruf machst, sollte zumindest dieses Problem einmal gelöst sein.

SiS2020
07-04-20, 16:26
Der *System key store ist anglegt. Auch des DHL Zertifikat ist dort eingetragen.
Das ändert aber leider gar nichts an der Fehlermeldung. Diese kommt nach wie vor.
Ich bitte um andere Vorschläge.
Es ist wirklich dringend...

andreaspr@aon.at
08-04-20, 07:02
Wie genau rufst du in RPG das WebService auf?

SiS2020
15-04-20, 09:13
gestern noch stand ich am Abgrund...jetzt bin ich inzwischen etwas weiter...
Mir fehlte noch der Aufruf für axiscTransportSetProperty für das Property AXISC_PROPERTY_HTTP_SSL.
Hier habe ich dann die Keyring Datei eingetragen...und jetzt bekomme ich den nächsten Fehler...
15/04/2020 09:51:02:227 00012485 transport > TCPChannel::close():
15/04/2020 09:51:02:228 00012485 transport < TCPChannel::close():
15/04/2020 09:51:02:228 00012485 transport < HTTPTransport::closeConnection():
15/04/2020 09:51:02:229 00012485 transport > TCPChannel::open():
15/04/2020 09:51:02:229 00012485 transport D TCPChannel::open(): Connecting to: cig.dhl.de:443
15/04/2020 09:51:02:290 00012485 transport < TCPChannel::open():
15/04/2020 09:51:02:290 00012485 transport > TCPChannel::doSSLHandshake():
15/04/2020 09:51:02:291 00012485 transport > TCPChannel::createGSKitEnvironment():
15/04/2020 09:51:02:291 00012485 transport D TCPChannel::createGSKitEnvironment(): Attempting to set keyring file using '/QIBM/USERDATA/ICSS/CERT/SERVER/DEFAULT.KDB'
15/04/2020 09:51:02:292 00012485 transport D TCPChannel::createGSKitEnvironment(): Enabled SSLV2
15/04/2020 09:51:02:292 00012485 transport D TCPChannel::createGSKitEnvironment(): Enabled SSLV3
15/04/2020 09:51:02:292 00012485 transport D TCPChannel::createGSKitEnvironment(): Enabled TLSV1
15/04/2020 09:51:02:293 00012485 transport D TCPChannel::createGSKitEnvironment(): Enabled TLSV11
15/04/2020 09:51:02:293 00012485 transport D TCPChannel::createGSKitEnvironment(): Enabled TLSV12
15/04/2020 09:51:02:294 00012485 transport < TCPChannel::createGSKitEnvironment(): Exit with return code of AXIS_SUCCESS
15/04/2020 09:51:02:345 00012485 transport > TCPChannel::close():
15/04/2020 09:51:02:346 00012485 transport < TCPChannel::close():
15/04/2020 09:51:02:346 00012485 transport X TCPChannel::doSSLHandshake(): Line=958: File=/build/axiscpp/src/ws-axis/c/src/transport/TCPChannel/TCPChannel.cpp:
HTTPTransportException - SERVER_TRANSPORT_SOCKET_CONNECT_ERROR: Failed to open connection to server, the operation gsk_secure_soc_init() failed.
GSKit Error is 6000 - Das Zertifikat wurde nicht von einer anerkannten Zertifizierungsinstanz signiert.
15/04/2020 09:51:02:346 00012485 transport < TCPChannel::doSSLHandshake():
15/04/2020 09:51:02:347 00012485 engine < axiscTransportFlush():
15/04/2020 09:51:26:066 00012485 engine > axiscTransportReceive():
15/04/2020 09:51:26:067 00012485 engine D axiscTransportReceive(): user buffer length is 65535
15/04/2020 09:51:26:067 00012485 engine D axiscTransportReceive(): reading transport data
15/04/2020 09:51:26:067 00012485 transport > HTTPTransport::getBytes():
15/04/2020 09:51:26:068 00012485 transport D HTTPTransport::getBytes(): number of bytes to read is 65536
15/04/2020 09:51:26:068 00012485 transport D HTTPTransport::getBytes(): GetBytesState: eWaitingForHTTPHeader
15/04/2020 09:51:26:069 00012485 transport D HTTPTransport::getBytes(): No data to read, so read HTTP header
15/04/2020 09:51:26:069 00012485 transport > HTTPTransport::readHTTPHeader():
15/04/2020 09:51:26:069 00012485 transport > HTTPTransport::resetInputStateMachine():
15/04/2020 09:51:26:070 00012485 transport < HTTPTransport::resetInputStateMachine():
15/04/2020 09:51:26:070 00012485 transport > TCPChannel::readBytes():
15/04/2020 09:51:26:070 00012485 transport X TCPChannel::readBytes(): Line=398: File=/build/axiscpp/src/ws-axis/c/src/transport/TCPChannel/TCPChannel.cpp:
HTTPTransportException - SERVER_TRANSPORT_INVALID_SOCKET: Unable to perform read operation.
15/04/2020 09:51:26:071 00012485 transport < TCPChannel::readBytes():
15/04/2020 09:51:26:071 00012485 engine < axiscTransportReceive():
15/04/2020 09:51:37:335 00012485 engine > axiscTransportDestroy():

...und wieder steh' ich da wie blöd....
warum steht in der Fehlermeldung nicht einfah mal drin, welches Zertifikat gemeint ist??
Was fehlt denn jetzt noch??

MederA
02-06-21, 15:34
Hallo, ich steh vor dem selben Problem und könnte Hilfe gebrauchen!
Den *SYSTEM Keystore hab ich angelgt.. Aber wie geht es weiter?

Wir haben jetzt erst angefangen mit der AXIS Api zu arbeiten. Diese nutze ich für meinen Zugriff auf einen REST-Service vom Kunden.
Das setzen der HTTP Properties funktioniert nun, jedoch bekomme ich beim Request senden auch den SSL-Fehler.

Hilfe?

Andreas_Prouza
02-06-21, 16:07
Wie machst du den HTTP Request? Via RPG, SQL?
Wie ist die Verbindung, von der IBM i zu einem externen Server?
Ist das Zertifikat ein Self-Signed Zertifikat?

Antwort? :-)

MederA
04-06-21, 06:54
Guten morgen,

Ich mach den HTTP Request via RPG.
Das Zertifikat ist kein Self-Signed, sondern soweit ich weiß ist es ein Standard Zertifikat. Der Zugriff auf die Api über Postman funktioniert einwandfrei..
Das mit der Verbindung von der IBMi zum externen Server musst du mir genauer erklären... Für mich sind das böhmische Dörfer /)_(\