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

迁移至PHP8.1后OpenSSL3.0缺失BF-ECB致openssl_encrypt失效求助

解决OpenSSL 3.0环境下BF-ECB加密算法缺失问题

OpenSSL 3.0默认将Blowfish(BF)这类旧版加密算法归为遗留(legacy)算法,默认不启用,这就是新服务器上找不到BF-ECB的核心原因。以下是具体解决办法:

一、安装并启用OpenSSL Legacy Provider

1. 安装对应系统的legacy包

  • Debian/Ubuntu系列:
    sudo apt install openssl-legacy-provider
    
  • RHEL/CentOS系列:
    需先启用EPEL源再安装:
    sudo dnf install epel-release
    sudo dnf install openssl-legacy
    
  • 若为编译安装的OpenSSL 3.0:
    重新编译时需添加启用legacy provider的参数:
    ./config enable-legacy
    make && make install
    

2. 修改OpenSSL配置文件启用legacy provider

编辑系统OpenSSL配置文件(通常路径为/etc/ssl/openssl.cnf):

  • 找到[provider_sect]段落,修改为如下内容:
    [provider_sect]
    default = default_sect
    legacy = legacy_sect
    
    [default_sect]
    activate = 1
    
    [legacy_sect]
    activate = 1
    
  • 保存后重启PHP-FPM或Web服务(如Apache/Nginx)使配置生效。

3. 验证配置效果

执行PHP代码检查BF-ECB是否可用:

<?php
print_r(openssl_get_cipher_methods());
?>

或用OpenSSL命令行验证:

openssl list -cipher-algorithms | grep BF-ECB

二、替代方案(环境无法修改时)

如果管理员无法安装legacy组件,建议替换为现代安全的加密算法(如AES-256-GCM),但需注意:

  • 同步更新所有加密/解密的业务代码
  • 若存在历史加密数据,需先完成旧数据的解密与重新加密,确保业务兼容性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:15:37