我得到错误Error message "error:0308010C:digital envelope routines::unsupported"
时,试图打开一个.pfx
文件:
$result = openssl_pkcs12_read($content, $certdata, $pass);
$error = openssl_error_string(); // "error:0308010C:digital envelope routines::unsupported"
在终端(Ubuntu 22.04)中:
user@user-tp:~$ php -i | grep -i openssl
SSL Version => OpenSSL/3.0.2
libSSH Version => libssh/0.9.6/openssl/zlib
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 3.0.2 15 Mar 2022
OpenSSL Header Version => OpenSSL 3.0.2 15 Mar 2022
Openssl default config => /usr/lib/ssl/openssl.cnf
openssl.cafile => no value => no value
openssl.capath => no value => no value
Native OpenSSL support => enabled
如果我尝试在终端中打开该文件,我会得到相同的错误:
openssl pkcs12 -in file.pfx -nodes
但是如果我使用-legacy
参数,它就可以正常工作。
如何在PHP中使用它而不出错?
2条答案
按热度按时间izj3ouym1#
您可以启用Openssl 3的旧版选项:
找到并打开位于
/etc/ssl/openssl.cnf
的文件在
[default_sect]
部分,将其更改为以下内容:然后找到
[provider_sect]
并将其更改为以下内容:在此之后保存文件并重新启动PHP应用程序,它应该可以正常工作。
ymzxtsji2#
我也遇到了同样的问题,这是由于OpenSSL在Ubuntu 22. 04中升级到了版本3。这个问题发生在使用P12文件的Google日历API集成上。
我试着把它降级到OpenSSL 1.1(改变应用程序本身不是一个选择),但没有成功。
最后的解决方案是在一个新的服务器上重新部署我的应用程序与Ubuntu 20. 04 ...工作的开箱即用。