Ola TheKill,
Existe meios de você obter a validade de um certificado em java. Uma forma seria obtendo um X509Certificate do seu certificado, e assim obter a data de vencimento.
Um exemplo seria assim:
Aqui carrego o certificado:
try {
entrada = new FileInputStream(ParametroTotem.caminhoCertificadoDigital);
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(entrada, senhaCertificado.toCharArray());
} catch (IOException IOEx) {
JOptionPane.showMessageDialog(null, "Não foi possivel carregar o certificado! Verifique o caminho ou a senha do certificado!");
}
KeyStore.PrivateKeyEntry pkEntry = null;
Enumeration aliasesEnum = ks.aliases();
PrivateKey privateKey = null;
while (aliasesEnum.hasMoreElements()) {
String alias = (String) aliasesEnum.nextElement();
if (ks.isKeyEntry(alias)) {
pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(senhaCertificado.toCharArray()));
privateKey = pkEntry.getPrivateKey();
break;
}
}
E aqui eu verifico a validade:
public static boolean getValidade(X509Certificate cert) {
try {
cert.checkValidity();
return true;
} catch (CertificateExpiredException e) {
JOptionPane.showMessageDialog(null, "Certificado expirado! Seu Certificado já venceu\nentre em contato com uma unidade certificadora\ne renove seu certificado!", "Validação do Certificado", JOptionPane.ERROR_MESSAGE);
return false;
} catch (CertificateNotYetValidException e) {
JOptionPane.showMessageDialog(null, "Certificado inválido!", "Validação do Certificado", JOptionPane.ERROR_MESSAGE);
return false;
}
}
Ou assim:
public static void getValidade(X509Certificate cert) {
int diasParaVencer = UtilitarioData.getDiferencaEntreDatas(UtilitarioData.getDataInicial(UtilitarioData.getDataHoraAtual()), cert.getNotAfter());
if (diasParaVencer <= 30) {
JOptionPane.showMessageDialog(null, "Falta(m) " + diasParaVencer + " dia(s) para vencer o certificado!", "Validação do Certificado", JOptionPane.ERROR_MESSAGE);
}
}
Os métodos que você provavelmente ira usar são:
cert.getNotAfter();
cert.checkValidity();
Existe um método que ainda não usei:
cert.checkValidity(Date data);
Qualquer duvida posta pra gente.
vlw!