2024 年 PHP 日本大会

运行时配置

这些函数的行为受 php.ini 中设置的影响。

openssl 配置选项
名称 默认值 可更改 变更日志
openssl.cafile "" INI_PERDIR  
openssl.capath "" INI_PERDIR  
有关 INI_* 模式的更多详细信息和定义,请参阅 配置设置的设置位置

以下是配置指令的简短说明。

openssl.cafile 字符串

本地文件系统上证书颁发机构文件的路径,应与 verify_peer 上下文选项一起使用以验证远程对等方的身份。

openssl.capath 字符串

如果未指定 cafile 或在其中找不到证书,则会搜索 capath 指向的目录以查找合适的证书。capath 必须是正确哈希的证书目录。

另请参见 SSL 流上下文 选项。

添加注释

用户贡献的注释 2 条注释

[email protected]
6 年前
在 capath 中,证书必须以证书哈希作为名称并以 .0 结尾放置。

以下是如何获取此文件夹中证书的哈希值并以正确方式自动重命名它们:
<?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();
}
?>
[email protected]
6 年前
以上代码应更正为

$Destfile= $ParsedCertificatePbject["hash"].".0";
$TargetFilename = dirname($Sourcefile)."/".$Destfile;
To Top