in capath the Certificates must be placed with the certificates hash as name and .0 as Ending.
Here is how to get the hashes from Certificates lying in this folder and automatically rename them in a correct way: <?php
$paths=openssl_get_cert_locations(); $allowed=array("cer","crt","pem");
if (!empty($paths['ini_capath'])){ $capathDirectory = dir($paths['ini_capath']);
while (false !== ($entry = $capathDirectory->read())) { $Sourcefile=$paths['ini_capath']."/".$entry;
if (file_exists( $Sourcefile)){ $path_parts = pathinfo($Sourcefile);
if (in_array(strtolower($path_parts['extension']),$allowed)){ $ParsedCertificatePbject = openssl_x509_parse(file_get_contents($Sourcefile)); $Sourcefile= $ParsedCertificatePbject["hash"].".0"; $TargetFilename = dirname($Sourcefile)."/".$Sourcefile;
if (!file_exists($TargetFilename)) { rename ($Sourcefile ,$TargetFilename);
}
}
}
} $capathDirectory->close();
} ?>
Коментарии
in capath the Certificates must be placed with the certificates hash as name and .0 as Ending.
Here is how to get the hashes from Certificates lying in this folder and automatically rename them in a correct way:
<?php
$paths=openssl_get_cert_locations();
$allowed=array("cer","crt","pem");
if (!empty($paths['ini_capath'])){
$capathDirectory = dir($paths['ini_capath']);
while (false !== ($entry = $capathDirectory->read())) {
$Sourcefile=$paths['ini_capath']."/".$entry;
if (file_exists( $Sourcefile)){
$path_parts = pathinfo($Sourcefile);
if (in_array(strtolower($path_parts['extension']),$allowed)){
$ParsedCertificatePbject = openssl_x509_parse(file_get_contents($Sourcefile));
$Sourcefile= $ParsedCertificatePbject["hash"].".0";
$TargetFilename = dirname($Sourcefile)."/".$Sourcefile;
if (!file_exists($TargetFilename)) {
rename ($Sourcefile ,$TargetFilename);
}
}
}
}
$capathDirectory->close();
}
?>
above code should be corrected to:
$Destfile= $ParsedCertificatePbject["hash"].".0";
$TargetFilename = dirname($Sourcefile)."/".$Destfile;