Java CertPath example: read CertPath from file 

Joined:
07/27/2010
Posts:
128

May 24, 2011 09:15:14    Last update: May 24, 2011 09:15:14
Java built-in X.509 certificate factory reads CertPath objects encoded in PkiPath or PKCS7 formats. The META-INF/<key_alias>.RSA file generated by Java jarsigner is in PKCS7 format.

Example code:
import java.util.*;
import java.io.*;
import java.security.cert.*;

public class ReadCertPath {
    public static void main(String[] args) throws Exception {
	ReadCertPath r = new ReadCertPath();
	r.readCertPath(new File("CertPathInPKCS7.pem"));
    }

    public void readCertPath(File f) throws Exception {
	CertificateFactory cf = CertificateFactory.getInstance("X.509");
	InputStream in = new FileInputStream(f);
	CertPath certPath = cf.generateCertPath(in, "PKCS7");
	in.close();

	List<?extends Certificate> certs = certPath.getCertificates();
	for (Certificate cert: certs) {
	    System.out.println("Cert:\n===================\n" + cert.toString() + "\n");
	}
    }
}


PKCS7 files can also be generated by openssl from certificate file(s):
openssl crl2pkcs7 -nocrl -certfile Certs.pem -out certs.pk7 -outform der


Convert PKCS7 from DER to PEM:
openssl pkcs7 -in certs.pk7 -inform DER -out certs.pem -outform PEM


Sample PKCS7 file:
-----BEGIN PKCS7-----
MIIERwYJKoZIhvcNAQcCoIIEODCCBDQCAQExADALBgkqhkiG9w0BBwGgggQaMIIB
5TCCAU6gAwIBAgIETHbZXzANBgkqhkiG9w0BAQUFADA3MQswCQYDVQQGEwJVUzEQ
MA4GA1UEChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzAeFw0xMDA4
MjYyMTE1MTFaFw0xMTA4MjYyMTE1MTFaMDcxCzAJBgNVBAYTAlVTMRAwDgYDVQQK
EwdBbmRyb2lkMRYwFAYDVQQDEw1BbmRyb2lkIERlYnVnMIGfMA0GCSqGSIb3DQEB
AQUAA4GNADCBiQKBgQCZ7BuGdUN0W28Uu8zECnFQ8RX6MlNuavqWZNFK6dVfOrs1
b95UhqATDoPESWJi8AvnVthm7lJdTbFKb5AP7oR162kRTCxQcteQT3z7ZbHCxLVV
etqQhzzfy8AHAnTyBpSYNbqoP1OKlxczD7scR3oaVkoedUqH9bkwjLPNhCV+NQID
AQABMA0GCSqGSIb3DQEBBQUAA4GBAJJ8aQibmBC0uTXMzvPU9R023QK9xlkjIq4O
Ti6Z7z6o+ND6gWuCC1PLdWgug14vwEaWKkNiNgpWL+VXTX4JGGS3tBPnNLNwRuoq
pftG/+ooBs1YWe0ilo63oal+udscklL5lnMWlJ+fNL00X3kayEKhLL1xvK9uc4OT
Hod3CrmfMIICLTCCAZYCCQDqN/hYgXobVjANBgkqhkiG9w0BAQUFADA3MQswCQYD
VQQGEwJVUzEQMA4GA1UEChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1
ZzAeFw0xMTA1MTgxODI0MDJaFw0xMjA1MTcxODI0MDJaMH8xCzAJBgNVBAYTAlVT
MQswCQYDVQQIEwJUWDETMBEGA1UEBxMKUmljaGFyZHNvbjEdMBsGA1UEChMUSm9l
J3MgRmx5aW5nIFNhdWNlcnMxHTAbBgNVBAsTFEpvZSdzIEZseWluZyBTYXVjZXJz
MRAwDgYDVQQDEwdJVCBEZXB0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm
MsR0CvyVljOU7hOk2ilWTN3ARlhqje9QZcmWaAS64S6Wnfd9ie3S8/RcMH3g2RXY
FXfqLvnHFmFW7opb2TCrRYjseLE8KolKapOoDYxLATDtJgGveTcc0FN8ruS7/iXX
/2ddBELoBOW+TjFPP02wX+RjbDR1yaHKDCjs8pkmGwIDAQABMA0GCSqGSIb3DQEB
BQUAA4GBAJdQ1WrpdsmmeRgsbfu9LYrR2dAvihNGBXG0lpPjewKaKAM9CqBWYhLH
ZhBWWOmCRpteyZgr3aJ9Ve34Y3tQ/1JAy9BWu/mCd+dfcSJaO1dA5laMOjzLHKbx
ChAn3uhFVujEQfZN3cnmi6OK44yDwk24sB6+FLMwwtfANjEKnjVToQAxAA==
-----END PKCS7-----
Share |
| Comment  | Tags