Signatur
Beschreibung
openssl_get_cert_locations() liefert ein assoziatives Array mit Informationen darüber, wo OpenSSL auf dem aktuellen System nach Zertifikatsdateien und Verzeichnissen sucht. Dies umfasst den Standardpfad zur CA-Bundle-Datei, das CA-Verzeichnis sowie ggf. durch Umgebungsvariablen oder INI-Einstellungen überschriebene Pfade.
Die Funktion ist besonders nützlich beim Debuggen von TLS/SSL-Verbindungsproblemen, wenn z. B. Zertifikatsketten nicht gefunden werden oder HTTPS-Anfragen mit Fehlermeldungen wie "certificate verify failed" scheitern. Mit ihrer Hilfe lässt sich schnell überprüfen, welche Zertifikatspfade PHP und OpenSSL tatsächlich verwenden.
Typische Schlüssel im zurückgegebenen Array sind default_cert_file, default_cert_file_env, default_cert_dir, default_cert_dir_env, default_private_dir, default_default_cert_area und ini_cafile sowie ini_capath, wobei letztere die in php.ini konfigurierten Werte widerspiegeln.
Die Funktion benötigt keine Parameter und eignet sich gut für Diagnose-Skripte, mit denen man die OpenSSL-Konfiguration eines Servers dokumentiert oder überprüft.
Rückgabewert
default_cert_file, default_cert_dir, ini_cafile und ini_capath.Beispiele
Zertifikatspfade ausgeben
<?php
$locations = openssl_get_cert_locations();
foreach ($locations as $key => $value) {
echo $key . ': ' . (empty($value) ? '(nicht gesetzt)' : $value) . PHP_EOL;
}
Diagnose bei SSL-Verbindungsproblemen
<?php
// Schnelle Diagnose: Welche CA-Datei verwendet PHP/OpenSSL?
$locations = openssl_get_cert_locations();
$caFile = $locations['ini_cafile'] ?: $locations['default_cert_file'];
if (!empty($caFile) && file_exists($caFile)) {
echo 'CA-Bundle gefunden: ' . $caFile . PHP_EOL;
echo 'Dateigröße: ' . filesize($caFile) . ' Bytes' . PHP_EOL;
} else {
echo 'Warnung: Kein gültiges CA-Bundle gefunden!' . PHP_EOL;
echo 'Erwarteter Pfad: ' . ($caFile ?: '(unbekannt)') . PHP_EOL;
}
// Wichtig · Fallstricke
Hinweis zu Umgebungsvariablen: Die Schlüssel default_cert_file_env und default_cert_dir_env geben die Namen der Umgebungsvariablen an (z. B. SSL_CERT_FILE), mit denen die Standardpfade überschrieben werden können – sie enthalten nicht den aktuell gesetzten Wert dieser Variablen.
PHP-INI-Einstellungen: Die Schlüssel ini_cafile und ini_capath spiegeln die Werte der PHP-INI-Direktiven openssl.cafile bzw. openssl.capath wider. Diese haben Vorrang vor den OpenSSL-Standardpfaden und sollten bei der Fehlersuche zuerst geprüft werden.
Die Funktion erfordert, dass die OpenSSL-Extension aktiviert ist (extension=openssl). Ist dies nicht der Fall, führt der Aufruf zu einem schwerwiegenden Fehler.