Closed Ettore-Morasso closed 1 year ago
Ciao @Ettore-Morasso, non sono riuscito a replicare la problematica indicata.
Ho effettuato una prova utilizzando il pkcs12 presente nei test di govway che puoi trovare sul repository: ExampleClient1.p12. La token policy è stata configurata come nell'immagine che trovi di seguito.
L'errore che ottieni sono riuscito a riprodurlo solamente impostando effettivamente una password errata.
Ti prego quindi di verificare nuovamente la password indicata in fase di configurazione. Se ti risulta corretta dovresti realizzare un keystore pkcs12 di test che causa la problematica riscontrata ed allegarlo all'issue insieme ai dati di configurazione (alias, password ....) che utilizzi in modo da riuscire a replicare il problema.
Ciao, sono completamente sicuro della correttezza della password, il problema sembra essere proprio sul tipo keystore, infatti se faccio un .p12 (configurato anche come default nel file modipa_local.properties) tutto funziona correttamente, se invece lo stesso *.p12 lo import in un keystore (.jks) di tipo pkcs12 la password non viene riconosciuta. Il .p12 viene importato nel keystore con il seguente comando
keytool -v -importkeystore -srckeystore .\basilicata-self-pub-priv.p12 -alias basilicata-apigwco-stg-sign -srcstoretype PKCS12 -destkeystore basilicata-apigwco-stg-sign.jks -deststoretype pkcs12
Il certificato lì contenuto viene usato per firmare le jwt assertion con cui negoziare lo access_token dalla pdnd tramite token policy come spiegato qui: https://govway.org/documentazione/scenari/modipa/idauth_pdnd/fruizione_modipa_rest/configurazione.html
Quando definisco il tipo del keystore imposto pkcs12, ma ho anche provato a impostare jks... il risultato è sempre il medesimo.
La stessa configurazione (api, fruizione, applicativo, token policy) se utilizza un formato .p12 funziona senza problemi
Allego il keystore jks e i dati per aprirlo keystore-type-pkcs12.zip
Ciao @Ettore-Morasso , ti ringrazio per la configurazione fornita con la quale siamo riusciti a replicare la problematica da te riscontrata. L'errore si verifica solamente se viene utilizzato un keystore creato importando un archivio p12 al suo interno.
Ad esempio riferendomi sempre al keystore ExampleClient1.p12 la problematica si presenta se utilizzo un keystore ottenuto tramite il seguente comando:
keytool -importkeystore -srckeystore ExampleClient1.p12 -alias "ExampleClient1" -srcstoretype PKCS12 -destkeystore NuovoKeystore.p12 -deststoretype pkcs12 -deststorepass:file PWDTEST -destkeypass:file PWDTEST
In attesa del fix puoi usare uno dei seguenti workaround:
Ciao, grazie dell'informazione, per il momento userò il p12. Chiudo o volete segnalare in un secondo momento su questo issue il fix?
Ciao @Ettore-Morasso, puoi lasciare aperto l'issue.
Ciao a tutti. 😊
Sto incontrando lo stesso errore "keystore password was incorrect" configurando l'autenticazione server con keystore JKS sul connettore "SdIRiceviFile@CentroServiziFatturaPA v1", creato tramite govlet. La password inserita è corretta.
Potrebbe trattarsi dello stesso bug?
Buongiorno @kenayagi, per poter comprendere meglio la problematica riscontrata abbiamo bisogno delle seguenti informazioni:
Buongiorno @andreapoli
E grazie per la tua pronta risposta. 😊
La versione di GovWay è la 3.3.15, installata tramite Docker usando questo docker-compose.yml
In questo zip i log presenti in /var/log/govway.
L'errore si presenta anche usando lo stesso keystore riportato poco sopra in questo thread.
Il problema si verifica perché, nonostante l'estensione del file sia 'jks', il keystore è in realtà di tipo PKCS12. Questo è evidente, ad esempio, eseguendo il comando keytool.
keytool --list -keystore nome-keystore.jks
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
Se imposti il tipo di keystore corretto nell'autenticazione server la verifica dei certificati funziona correttamente.
Il problema si verifica perché, nonostante l'estensione del file sia 'jks', il keystore è in realtà di tipo PKCS12.
La situazione era in effetti identica anche sul mio keystore. Questione risolta. Grazie mille! 😊🙏 (E scusate se mi son intromesso in questa issue - credevo fosse inerente)
Descrizione del Bug Definendo in una fruizione, token policy o applicativo (il problema penso sia il medesimo anche per altri contesti quali erogazioni) un keystore di tipo pkcs12 da utilizzarsi per ad esempio firmare dei jwt govway va in errore:
(govway_connettori.log) ERROR <12-05-2023 10:29:22> <id:5a32e60c-f09d-11ed-9a80-0242ac130003 (id-busta:5a32e62c-f09d-11ed-9a80-0242ac130003> Errore avvenuto durante la consegna HTTP: keystore password was incorrect (sourceException: (Errore di Connessione) keystore password was incorrect) org.openspcoop2.pdd.core.connettori.ConnettoreException: (Errore di Connessione) keystore password was incorrect ... Caused by: org.openspcoop2.security.SecurityException: keystore password was incorrect ... Caused by: org.openspcoop2.utils.UtilsException: keystore password was incorrect ... Caused by: org.openspcoop2.utils.UtilsException: keystore password was incorrect ... Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2116) ~[?:?]
Come riprodurlo: Avviare govway, definire una api, definire una token policy che utilizzi il keystore o rimandi alla fruizione dove sarà definitio il keystore; inserire tutti i dati necessari al keystore (la porva è stata anche fatta con password che non contenessero caratteri speciali). Provare a consumare un endpoint definito
Risultato atteso: Il certificato contenuto nel keystore viene letto e usato correttamente con la password appropriata
Ambiente: