Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Convert Java KeyStore to PKCS12 / PFXLoads a Java keystore file and saves it as a PKCS12 / PFX. A Java keystore (JKS) can contain two types of entries: (1) trusted root certificates or (2) private keys + cert chains. Usually a JKS will contain all entries of one type or another (and thus a particular JKS serves one purpose or another; meaning that a JKS containing trusted roots is used as a source for verifying pre-trusted roots, and a JKS containing private keys (and cert chains) is used as a secure, encrypted store for private keys). A PKCS12 / PFX typically contains one or more private keys, along with each private key's certificate chain. Therefore, it typically makes sense to only write the private key entries to a PKCS12 (and the associated certificate chains). If a JKS contains trusted root certificates, it makes more sense to conver it to a PEM file (such as the CA cert bundle in PEM format from mozilla.org).
Use ChilkatAx-win32.pkg Procedure Test Handle hoJks String sJksPassword Boolean iSuccess Handle hoPkcs12 Integer iNumPrivateKeys Integer i Variant vPrivKey Handle hoPrivKey Variant vCertChain Handle hoCertChain String sPkcs12Password String sTemp1 // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatJavaKeyStore)) To hoJks If (Not(IsComObjectCreated(hoJks))) Begin Send CreateComObject of hoJks End Move "myJksPassword" To sJksPassword // Load the Java keystore from a file. The JKS file password is used // to verify the keyed digest that is found at the very end of the keystore. // It verifies that the keystore has not been modified. Get ComLoadFile Of hoJks sJksPassword "/someDir/keyStore.jks" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoJks To sTemp1 Showln sTemp1 Procedure_Return End // To convert, we'll access the private key entries // from the JKS, add each to the PKCS12, and then save the PKCS12. Get Create (RefClass(cComChilkatPfx)) To hoPkcs12 If (Not(IsComObjectCreated(hoPkcs12))) Begin Send CreateComObject of hoPkcs12 End Get ComNumPrivateKeys Of hoJks To iNumPrivateKeys // For each private key entry, get the private key and // the associated certificate chain. // Each private key is password protected. Usually it is the same // password as used for the keyed digest of the entire JKS. // However, this does not have to be. The password is passed // here to handle the possibility of each private key requiring // a different password. Move 0 To i While (i < iNumPrivateKeys) Get ComGetPrivateKey Of hoJks sJksPassword i To vPrivKey If (IsComObject(vPrivKey)) Begin Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey Set pvComObject Of hoPrivKey To vPrivKey End Get ComGetPrivateKeyAlias Of hoJks i To sTemp1 Showln sTemp1 Get ComGetCertChain Of hoJks i To vCertChain If (IsComObject(vCertChain)) Begin Get Create (RefClass(cComChilkatCertChain)) To hoCertChain Set pvComObject Of hoCertChain To vCertChain End // Add the private key and it's associated certificate chain to the PKCS12. Get ComAddPrivateKey Of hoPkcs12 vPrivKey vCertChain To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoPkcs12 To sTemp1 Showln sTemp1 Send Destroy of hoCertChain Send Destroy of hoPrivKey Procedure_Return End Send Destroy of hoCertChain Send Destroy of hoPrivKey Move (i + 1) To i Loop // Save the PKCS12 / PFX to a file. // The password can be the same as the JKS password, or something new. // (With the PKCS12 format, there is a single password for the entire contents // of the file. With the JKS format, there is flexibility in allowing each private key // to have it's own password.) Move "myNewPassword" To sPkcs12Password Get ComToFile Of hoPkcs12 sPkcs12Password "/pkcs12_files/myPfx.p12" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoPkcs12 To sTemp1 Showln sTemp1 End Else Begin Showln "Successfully saved to PKCS12 format." End End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.