validar una solicita sistema servidor seguridad revocación revocacion revoca restricciones realizar puede porque por podido para listas lista iniciar firma error ejecutara crl conexión comprobar comprobacion certificados certificado bloqueada aplicacion aparece acceso java certificate keystore

una - porque aparece aplicacion bloqueada por la seguridad de java



¿Cómo puedo obtener una lista de certificados raíz de confianza en Java? (2)

Me gustaría poder acceder a todos los certificados raíz de confianza mediante programación en una aplicación Java.

Estaba mirando la interfaz del almacén de claves, pero espero obtener la lista de raíces de confianza que está implícita con el JRE.

¿Es accesible en cualquier lugar?


Esto debería ser más flexible utilizando el almacén de confianza predeterminado en el sistema para obtener todos los certificados:

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); List<Certificate> x509Certificates = new ArrayList<>(); trustManagerFactory.init((KeyStore)null); Arrays.asList(trustManagerFactory.getTrustManagers()).stream().forEach(t -> { x509Certificates.addAll(Arrays.asList(((X509TrustManager)t).getAcceptedIssuers())); });

`` `


Hay un ejemplo que muestra cómo obtener un conjunto de certificados raíz e iterar a través de ellos. Enumerar las autoridades de certificación (CA) de mayor confianza en un almacén de claves . Aquí hay una versión ligeramente modificada que imprime cada certificado (probado en Windows Vista).

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.InvalidAlgorithmParameterException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.PKIXParameters; import java.security.cert.TrustAnchor; import java.security.cert.X509Certificate; import java.util.Iterator; public class Main { public static void main(String[] args) { try { // Load the JDK''s cacerts keystore file String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace(''/'', File.separatorChar); FileInputStream is = new FileInputStream(filename); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); String password = "changeit"; keystore.load(is, password.toCharArray()); // This class retrieves the most-trusted CAs from the keystore PKIXParameters params = new PKIXParameters(keystore); // Get the set of trust anchors, which contain the most-trusted CA certificates Iterator it = params.getTrustAnchors().iterator(); while( it.hasNext() ) { TrustAnchor ta = (TrustAnchor)it.next(); // Get certificate X509Certificate cert = ta.getTrustedCert(); System.out.println(cert); } } catch (CertificateException e) { } catch (KeyStoreException e) { } catch (NoSuchAlgorithmException e) { } catch (InvalidAlgorithmParameterException e) { } catch (IOException e) { } } }