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

Windows下OpenSSL 3.0.8启用legacy provider后加密套件加载失败求助

解决Windows下OpenSSL 3.0.8加载legacy provider后提示"library has no ciphers"的问题

问题原因

OpenSSL 3.0+将RC4等旧加密套件归类到legacy provider中,即使成功激活该provider,默认的加密套件列表不会自动包含这些旧算法,导致SSL上下文初始化时找不到可用的加密套件,触发SSL_CTX_new_ex:library has no ciphers错误。

解决步骤

1. 修正OpenSSL配置文件(openssl.cnf)

找到你的OpenSSL配置文件(默认路径为C:\Program Files\OpenSSL-Win64\ssl\openssl.cnf),确保以下配置项正确:

  • 在[openssl_init]段添加或保留:
    providers = provider_sect
    
  • 添加[provider_sect]段并配置legacy provider:
    [provider_sect]
    default = default_sect
    legacy = legacy_sect
    
    [default_sect]
    activate = 1
    
    [legacy_sect]
    activate = 1
    
  • 可选:在配置文件中全局默认包含legacy套件,添加[ssl_sect]段:
    [ssl_sect]
    system_default = system_default_sect
    
    [system_default_sect]
    CipherString = DEFAULT@SECLEVEL=0:RC4-SHA:RC4-MD5
    
    注:SECLEVEL=0用于放宽安全级别,允许使用旧算法。

2. 命令行明确指定RC4套件

无需修改配置文件的话,可以直接在命令中指定要使用的RC4相关套件:

  • 查看可用的RC4套件:
    openssl ciphers -provider legacy -v RC4
    
  • 连接远程服务器检测RC4支持:
    openssl s_client -connect 目标域名:443 -provider legacy -cipher RC4-SHA
    
    替换目标域名为你要检测的服务器地址,若连接成功则说明服务器支持RC4。

3. 确认环境变量配置

确保以下环境变量正确设置:

  • OPENSSL_MODULES指向legacy DLL所在路径:
    set OPENSSL_MODULES=C:\Program Files\OpenSSL-Win64\bin
    
  • OPENSSL_CONF指向修改后的配置文件路径:
    set OPENSSL_CONF=C:\Program Files\OpenSSL-Win64\ssl\openssl.cnf
    

4. 验证legacy provider的算法可用性

执行以下命令确认RC4算法已被加载:

openssl list -cipher-algorithms -provider legacy | findstr RC4

若输出包含RC4相关条目,则说明legacy provider的算法加载正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:22:08