Fan*_*mic 10 php ubuntu openssl laravel
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"
Run Code Online (Sandbox Code Playgroud)
在终端(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
Run Code Online (Sandbox Code Playgroud)
如果我尝试在终端中打开文件,我会收到相同的错误:
openssl pkcs12 -in file.pfx -nodes
Run Code Online (Sandbox Code Playgroud)
但如果我使用-legacy
参数它工作正常。
如何在 PHP 中使用它而不出现错误?
Mar*_*der 23
您可以启用 Openssl 3 的旧版选项:
查找并打开该文件/etc/ssl/openssl.cnf
在[default_sect]
部分将其更改为以下内容:
[default_sect]
activate = 1
[legacy_sect]
activate = 1
Run Code Online (Sandbox Code Playgroud)
然后找到[provider_sect]
并更改为以下内容:
[provider_sect]
default = default_sect
legacy = legacy_sect
Run Code Online (Sandbox Code Playgroud)
之后保存文件并重新启动 PHP 应用程序,它应该可以正常工作。