Pegar data validade do certificado digital .pfx

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 …

http://java.sun.com/javase/6/docs/api/java/security/cert/X509Certificate.html#getNotAfter()

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