PHP Extension
PHP Extension
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 PHP Extension Downloads
<?php
include("chilkat.php");
$success = false;
$certStore = new CkCertStore();
$readOnly = true;
$success = $certStore->OpenCurrentUserStore($readOnly);
if (!$success) {
print $certStore->lastErrorText() . "\n";
exit;
}
$pfxPassword = 'secret';
$allSuccess = true;
$numSuccess = 0;
$zip = new CkZip();
$zip->NewZip('qa_output/personalCerts.zip');
$certData = new CkBinData();
$sbFilename = new CkStringBuilder();
// Iterate over the certificates in the Current User store.
$cert = new CkCert();
$numCerts = $certStore->get_NumCertificates();
$i = 0;
while ($i < $numCerts) {
$certStore->GetCert($i,$cert);
print 'DN = ' . $cert->subjectDN() . "\n";
$sbFilename->SetString('cert');
$sbFilename->AppendInt($i + 1);
$bHasPrivateKey = $cert->HasPrivateKey();
if (($bHasPrivateKey == true) and ($cert->get_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() . "\n";
$allSuccess = false;
}
}
print 'All success = ' . $allSuccess . "\n";
?>