
Last Updated on 22 Febbraio 2025 by Roberto De Pedrini
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 utilizzi SYSTOOLS.HTTPGETBLOB (Java)
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:
- Scaricare il certificato CA aggiornato
- Puoi ottenere il certificato CA direttamente dal sito della BCE:
- Apri il browser alla pagina : https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html
- Accedi tramite la barra indirizzi del browser alla gestione sicurezza/certificati
- Scendi fino al dettaglio certificati e scaricali sul tuo PC
- Puoi ottenere il certificato CA direttamente dal sito della BCE:
- Aggiungere il certificato al truststore di Java
- Carica i due certificati sul tuo IFS esemoio /mytempdir
- Verifica la versione di Java che stai utilizzando e individua la directory IFS dove presente il Keystore Java (ad esempio,
/QOpenSys/QIBM/ProdData/JavaVM/jdkXX/lib/security/cacerts
).- Da sessione SSH – Putty oppure QP2TERM/QSH eseguo il comando “java -version”
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;

Se utilizzi HTTP_GET (DCM)
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:
- Accedere al Digital Certificate Manager
- Collegati all’interfaccia web di IBM Digital Certificate Manager (DCM) all’indirizzo: http://myibmip:2006/dcm/mainframe/system
- Importare il certificato CA della BCE
- Per importare i certificati nell’area *SYSTEM del DCM di consiglio di seguire le ottime istruzioni che trovi sul sito di Bradley Stone
- Una volta installati i cerificati ritesta la tua query SQL con HTTP_GET:
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;

Conclusione
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.com