PKIX: errore nel creare un’applicazione Grails.

Spread the love
La non disponibiità di un certificato SSL è all'origine del "problema PXIX"
La non disponibiità di un certificato SSL è all’origine del “problema PXIX”

Voglio avvisarvi subito che non esiste in sé un “errore PKIX”. È soltanto un modo breve di descrivere una situazione in cui c’è un problema del client Grails (o a qualunque altro client) ad accedere ad un URL protetto da SSL.

Se vi capita di vedere questa sigla PKIX in un messaggio errore di Grails, si fa riferimento alla Public Key Infrastructure X.509, uno standard usato per definire il formato dei certificati a chiave pubblica (PKC) e delle autorità di certificazione (CA).

Significa che è sorto qualche problema nello stabilire la connessione cifrata SSL con lo storage da cui il client scarica il template dell’applicazione.

Mi è capitato in più di un contesto questo problema (ad esempio nella configurazione di un reverse proxy Apache), però il significato di un simile tipo di diagnostica risulta abbastanza chiaro nello specifico esempio che vi propongo.

Questo problema sorge subito quando si vuole avviare il client Grails:

$ grails

“PKIX path building failed” and “unable to find valid certification path to requested target”

Ciò che succede è che insorge un problema di sicurezza perché non ho tra i certificati SSL installati nella JVM quello di grails.org da cui il client cerca di scaricare il boilerplate dell’applicazione. Da qui l’errore PKIX.

La soluzione consiste nello scaricare e installare manualmente il certificato dal sito con Chrome o Firefox, e importarlo nel keystore della JVM

Passaggio 1

Scaricare il certificato: puntare il browser all’URL

https://repo.grails.org/grails/core

Una volta stabilita la connessione e visulizzato il sito, cliccare sul lucchetto a sinistra nella barra degli indirizzi; cliccare quindi su “Certificato”, su “Dettagli”, su “Esporta” e fare il download in una cartella che conosciamo, ad esempio Downloads. Questo per Chrome.

Per Firefox: cliccare sul lucchetto, quindi su “Connessione Sicura >”, su “Ulteriori informazioni”, su “Visualizza certificato”; quindi sulla tab repo.grails.org cliccare sul link “PEM (certficato) e selezionare l’opzione “Salva con nome”. Un po’ più laborioso.

Passaggio 2

Importare il certificato appena scaricato nella keystore della JVM: individuare dunque la directory della JVM, nel mio caso:

/usr/lib/java/jdk1.8.0_25/jre/lib/security

Il file dei certificati è cacerts

Lanciare l’importazione

$ sudo keytool -import -alias example 
   -keystore /usr/lib/java/jdk1.8.0_25/jre/lib/security/cacerts 
   -file /home/marcob/Downloads/repo.grails.org 

Keytools richiede la password del keystore che al primo utilizzo è changeit

[sudo] password di marcob: 
Immettere la password del keystore:  

Proprietario: CN=repo.grails.org
Emittente: CN=Sectigo RSA Domain Validation Secure Server CA, O=Sectigo Limited, L=Salford, ST=Greater Manchester, C=GB
Numero di serie: 2560fb52bfdc8f6bb2b3366805e3c911
Valido da: Fri Nov 13 01:00:00 CET 2020 a: Wed Dec 15 00:59:59 CET 2021
Impronte digitali certificato:
	 SHA1: D6:24:89:09:18:F1:39:E8:D6:6F:DF:EA:88:68:5C:BD:DB:2C:DF:F3
	 SHA256: 65:39:9F:7D:C3:09:D5:58:ED:E3:C3:82:59:98:BA:22:E2:8F:2D:65:6D:1E:F6:C3:51:55:9B:4F:14:9C:ED:A4
Nome algoritmo firma: SHA256withRSA
Algoritmo di chiave pubblica oggetto: Chiave RSA a 2048 bit
Versione: 3
...
Considerare sicuro questo certificato? [no]:  si
Il certificato è stato aggiunto al keystore

Una volta completato l’nserimento del certificato nel portachiavi si può avviare Grails dalla cartella del progetto:

$ grails create-app com.djamware.gadgethouse
| Application created at /home/marcob/IdeaProjects/java/gadgethouse
| Resolving Dependencies. Please wait…
| Starting interactive mode…
| Enter a command name to run. Use TAB for completion:
grails> run-app
| Running application…
...
Grails application running at http://localhost:8080 in environment: development

Fine.

PS: ho preso l’esempio da questo sito qui

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.