Perché devo aggiungere certificati CA intermedi al file cacerts di JVM?

6

La mia azienda utilizza il proprio PKI. Il browser Web che utilizzo per accedere al repository di codice mostra una catena di certificati come segue:

Company Root CA
    Company Issuing CA Intranet Server
        Certificate to the code repository that I want to access

Tuttavia, quando provo ad accedere al repository usando Gradle, ottengo un

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

errore.

Gradle usa JVM. Ho esportato il certificato "CA radice aziendale" e l'ho aggiunto all'archivio certificati della JVM con il seguente comando:

"%JAVA_HOME%\bin\keytool.exe" -import -alias company_root_cacert -file "C:\path\to\company\root\cacert.cer" -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit

Tuttavia, questo non risolve il problema. Ho inoltre esportato il certificato "Azienda che rilascia il CA Intranet Server" e l'ho aggiunto all'archivio certificati della JVM con il seguente comando:

"%JAVA_HOME%\bin\keytool.exe" -import -alias company_intermediate_cacert -file "C:\path\to\company\intermediate\cacert.cer" -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit

Questo ha risolto il problema.

La mia domanda è: perché è stato necessario il secondo passaggio? Poiché il "Company Issuing CA Intranet Server" è firmato da "Company Root CA", e poiché ho "Company Root CA" nell'elenco dei certificati attendibili da JVM, perché ho dovuto aggiungere anche "Server di Intranet CA di emissione della società" "certificato per l'archivio certificati di JVM?

    
posta Utku 23.06.2017 - 11:57
fonte

2 risposte

6

Il problema che descrivi avviene di solito se il server invia solo il suo certificato foglia e non aggiunge tutti i certificati di catena necessari per creare la catena di fiducia nella CA radice. Sfortunatamente si tratta di un'errata configurazione dei server.

Molti browser desktop aggirano questo problema se già conoscono il certificato di catena mancante da visite precedenti o magari scaricano il certificato mancante se il certificato foglia contiene un URL per gli emittenti CA nell'accesso alle informazioni dell'autorità. Ma questo comportamento è solitamente limitato ai browser desktop e altri strumenti semplicemente falliscono perché non possono costruire la catena di fiducia.

    
risposta data 23.06.2017 - 12:18
fonte
6

Oracle JRE può scaricare automaticamente il certificato intermedio:

Support for the Authority Information Access (AIA) Extension

Support for the caIssuers access method of the Authority Information Access extension is available. It is disabled by default for compatibility and can be enabled by setting the system property com.sun.security.enableAIAcaIssuers to the value true.

If set to true, Sun's PKIX implementation of CertPathBuilder uses the information in a certificate's AIA extension (in addition to CertStores that are specified) to find the issuing CA certificate, provided it is a URI of type ldap, http, or ftp.

Note: Depending on your network and firewall setup, it may be necessary to also configure your networking proxy servers as described in the networking documentation.

(Fonte: Oracle, "Guida per programmatori Java PKI" .)

    
risposta data 23.08.2017 - 15:50
fonte

Leggi altre domande sui tag