Nel nostro blog, abbiamo già visto come scaricare i cambi della Banca Centrale Europea (BCE) con una semplice query SQL utilizzando SYSTOOLS.HTTPGETCLOB, integrandolo facilmente nel nostro sistema gestionale ERP. Per chi si fosse perso l’articolo, ecco il riferimento: Come scaricare i cambi BCE con SQL.
Tuttavia, di recente la BCE ha aggiornato i propri servizi, rendendo necessario l’aggiornamento dei certificati CA per continuare a ricevere i dati aggiornati. A seconda della metodologia utilizzata per il recupero dei cambi, sarà necessario intervenire su Java o sul Digital Certificate Manager (DCM).
Negli ultimi giorni diverse persone che seguono Faq400 mi hanno contattato proprio per questo problema: tra queste persone anche l’amico e grandeesperto in Java per ambiente IBM i Giovanni Paganelli, proprio grazie al suo aiuto sono qui oggi a darvi questa piccola guida per l’aggiornamento dei certificati sia nel caso che utilizziate HTTPGETCLOB (sicurezza Java) che HTTP_GET (sicurezza gestita con il DCM).
Se il tuo metodo di recupero si basa sulla funzione SQL SYSTOOLS.HTTPGETBLOB
, devi aggiornare i certificati Java per garantire una connessione sicura ai servizi BCE. Ecco i passi principali:
/QOpenSys/QIBM/ProdData/JavaVM/jdkXX/lib/security/cacerts
).
java -version
java version "1.8.0_421"
Java(TM) SE Runtime Environment (build 8.0.8.30 - pap6480sr8fp30-20240801_01(SR8 FP30))
IBM J9 VM (build 2.9, JRE 1.8.0 OS/400 ppc64-64-Bit Compressed References 20240703_73934 (JIT enabled, AOT enabled)
OpenJ9 - 177ad469d4e
OMR - e74814c
IBM - 3c87141)
JCL - 20240731_02 based on Oracle jdk8u421-b09
Avendo qui di una Java 8 a 64 bit, la posizione del keystore Java è
/QOPenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/lib/security
Importa i due certiticati con questi comandi:
keytool -import -file /mytempdir/SSL.comTLSECCRootCA2022.crt -alias CertAuth -keystore /QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/lib/security/cacerts -storepass changeit -noprompt
keytool -import -file /mytempdir/EntrustOVTLSIssuingECCCA1.crt -alias CertAuth -keystore /QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/lib/security/cacerts -storepass changeit -noprompt
Potresti anche otterenere un messaggio di warning di cerificato già presente ... ignoralo "errore keytool: java.lang.Exception: Certificato non importato, alias già esistente"
Verifica quindi l'installazione dei certificati:
keytool -list -keystore /QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/lib/security/cacerts -storepass changeit
A questo punto non resta che ritestare il nostro query SQL dopo aver rieffettuato la connessione al DB (e di riavviare eventuali servizi Java se il tuo ERP utilizza una JVM tramite servizio).
----------------------------------
--- CAMBI DA BCE
----------------------------------
select * from (
SELECT * FROM XMLTABLE ( XMLNAMESPACES
( DEFAULT 'http://www.ecb.int/vocabulary/2002-08-01/eurofxref' ,
'http://www.gesmes.org/xml/2002-08-01' AS "gesmes" ) ,
'gesmes:Envelope/Cube/Cube/Cube' PASSING XMLPARSE
( DOCUMENT SYSTOOLS.HTTPGETBLOB
('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml'
, ''))
COLUMNS currency CHAR(3) PATH '@currency',
rate REAL PATH '@rate',
time DATE PATH '../@time' ) AS ExchangeRates) x
where CURRENCY = 'USD'
-- and TIME <= :i_date
order by TIME DESC;
Già da qualche anno oltra ad HTTPGETCLOB abbiamo l’alternativa più prestante HTTP_GET, che non utilizza Java e si appoggia, per quanto riguarda la sicurezza, sui certificati del Digital Certificate Manager DCM:
select * from (
SELECT * FROM XMLTABLE ( XMLNAMESPACES
( DEFAULT 'http://www.ecb.int/vocabulary/2002-08-01/eurofxref' ,
'http://www.gesmes.org/xml/2002-08-01' AS "gesmes" ) ,
'gesmes:Envelope/Cube/Cube/Cube' PASSING XMLPARSE
( DOCUMENT (select http_get
('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml'
, '') from sysibm.sysdummy1))
COLUMNS currency CHAR(3) PATH '@currency',
rate REAL PATH '@rate',
time DATE PATH '../@time' ) AS ExchangeRates) x
where CURRENCY = 'USD'
-- and TIME <= :i_date
order by TIME DESC;
L’aggiornamento dei certificati è un’operazione cruciale per garantire la continuità operativa del recupero dei cambi valutari BCE.
Se utilizzi SYSTOOLS.HTTPGETBLOB
, aggiorna i certificati Java; se invece utilizzi HTTP_GET
, aggiorna il Digital Certificate Manager.
Questo semplice intervento ti permetterà di continuare a integrare i cambi BCE nel tuo ERP senza interruzioni.
Se hai domande o vuoi condividere la tua esperienza con l’aggiornamento, lascia un commento qui sotto!
--- Roberto De Pedrini Faq400.comCon questo post voglio consigliarti la lettura di questo articolo di Giancarlo Lui sulla TechXChange Community: IBM i System Management:…
Nel suo recente articolo "Option *convert in RPG Free" , Aldo Succi esplora l'opzione *CONVERT nel linguaggio RPG, evidenziando come…
Riceviamo e pubblichiamo ben volentieri questo "tip & trick" di Patrick Rizzi che presenta una tecnica che permette di intervenire…
Prendo spunto da una risposta di Michael Mayer sulle mailing list di Midrange.com a chi chiedeva come monitorare i messaggi…
Le imprese sono sempre più alla ricerca di strumenti che possano migliorare l'efficienza, la collaborazione e la gestione delle risorse.…
I primi di Aprile è uscita la "Spring Version" di ACS Access Client Solution, versione 1.1.9.5 Interessanti novità soprattutto in…