window环境下使用PHP OpenSSL扩展函数openssl_pkey_new(),返回false的原因

<?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 参数来覆盖脚本中的默认路径。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值