05a - Varie Web Service con IBM i

Aggiornamento Certificati CA per BCE: Guida Pratica

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
    • 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

  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

Recent Posts

IBM i: La gestione del sistema è più semplice di quanto pensi

Con questo post voglio consigliarti la lettura di questo articolo di Giancarlo Lui sulla TechXChange Community: IBM i System Management:…

3 mesi ago

RPG Free e option(*convert) per una migliore gestione parametri

Nel suo recente articolo "Option *convert in RPG Free" , Aldo Succi esplora l'opzione *CONVERT nel linguaggio RPG, evidenziando come…

3 mesi ago

Gestione dei file video bloccati su IBM i: una soluzione efficace

Riceviamo e pubblichiamo ben volentieri questo "tip & trick" di Patrick Rizzi che presenta una tecnica che permette di intervenire…

7 mesi ago

Monitoraggio Messaggi QSYSOPR: SQL per Ottenere Messaggi e Reply

Prendo spunto da una risposta di Michael Mayer sulle mailing list di Midrange.com a chi chiedeva come monitorare i messaggi…

7 mesi ago

Perché l’ERP è la Chiave del Successo per le Imprese Moderne

Le imprese sono sempre più alla ricerca di strumenti che possano migliorare l'efficienza, la collaborazione e la gestione delle risorse.…

9 mesi ago

ACS Access Client Solution 1.1.9.5

I primi di Aprile è uscita la "Spring Version" di ACS Access Client Solution, versione 1.1.9.5 Interessanti novità soprattutto in…

1 anno ago