-
Webserice Client RPG aktuell an https erzeugt Fehler
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...)
PHP-Code:
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():
-
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
-
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...
-
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.
-
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...
-
Wie genau rufst du in RPG das WebService auf?
-
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...
PHP-Code:
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??
-
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?
-
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? :-)
-
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 /)_(\
-
Bei einer HTTPS Verbindung wird zuerst mal der SSL-Handshake durchgeführt.
Hierbei werden ein paar Aktionen getätigt:
* Es wird sich das höchst mögliche Verschlüsselungsprotokoll ausverhandelt (dies sollte eines der aktuellen TLS Versionen sein)
* Der höchst mögliche Chiffrieralgorithmus (Cipher) ausverhandelt (das wo z.B. RSA, SHA usw. im Text steht)
* Dann wird das Zertifikat geprüft
** Stimmt das Zertifikat mit dem Hostnamen überein (Wenn man hier die IP benützt, gibt es meistens ein Problem)
** Ist das Zertifikat allgemein gültig (self-signed, ablaufdatum usw.)
** Ist die Zertifikatsstelle (CA) im Keystore enthalten?
Bei den ersten beiden Punkten kann es auch sein, wenn eines der beiden Server nicht halbwegs aktuell ist und irgendwelche SSL/TLS Versionen oder Cipher verwendet, die vom anderen Server nicht unterstützt werden (weil schon sehr alt oder weil die Updates fehlen), kann es zu Problemen führen.
Normal hat jedes System eine sehr große Liste von unterstützten Cipher.
In den nicht so optimalen Programmen (sowohl Client als auch Server) gibt es auch die Möglichkeit die Version des Verschlüsselungsprotokolls oder den Cipher, hardcoded zu hinterlegen.
Das ist dann ganz super, wenn irgendwann diese nicht mehr unterstützt werden und die Software nicht angepasst wird.
Wenn auf eurer IBM i in der QSH OpenSSL installiert ist kannst du die Verbindung damit testen:
openssl s_client -connect prouza.at:https
Hier bekommst du alle Details zur SSL-Verbindung und dem Zertifikat.
Bei mir z.B.:
Verification: OK
Verify return code: 0 (ok)
Ich hoffe das liefert dir ein paar Anhaltspunkte.
lg Andreas
-
Hallo Andreas,
danke für die Hilfe. openSSL ist leider nicht bei uns installiert, wäre aber scheinbar klug dies nach zu installieren.
Danke dir!
Similar Threads
-
By Arnie in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 10-11-19, 14:00
-
By sauerm in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 09-03-18, 08:49
-
By jwolfart in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 12-04-14, 08:38
-
By Kirsten Steer in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 16-09-02, 11:31
-
By Arbi in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 25-09-01, 22:40
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks