AutoIt
AutoIt
Add Private Key to Java Keystore
See more Java KeyStore (JKS) Examples
Adds a private key to an existing Java keystore.Chilkat AutoIt Downloads
Local $bSuccess = False
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
$oJks = ObjCreate("Chilkat.JavaKeyStore")
Local $sJksPassword = "myJksPassword"
Local $sJksPath = "/someDir/keyStore.jks"
; Load the Java keystore from a file.
$bSuccess = $oJks.LoadFile($sJksPassword,$sJksPath)
If ($bSuccess <> True) Then
ConsoleWrite($oJks.LastErrorText & @CRLF)
Exit
EndIf
; A JKS private key entry consists of both the private key,
; it's associated certificate (which contains the matching public key
; within the X.509 of the certificate), and the certificates in the
; chain of authentication to the root.
;
; Therefore, to add a private key entry to a JKS requires
; a Chilkat certificate object that has a private key and which also
; has the certificate chain (up to the root) available.
; There are many ways to get a Chilkat certificate object
; that contains (within it) the private key and the certificate chain
; This example will show two possibilities:
; (1) Where the cert and issuing root are provided in PEM format in .crt files,
; and the private key is also provided in unencrypted PEM format (.key file).
; (2) Where the cert, private key, and issuing root are provided in a single PFX.
; First for the .crt / .key files:
$oCert = ObjCreate("Chilkat.Cert")
; Chilkat will automatically determine the format of the cert file and load it correctly.
$bSuccess = $oCert.LoadFromFile("/mycerts/alice.crt")
If ($bSuccess <> True) Then
ConsoleWrite($oCert.LastErrorText & @CRLF)
Exit
EndIf
; Certificates required for building the chain of authentication can be
; added to an XML certificate vault object, and then provided as
; a source for obtaining certs when building the chain.
$oCertVault = ObjCreate("Chilkat.XmlCertVault")
$bSuccess = $oCertVault.AddCertFile("/mycerts/ca.crt")
If ($bSuccess <> True) Then
ConsoleWrite($oCertVault.LastErrorText & @CRLF)
Exit
EndIf
$bSuccess = $oCert.UseCertVault($oCertVault)
If ($bSuccess <> True) Then
ConsoleWrite($oCert.LastErrorText & @CRLF)
Exit
EndIf
; Now provide the associated private key to the certificate object.
; The Chilkat private key class provides methods for loading from many formats (both
; encrypted and unencrypted).
$oPrivKey = ObjCreate("Chilkat.PrivateKey")
$bSuccess = $oPrivKey.LoadPemFile("/mycerts/alice.key")
If ($bSuccess <> True) Then
ConsoleWrite($oPrivKey.LastErrorText & @CRLF)
Exit
EndIf
; Provide the certificate object with the private key:
$bSuccess = $oCert.SetPrivateKey($oPrivKey)
If ($bSuccess <> True) Then
ConsoleWrite($oCert.LastErrorText & @CRLF)
Exit
EndIf
; Our certificate object now contains all that we need to add it as a private key entry
; to the Java keystore:
Local $sAlias = "alice"
$bSuccess = $oJks.AddPrivateKey($oCert,$sAlias,$sJksPassword)
If ($bSuccess <> True) Then
ConsoleWrite($oJks.LastErrorText & @CRLF)
Exit
EndIf
; Write the updated JKS, which contains the new private key entry w/ certificate chain.
$bSuccess = $oJks.ToFile($sJksPassword,$sJksPath)
If ($bSuccess <> True) Then
ConsoleWrite($oJks.LastErrorText & @CRLF)
Exit
EndIf
ConsoleWrite("Added new private key entry (from .crt and .key files) to the JKS!" & @CRLF)
; Now let's add a new private key entry from a PFX that contains a single
; private key with associated cert and cert chain.
$oPfx = ObjCreate("Chilkat.Pfx")
$bSuccess = $oPfx.LoadPfxFile("/myPfxFiles/my.pfx","pfxPassword")
If ($bSuccess <> True) Then
ConsoleWrite($oPfx.LastErrorText & @CRLF)
Exit
EndIf
; This is easy -- simply add the PFX to the JKS
$sAlias = "bob"
$bSuccess = $oJks.AddPfx($oPfx,$sAlias,$sJksPassword)
If ($bSuccess <> True) Then
ConsoleWrite($oJks.LastErrorText & @CRLF)
Exit
EndIf
; Write the updated JKS, which contains the new private key entry w/ certificate chain
; that came from the PFX.
$bSuccess = $oJks.ToFile($sJksPassword,$sJksPath)
If ($bSuccess <> True) Then
ConsoleWrite($oJks.LastErrorText & @CRLF)
Exit
EndIf
ConsoleWrite("Added new private key entry (from PFX) to the JKS!" & @CRLF)