cacerts - Comprobación de fechas de caducidad de certificados en java keystore
keytool import trusted certificate (2)
Mi aplicación Java utiliza un archivo de almacén de claves en el que tengo un certificado que se utiliza en la conexión ssl con el servidor de directorio activo. Lo que tengo que hacer es verificar su fecha de vencimiento y preguntarle al usuario si está a punto de caducar. Tengo que hacerlo mientras mi aplicación comienza. Mi idea es usar un programa externo: keytool para mostrar información sobre cierto certificado en el almacén de claves y luego realizar algunas operaciones de análisis en una cadena, en la que se explican las salidas de keytool para encontrar esta fecha de validación.
Aquí está el resultado de un comando específico de keytool:
Owner:
Issuer: CN=CPD Root CA, DC=cpd, DC=local<br>
Serial number: 39e8d1610002000000cb
<br>Valid from: Wed Feb 22 21:36:31 CET 2012 until: Thu Feb 21 21:36:31 CET 2013
Certificate fingerprints: <br>
MD5: 82:46:8B:DB:BC:5C:64:21:84:BB:68:E3:4B:D4:35:70<br>
SHA1: 35:52:CA:F2:11:66:1E:50:63:BC:53:A5:50:C1:F0:1E:62:81:BC:3F<br>
Signature algorithm name: SHA1withRSA
El problema sería con la fecha de análisis, ya que no puedo estar seguro de en qué formato se muestra.
¿Hay alguna manera más fácil de verificar la fecha de vencimiento de los certificados incluidos en el archivo java keystore?
Utilice la clase java.security.Keystore para cargar el almacén de claves y enumerar sus contenidos, y comprobar que cada certificado caduque.
Gracias por la dirección EJP, aquí hay un bloque de lo que se me ocurrió.
try {
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(new FileInputStream("keystoreLocation"), "keystorePassword".toCharArray());
Enumeration<String> aliases = keystore.aliases();
while(aliases.hasMoreElements()){
String alias = aliases.nextElement();
if(keystore.getCertificate(alias).getType().equals("X.509")){
System.out.println(alias + " expires " + ((X509Certificate) keystore.getCertificate(alias)).getNotAfter());
}
}
} catch (Exception e) {
e.printStackTrace();
}