<?php
$config = array(
'private_key_bits' => 2048,
);
$res = openssl_pkey_new($config);
$res返回false的时候,检查发现,是window系统缺少了openssl环境变量,解决方法如下:
$opensslConfigPath = "D:/phpStudy/Apache/conf/openssl.cnf"; //apache路径下的openssl.conf文件路径
$config = array(
'private_key_bits' => 2048,
);
$res = openssl_pkey_new($config);
if(!$res) {
$config['config'] = $opensslConfigPath;
$res = openssl_pkey_new($config);
}
此外,如果打算使用密钥生成和证书签名功能,你需要在你的系统上安装一个可用的?openssl.cnf?文件。 在我们的 win32 二进制发行版本中,我们已经包含了一个示例配置文件,在?extras/openssl?文件夹中。
PHP 将会使用如下逻辑搜索?openssl.cnf?文件:
- 如果?
OPENSSL_CONF ?环境变量设置了,该变量将会被当作配置文件的路径(含文件名)。 - 如果?
SSLEAY_CONF ?环境变量设置了,该变量将会被当作配置文件的路径(含文件名)。 - 假设openssl.cnf?文件将会在 openssl DLL 被编译时配置的默认证书区域被找到。这通常意味着默认的文件名是?C:\Program Files\Common Files\SSL\openssl.cnf(x64) 或者?C:\Program Files (x86)\Common Files\SSL\openssl.cnf?(x86),而 PHP 7.4.0之前,则是?C:\usr\local\ssl\openssl.cnf。
在你的安装过程中,你需要决定是否将配置文件安装在默认路径或者使用环境变量(可能是基于每个虚拟主机的基础)来定位配置文件安装到其他地方。注意,可以使用引入配置文件的函数中的?options ?参数来覆盖脚本中的默认路径。
|