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

如何让openssl_pkcs12_export使用legacy算法?能否通过openssl.cnf全局配置?

关于PHP openssl_pkcs12_export使用Legacy算法及OpenSSL全局配置的解决方案

一、让PHP的openssl_pkcs12_export使用Legacy算法的方法

  • 临时指定自定义配置:在调用openssl_pkcs12_export前,通过putenv('OPENSSL_CONF=/path/to/your/custom-openssl.cnf')设置环境变量,用包含legacy配置的自定义文件覆盖默认配置。
  • 调整全局OpenSSL配置:如果是长期需求,直接修改系统或PHP依赖的OpenSSL配置文件(常见路径为/etc/ssl/openssl.cnf,Windows下多在OpenSSL安装目录的bin/openssl.cnf),具体配置见下文。
  • 命令行替代方案:如果内置函数配置不生效,可直接用exec()或shell_exec()调用系统命令openssl pkcs12 -export -legacy ...,直接实现legacy算法导出效果。

二、通过openssl.cnf全局强制PKCS#12导出使用Legacy算法

针对OpenSSL 3.0及以上版本,需先启用legacy provider,再配置PKCS12默认算法:

  1. 打开openssl.cnf,添加或修改以下配置段:
[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1
  1. 新建或修改[pkcs12]段,指定legacy算法:
[pkcs12]
# 强制使用SHA1+3DES这类传统算法组合
pkcs12_pbe_nid = PBE-SHA1-3DES
pkcs12_mac_nid = SHA1

配置完成后,所有依赖该OpenSSL库的工具(包括PHP的openssl_pkcs12_export)导出PKCS#12时都会默认使用legacy算法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:42:08