bom dia,
tenho um certificado digital tipo A1, alguem sabe como fazer para pegar a data de validade do certificado (arquivo.pfx).
Gostaria de emitir uma mensagem de aviso quando faltar menos de 10 dias para vencer o certificado.
obrigado …
bom dia,
tenho um certificado digital tipo A1, alguem sabe como fazer para pegar a data de validade do certificado (arquivo.pfx).
Gostaria de emitir uma mensagem de aviso quando faltar menos de 10 dias para vencer o certificado.
obrigado …
Bom dia Pessoal,
Estou tentando recuperar um objeto X509Certificate mas estou recebendo uma exception:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate( new FileInputStream("C:\\Cert\\certificado.pfx"));
Exception in thread "main" java.security.cert.CertificateParsingException: signed fields invalid
at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1716)
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:179)
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:90)
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:305)
Será que o problema ocorre por ser um .pfx?
Grato.
Um arquivo .pfx está em formato PKCS#12 (contém a chave pública e a privada0, e generateCertificate requer um arquivo em formato X.509 (que contém apenas a chave pública).
Para carregar um arquivo PKCS#12, trate-o como se fosse um Keystore.
Dado um arquivo .pfx, pode-se obter os arquivos x.509 correspondentes (pode ser que ele contenha vários arquivos x.509, não somente 1) com várias ferramentas. Pode-se tentar usar o OpenSSL.exe, por exemplo.
Realmente como você disse:
Enumeration e = ks.aliases();
int x = 0;
for (; e.hasMoreElements();) {
String a = (String) e.nextElement();
Certificate certificado = (Certificate) ks.getCertificate(a);
X509Certificate cert = (X509Certificate) certificado;
}
Porém preciso somente da validade do certificado do meu cliente.
Pode me explicar melhor o procedimento com OpenSSL.exe.?
Use o comando “openssl pkcs12 help” para obter as opções para o que você quer fazer. Provavelmente você terá de usar algo como:
openssl pkcs12 -clcerts -in certificado.pfx -out certificado.cer
ou coisa parecida.
Consegui da seguinte forma:
String keystorefile = System.getProperty("javax.net.ssl.keyStore");
KeyStore keystore = KeyStore.getInstance(("PKCS12"));
keystore.load( new FileInputStream(keystorefile), "certificado".toCharArray());
Enumeration<String> e = keystore.aliases();
for (; e.hasMoreElements();) {
String a = (String) e.nextElement();
Certificate certificado = (Certificate) keystore.getCertificate(a);
X509Certificate cert = (X509Certificate) certificado;
setDataVencimento(cert.getNotAfter());
}
Grato pela ajuda.
[quote=nandobgi]Consegui da seguinte forma:
String keystorefile = System.getProperty("javax.net.ssl.keyStore");
KeyStore keystore = KeyStore.getInstance(("PKCS12"));
keystore.load( new FileInputStream(keystorefile), "certificado".toCharArray());
Enumeration<String> e = keystore.aliases();
for (; e.hasMoreElements();) {
String a = (String) e.nextElement();
Certificate certificado = (Certificate) keystore.getCertificate(a);
X509Certificate cert = (X509Certificate) certificado;
setDataVencimento(cert.getNotAfter());
}
Grato pela ajuda.
[/quote]
Caro amigo, poderia me informar como resolveu o seu problema?
Estou tentando achar algo para este exato problema e não consegui resultados positivos…
Preciso pegar a validade do certificado digital que se encontra instalado na maquina…
Att. Jonas
Alguém???
Tb estou precisando verificar a validade do certificado digital.
abs