Sample code for 30+ languages & platforms
Chilkat2-Python

Backup Windows Current User / Personal Certificates to a .zip

See more Certificates Examples

Demonstrates how to backup the certificates in the Windows registry-based Current User certificate store (in the "Personal" Logical Store as seen in certmgr.msc), to a zip archive. Certificates having an exportable private key are exported to .pfx files. Certificates with no private key, or with a non-exportable private key, are exported to .cer files.

Obviously, this example only runs on Windows computers.

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

certStore = chilkat2.CertStore()

readOnly = True
success = certStore.OpenCurrentUserStore(readOnly)
if (not success):
    print(certStore.LastErrorText)
    sys.exit()

pfxPassword = "secret"

allSuccess = True
numSuccess = 0

zip = chilkat2.Zip()
zip.NewZip("qa_output/personalCerts.zip")

certData = chilkat2.BinData()
sbFilename = chilkat2.StringBuilder()

# Iterate over the certificates in the Current User store.
cert = chilkat2.Cert()
numCerts = certStore.NumCertificates
i = 0
while i < numCerts :
    certStore.GetCert(i,cert)
    print("DN = " + cert.SubjectDN)

    sbFilename.SetString("cert")
    sbFilename.AppendInt(i + 1)

    bHasPrivateKey = cert.HasPrivateKey()
    if ((bHasPrivateKey == True) and (cert.PrivateKeyExportable == True)):
        # Export to a .pfx
        success = cert.ExportToPfxBd(pfxPassword,True,certData)
        if (success == True):
            sbFilename.Append(".pfx")
            zip.AddBd(sbFilename.GetAsString(),certData)

    else:
        # Export to a .cer
        success = cert.ExportCertDerBd(certData)
        if (success == True):
            sbFilename.Append(".cer")
            zip.AddBd(sbFilename.GetAsString(),certData)

    if (success != True):
        allSuccess = False
    else:
        numSuccess = numSuccess + 1

    i = i + 1

if (numSuccess > 0):
    success = zip.WriteZipAndClose()
    if (success != True):
        print(zip.LastErrorText)
        allSuccess = False

print("All success = " + str(allSuccess))