为啥 openssl_pkey_new() 失败?

Posted

技术标签:

【中文标题】为啥 openssl_pkey_new() 失败?【英文标题】:Why does openssl_pkey_new() fail?为什么 openssl_pkey_new() 失败? 【发布时间】:2011-05-16 00:19:54 【问题描述】:

我对此很陌生。为什么openssl_pkey_new() 返回 false?

我正在使用 XAMPP,Apahce\bin 目录下有一个 OpenSSL。

我犯了什么明显的初学者错误?也许这是 SSL 配置的问题?

我的目标是将两个密钥写入两个文件。


更新:按照建议,我使用了openssl_error_string(),上面写着error:02001003:system library:fopen:No such process。听起来可能 OpenSSL 没有运行或不在路径中?有什么想法吗?


更新:我把c:\xampp\php放到windows路径下,让它能找到libeay32.dll,然后重启Apache。

现在我得到error:2006D080:BIO routines:BIO_new_file:no such file。有什么想法吗?

【问题讨论】:

一些基本检查 - php.net/manual/en/openssl.installation.php ***.com/questions/15558321/… 可能重复:OpenSSL and error in reading openssl.conf file 和 Xampp openssl errors when calling openssl_pkey_new()。 【参考方案1】:

使用 openssl_error_string() 找出为什么 openssl_pkey_new() 返回 false(或任何其他 OpenSSL 错误)。


在您的最新更新之后,OpenSSL 似乎找不到 openssl.cnf 文件,如 described here。

【讨论】:

【参考方案2】:

对我来说,在 Windows 10 上使用 XAMPP 可以:

    https://***.com/a/18869750/4695499。 (您可以在 Windows 10 的旧控制面板中的任一显示选项下找到这些步骤) 我还尝试在 php.ini 中取消注释 extension=php_openssl.dll(但我的意思是没有它也可以工作) 我重新启动计算机和 Apache,然后 openssl_pkey_new() 生成了一些 RESOURCE 而不是 false

【讨论】:

谢谢,星。 15 年或更长时间后,我终于放弃了 Xampp,安装了 Apache、PHP 和 mysql。出乎意料地容易做到,最后,我觉得自己很专业;-)自从我问这个问题以来已经 11 年了,我什至不记得它,更不用说重现它了,但是感谢您发布您的答案。我希望它对将来在这里发帖的其他人有所帮助(upvote)

以上是关于为啥 openssl_pkey_new() 失败?的主要内容,如果未能解决你的问题,请参考以下文章

writeToFile 失败 - 我如何调试它为啥失败(啥工具)?

为啥 $.getJSON 静默失败?

为啥连接测试失败?

为啥 ./gradlew :processDebugUnitTestManifest 失败?

为啥请求 Alamofire 失败?

fread()函数第一次读取成功,但第二次读取失败,为啥为啥为啥,