Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

Export a Certificate's Private Key to Various Formats

See more Certificates Examples

Loads a digital certificate and private key from a PFX file (also known as PKCS#12) and exports the private key to various formats: (1) PKCS8 Encrypted, (2) PKCS8 Encrypted PEM, (3) PKCS8 unencrypted, (4) PKCS8 PEM unencrypted, (5) RSA DER unencrypted, (6) RSA PEM unencrypted, (7) XML.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.PrivateKey;

public class ChilkatExample {

    public static void main(String[] args) {
        Cert cert = new Cert();

        // Load from the PFX file
        String pfxFilename = "/Users/chilkat/testData/pfx/chilkat_ssl_pwd_is_test.pfx";
        String pfxPassword = "test";

        // A PFX typically contains certificates in the chain of authentication.
        // The Chilkat cert object will choose the certificate w/
        // private key farthest from the root authority cert.
        // To access all the certificates in a PFX, use the
        // Chilkat certificate store object instead.
        try {
            cert.loadPfxFile(pfxFilename, pfxPassword);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Get the private key...
        PrivateKey privKey = new PrivateKey();
        try {
            cert.getPrivateKey(privKey);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Export to various formats:

        String password = "secret";

        // PKCS8 Encrypted DER
        String path = "/Users/chilkat/testData/privkeys/chilkat_pkcs8_enc.der";
        try {
            privKey.savePkcs8EncryptedFile(password, path);

            // PKCS8 Encrypted PEM
            path = "/Users/chilkat/testData/privkeys/chilkat_pkcs8_enc.pem";
            privKey.savePkcs8EncryptedPemFile(password, path);

            // PKCS8 Unencrypted DER
            path = "/Users/chilkat/testData/privkeys/chilkat_pkcs8.der";
            privKey.savePkcs8File(path);

            // PKCS8 Unencrypted PEM
            path = "/Users/chilkat/testData/privkeys/chilkat_pkcs8.pem";
            privKey.savePkcs8PemFile(path);

            //  RSA DER (unencrypted)
            path = "/Users/chilkat/testData/privkeys/chilkat_rsa.der";
            privKey.savePkcs1File(path);

            // RSA PEM (unencrypted)
            path = "/Users/chilkat/testData/privkeys/chilkat_rsa.pem";
            privKey.savePemFile(path);

            // XML (unencrypted)
            path = "/Users/chilkat/testData/privkeys/chilkat.xml";
            privKey.saveXmlFile(path);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("Private key exported to various formats.");
    }
}