You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alpine 3.17下openssl_pkey_new始终返回false的问题求助

Alpine 3.17 + OpenSSL 3.x下PHP openssl_pkey_new生成密钥失败的解决方法

问题背景

从Alpine 3.16迁移至3.17版本后,因OpenSSL从v1.1.1升级到v3.x的破坏性变更,PHP的openssl_pkey_new()方法始终执行失败,无法生成密钥,报错信息如下:

error:0480006C:PEM routines::no start line
error:0200008A:rsa routines::invalid padding
error:02000072:rsa routines::padding check failed
error:1C880004:Provider routines::RSA lib
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:0480006C:PEM routines::no start line
error:05000072:dsa routines::bad ffc parameters

环境信息:

  • Alpine 3.17
  • OpenSSL 3.0.8
  • PHP 8.1

根据PHP文档提示需配置有效的openssl.cnf,但找不到可用示例,寻求解决指导。

解决方法

1. 补全OpenSSL配置文件

Alpine 3.17中OpenSSL 3.x的默认配置文件可能缺失,通过安装openssl-conf包生成:

apk add openssl-conf

安装后确认/etc/ssl/openssl.cnf存在,并确保PHP进程拥有读取权限。

2. 代码中显式指定配置文件路径

在调用openssl_pkey_new()时,手动传入配置文件路径参数:

$config = [
    'config' => '/etc/ssl/openssl.cnf',
    'private_key_bits' => 2048,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
];
$privateKey = openssl_pkey_new($config);

if (!$privateKey) {
    echo openssl_error_string();
}

3. 调整OpenSSL 3.x提供者配置

OpenSSL 3.x引入了提供者机制,编辑/etc/ssl/openssl.cnf,确保启用默认和遗留提供者:

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

4. 配置PHP的OpenSSL参数

在php.ini中明确指定OpenSSL相关路径:

openssl.cafile=/etc/ssl/cert.pem
openssl.capath=/etc/ssl/certs
openssl.config=/etc/ssl/openssl.cnf

修改后重启PHP-FPM或Web服务器生效。

5. 验证OpenSSL基础环境

执行以下命令验证OpenSSL本身是否正常:

openssl genrsa -out test.key 2048

若命令成功,说明问题出在PHP与OpenSSL的交互上,可尝试更新PHP到8.1的最新补丁版本,或重新编译PHP的OpenSSL扩展。

内容的提问来源于stack exchange,提问作者Ahmed Alaa El-Din

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:27:25