Ubuntu 17.10 Java 8 Error de certificado

10

Tengo una nueva instalación de Ubuntu 17.10, en la que instalé el paquete oracle-java8-installer (de PPA).

Pero cuando intento compilar un proyecto iónico usando "iónico cordova build android", arroja este error:

    Exception in thread "main" 
    javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1899)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1420)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:60)
        at org.gradle.wrapper.Download.download(Download.java:45)
        at org.gradle.wrapper.Install$1.call(Install.java:62)
        at org.gradle.wrapper.Install$1.call(Install.java:48)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
    Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:91)
        at sun.security.validator.Validator.getInstance(Validator.java:179)
        at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312)
        at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:171)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:184)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:961)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
        ... 14 more
    Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
        at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:120)
        at java.security.cert.PKIXBuilderParameters.<init>
    (PKIXBuilderParameters.java:104)
        at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:89)
        ... 26 more

Estoy conectado a internet e intenté:

$ sudo update-ca-certificates -f
$ sudo apt install --reinstall ca-certificates-java

... y también reinstalar npm, ionic, java y gradle, todo sin éxito.

editar: También tengo ANDROID_HOME y JAVA_HOME exportados en .bashrc, y Android Studio instalado. He intentado construir el proyecto en una máquina diferente y funciona bien. No puedo intentar usar OpenJDK porque no funciona bien con Android Studio.

Leonardo Amorim
fuente

Respuestas:

26

Tratar

sudo dpkg --purge --force-depends ca-certificates-java

seguido por

sudo apt-get install ca-certificates-java

para arreglar los cartuchos rotos.
Para mí, esto lo solucionó.
¡Buena suerte!

Zod
fuente
¡También funcionó para mí para openjdk-9! ¿Alguna explicación de por qué esto funciona cuando --reinstally la ejecución manual de la secuencia de comandos postinstall no lo hizo? Estoy muy interesado para futuras referencias. ¡Gracias!
Andy
1
DIOS MIO. He estado buscando esta respuesta durante semanas. Cualquier otra respuesta a esta pregunta que he encontrado no hizo nada, absolutamente nada. Esto funcionó perfectamente. Algo parece bastante roto con estos certificados en Ubuntu 17.10.
Dan
Arreglado Jenkins en 17.10 también. Gracias (y votado)
Forbesmyester
Muchas gracias trabajaron para mí con gradle (4.5.1) y open-jdk-9. Sin embargo, no funcionó con el oráculo-jdk-9.
Pabi
Solución para Ubuntu 18.04. Instalé openjdk versión 11. Debido a Android tuve que instalar adicionalmente openjdk 8. Por alguna razón desconocida, el archivo cacerts instalado por openjdk 11 no funciona con openjdk 8. Tuve que desinstalar ambos jdks e instalar solo la versión 8 y luego regenerar los cacerts archivo.
Greg Dan