05a - Varie Web Service con IBM i

Aggiornamento Certificati CA per BCE: Guida Pratica

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:

  1. Scaricare il certificato CA aggiornato

  1. 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:

  1. Accedere al Digital Certificate Manager
    • Collegati all’interfaccia web di IBM Digital Certificate Manager (DCM) all’indirizzo: http://myibmip:2006/dcm/mainframe/system
  2. Importare il certificato CA della 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 (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!

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

--- Roberto De Pedrini Faq400.com
About author

Founder di Faq400 Srl, IBM Champion, ideatore del sito Faq400.com e del Blog blog.faq400.com. Sviluppatore RPG da quando avevo i pantaloni corti, forte sostenitore della piattaforma IBM i (ex AS400), ho sempre cercato di convididere le mie conoscenze con gli altri tramite forum, eventi e corsi. Oggi, tramite Faq400 Srl, cerchiamo di aiutare le aziende a sfruttare al meglio questa fantastica piattaforma IBM i.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *