Sample code for 30+ languages & platforms
Classic ASP

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 Classic ASP Downloads

Classic ASP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0

set certStore = Server.CreateObject("Chilkat.CertStore")

readOnly = 1
success = certStore.OpenCurrentUserStore(readOnly)
If (Not success) Then
    Response.Write "<pre>" & Server.HTMLEncode( certStore.LastErrorText) & "</pre>"
    Response.End
End If

pfxPassword = "secret"

allSuccess = 1
numSuccess = 0

set zip = Server.CreateObject("Chilkat.Zip")
success = zip.NewZip("qa_output/personalCerts.zip")

set certData = Server.CreateObject("Chilkat.BinData")
set sbFilename = Server.CreateObject("Chilkat.StringBuilder")

' Iterate over the certificates in the Current User store.
set cert = Server.CreateObject("Chilkat.Cert")
numCerts = certStore.NumCertificates
i = 0
Do While i < numCerts
    success = certStore.GetCert(i,cert)
    Response.Write "<pre>" & Server.HTMLEncode( "DN = " & cert.SubjectDN) & "</pre>"

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

    bHasPrivateKey = cert.HasPrivateKey()
    If ((bHasPrivateKey = 1) And (cert.PrivateKeyExportable = 1)) Then
        ' Export to a .pfx
        success = cert.ExportToPfxBd(pfxPassword,1,certData)
        If (success = 1) Then
            success = sbFilename.Append(".pfx")
            success = zip.AddBd(sbFilename.GetAsString(),certData)
        End If

    Else
        ' Export to a .cer
        success = cert.ExportCertDerBd(certData)
        If (success = 1) Then
            success = sbFilename.Append(".cer")
            success = zip.AddBd(sbFilename.GetAsString(),certData)
        End If

    End If

    If (success <> 1) Then
        allSuccess = 0
    Else
        numSuccess = numSuccess + 1
    End If

    i = i + 1
Loop

If (numSuccess > 0) Then
    success = zip.WriteZipAndClose()
    If (success <> 1) Then
        Response.Write "<pre>" & Server.HTMLEncode( zip.LastErrorText) & "</pre>"
        allSuccess = 0
    End If

End If

Response.Write "<pre>" & Server.HTMLEncode( "All success = " & allSuccess) & "</pre>"

%>
</body>
</html>