Php bitnami堆栈(ec2)上的Woocommerce Webshop:SSL操作失败,代码为1。OpenSSL错误消息:错误:14090086

Php bitnami堆栈(ec2)上的Woocommerce Webshop:SSL操作失败,代码为1。OpenSSL错误消息:错误:14090086,php,wordpress,ssl,openssl,bitnami,Php,Wordpress,Ssl,Openssl,Bitnami,我就是找不到解决这个问题的办法。我把一个WoodPress网站和一个woocommerce商店以及支付网关“Payunity”迁移到一个新的EC2机器上,这个机器有一个bitnami Wordpress堆栈。 我生成了一个Let's Encrypt SSL证书,整个站点按预期工作 我唯一的问题是,出于某种原因,在woocommerce结帐页面上,我突然收到以下错误消息: SSL操作失败,代码为1。OpenSSL错误消息: 错误:14090086:SSL例程:ssl3\u获取\u服务器\u证书:

我就是找不到解决这个问题的办法。我把一个WoodPress网站和一个woocommerce商店以及支付网关“Payunity”迁移到一个新的EC2机器上,这个机器有一个bitnami Wordpress堆栈。 我生成了一个Let's Encrypt SSL证书,整个站点按预期工作

我唯一的问题是,出于某种原因,在woocommerce结帐页面上,我突然收到以下错误消息:

SSL操作失败,代码为1。OpenSSL错误消息: 错误:14090086:SSL例程:ssl3\u获取\u服务器\u证书:证书 验证失败

我在谷歌上搜索了很长一段时间,试图找到答案,但没有机会

你知道我必须在服务器上设置什么才能让它消失吗?我尝试用capath和cafile修改php.ini,就像一些线程指出的那样,但没有成功

有什么想法吗


更新:我现在以DNS管理器的身份迁移到Cloudflare,并拥有“完整(严格)”权限设置为Cloudflare SSL是正在使用的。但是仍然存在相同的错误,因此我认为这与原始的Let's Encrypt或现在的Cloudflare SSL证书无关。

我相信此错误消息是由CURL引起的。根据CURL常见问题解答()第4.12节(此处正好提到此错误消息),”这意味着curl无法验证服务器的证书是否正常。Curl使用Curl安装附带的CA证书包验证证书。“(vsince Curl 7.10)

由于您的CURL版本非常旧(2015年10月7日),我认为它使用的其中一个CA/根证书太旧。我建议单独更新CURL(例如,根据您的操作系统,使用此指南:)。 此外,您可以检查
php.ini
中的
openssl.cafile
选项,该选项应指向包含最近的CA捆绑包的绝对路径(例如,对于我的XAMPP安装,“C:\xampp7.3\apache\bin\curl CA bundle.crt”)。您可以尝试从XAMPP
.zip
()并替换
php.ini
中的路径,然后重新启动服务器

此外,如果
extension=php\u openssl.*
(扩展名,例如用于Windows的
dll
)未注释,即已激活,则可以检查
php.ini

也许(这就是为什么我问在这个地方通常应该显示什么)在
Payunity
插件中的一个脚本试图从一个有坏证书或类似内容的URL中获取一些内容

编辑:正如Sebastian B所指出的,您可以检查
error.log
(对于Apache)中失败的
file\u get\u contents()
(或类似)调用,因为这里提到了PHP尝试获取的“文件”的实际URL


编辑:CURL Perl脚本以基于Mozilla的链创建一个新的
ca bundle.crt
文件:您可以尝试(或从新的CURL安装中提取一个)并将其设置为
php.ini
中的路径。或者您可以从Nextcloud项目()或另一个项目中使用它(当然,仅用于测试目的).

我相信此错误消息是由CURL引起的。根据CURL常见问题解答()第4.12节(此处正好提到此错误消息),“这意味着CURL无法验证服务器的证书是否良好。Curl使用Curl安装附带的CA证书包验证证书。“(vsince Curl 7.10)

由于您的CURL版本非常旧(2015年10月7日),我认为它使用的其中一个CA/根证书太旧。我建议单独更新CURL(例如,根据您的操作系统,使用此指南:)。 此外,您可以检查
php.ini
中的
openssl.cafile
选项,该选项应指向包含最近的CA捆绑包的绝对路径(例如,对于我的XAMPP安装,“C:\xampp7.3\apache\bin\curl CA bundle.crt”)。您可以尝试从XAMPP
.zip
()并替换
php.ini
中的路径,然后重新启动服务器

此外,如果
extension=php\u openssl.*
(扩展名,例如用于Windows的
dll
)未注释,即已激活,则可以检查
php.ini

也许(这就是为什么我问在这个地方通常应该显示什么)在
Payunity
插件中的一个脚本试图从一个有坏证书或类似内容的URL中获取一些内容

编辑:正如Sebastian B所指出的,您可以检查
error.log
(对于Apache)中失败的
file\u get\u contents()
(或类似)调用,因为这里提到了PHP尝试获取的“文件”的实际URL


编辑:CURL Perl脚本以基于Mozilla的链创建一个新的
ca bundle.crt
文件:您可以尝试(或从新的CURL安装中提取一个)并将其设置为
php.ini
中的路径。或者您可以从Nextcloud项目()或另一个项目中使用它(当然,仅用于测试目的).

Hallo matt.当一切正常时,在这个位置显示了什么?您使用的PHP和CURL版本是什么?嘿@Johannes…bitnami wordpress stack,PHP版本7.2.13和CURL 7.45.0,您的意思是当一切正常时显示了什么?没有错误消息,就是这样。每次结账都顺利,但现在支付网关h btw是Payunity()…用于credticard和paypal支付。到目前为止一直运行良好。从未出现过问题。我认为这与您站点的SSL无关。错误几乎可以肯定,您站点的PHP代码连接到SSL安全资源,并且无法验证该证书。您可以提供日志文件吗(PHP错误日志,Wordpress/Woocommerce/Payunity日志?另请参见Hallo matt。当一切正常时,在这个位置显示了什么?PHP和CURL版本是什么