Pagina 1 di 1

Java: multiplo cacerts

Inviato: dom mar 24, 2019 13:03
da ZeroUno
In un server di produzione mi è capitata una cosa brutta.

Un'applicazione java.
Running openjdk.
L'applicazione effettua connessioni https verso un webserver in cui il certificato non è generato con una rootca mondiale ca interna.
Quindi abbiamo importato la ca interna nel cacerts e buonanotte.

Successivamente abbiamo fatto il patching dei sistemi periodico e questo ha aggiornato openjdk e quindi sovrascritto il cacerts aggiungendo nuove rootca ma rimuovendo le custom.
Ovviamente non funzionava più l'applicazione.

Nessun problema ; reimportata la ca tutto ha ripreso a funzionare ma ci ha fatto sbattere la testa.


C'è un modo di dire alla jvm di usare - per il trust delle ca - due o più cacerts? No di sistema per le rootca e un'altro per quelle custom?

Re: Java: multiplo cacerts

Inviato: sab apr 06, 2019 6:38
da hashbang
No, Java usa o il cacerts della JRE o il jks che tu passi nella command line. Il parametro javax.net.ssl.trustStore non prevede argomenti multipli. Quando lo chiami fa override del valore di default.

Hai due strade per risolvere il problema:
1) Copi il cacerts di Java, inserisci la tua root ca interna e usi quello per il tuo webserver. Così sei indipendente dal patching, per lo meno fino a che le CA all'interno del tuo keystore clone rimangono valide; ma data la validità media di una CA, avresti comunque risolto per i prossimi dieci anni, probabilmente.
2) Usi un jks puntuale con solo la ca interna.

Secondo me, se non hai una reale necessità delle CA esterne, non c'è bisogno di usare il cacerts.
Per dirti, da noi abbiamo tutti jks puntuali. I nostri agenti di Jenkins girano con un cacerts custom che ha solo la root ca interna. E così tante altre cose che usiamo.