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

PHP openssl_csr_new签名请求错误排查求助

解决 openssl_csr_new() 报错及相关OpenSSL错误问题

嘿,我来帮你拆解这个证书生成失败的问题,从你给出的错误日志和环境信息来看,根源是几个连锁的OpenSSL配置、系统熵池问题,咱们一步步来解决:

一、先理清楚错误连锁反应

你碰到的多个OpenSSL错误其实是环环相扣的:先是配置文件读取出问题,然后随机数生成器初始化失败,最后导致内存分配(malloc)失败,直接中断了CSR签名流程。

二、逐个错误分析+解决办法

1. error:0E06D06C:configuration file routines:NCONF_get_string:no value(反复出现)

这个错误说明OpenSSL读取你指定的配置文件($this->configFile)时,找不到某些必填项。虽然配置文件2018年就没动过,但大概率是这几种情况:

  • 配置文件的路径被意外修改,或者PHP进程的用户(比如www-data)没有权限读取完整内容
  • 配置里的v3_req扩展段缺失关键参数,或者格式出现错误
  • 系统的OpenSSL库被隐性更新过,旧配置和新版本不兼容了

试试这些解决办法:

  • 先检查配置文件权限:执行ls -l <你的配置文件路径>,确认PHP用户拥有该文件的读取权限
  • 打开配置文件,检查[v3_req]段必须存在,而且至少要有这些基础配置:
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    subjectAltName = @alt_names
    
  • 要是拿不准配置是否正确,可以直接复制系统默认的OpenSSL配置(一般在/etc/ssl/openssl.cnf或/usr/lib/ssl/openssl.cnf)里的v3_req段替换你自己的配置

2. error:2406F076:random number generator:RAND_load_file:reseed error & error:04081003:rsa routines:rsa_builtin_keygen:BN lib

这两个错误是随机数生成器(RNG)出问题了:

  • OpenSSL生成安全密钥需要足够的系统熵,熵池不足的话,RAND_load_file就会失败
  • 密钥生成依赖BN(大数)库,RNG工作异常的话,BN库自然也没法正常运行

试试这些解决办法:

  • 先查看系统熵值:执行cat /proc/sys/kernel/random/entropy_avail,如果数值低于1000,说明熵池不足
    • 临时救急:使用root权限执行rngd -r /dev/urandom手动补充熵
    • 永久解决:安装rng-tools服务并设置开机自启,让系统自动补充熵
  • 确认PHP能访问随机设备:检查/dev/random和/dev/urandom的权限,确保PHP用户拥有读取权限

3. error:0D0DC041:asn1 encoding routines:ASN1_item_sign_ctx:malloc failure

这个是最终的崩溃错误,完全是前面两个问题引发的连锁反应:配置错误+RNG失败,导致OpenSSL签名CSR时无法正常分配内存,直接触发malloc失败。

解决办法:
前面两个问题解决后,这个错误基本会自动消失。如果仍然出现:

  • 调大PHP内存限制:在php.ini里把memory_limit从128M调整为256M(或更大),然后重启PHP服务
  • 检查私钥有效性:使用openssl rsa -check -in <你的私钥文件>验证私钥是否损坏

三、额外排查小步骤

  • 检查版本兼容性:执行openssl version和php -i | grep OpenSSL,确认PHP的OpenSSL扩展和系统OpenSSL库版本差异不要过大(PHP7.2建议搭配OpenSSL 1.0.2或1.1.x,版本差太大容易出现兼容性问题)
  • 临时替换配置测试:把$configArgs里的config参数改成系统默认的openssl.cnf路径,看看能不能正常生成CSR,以此排除自定义配置的问题

内容的提问来源于stack exchange,提问作者Marc Pont

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:43:31