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

Heroku栈升级至heroku-22后xmlsec-openssl库加载失败求助

解决Heroku-22栈上xmlsec1依赖加载失败问题

1. 安装系统级依赖

Heroku-22栈默认未预装xmlsec1及其openssl驱动,需通过apt buildpack添加:

  • 添加apt buildpack到项目:
    heroku buildpacks:add --index 1 heroku-community/apt
    
  • 在项目根目录创建Aptfile,写入以下内容:
    xmlsec1
    libxmlsec1-openssl
    
  • 提交变更并重新部署:
    git add Aptfile
    git commit -m "Add xmlsec1 system dependencies for Heroku-22"
    git push heroku main
    

2. 配置共享库路径

确保Python能找到xmlsec的系统库,检查并设置环境变量:

  • 查看当前LD_LIBRARY_PATH:
    heroku config:get LD_LIBRARY_PATH
    
  • 如果路径未包含/usr/lib/x86_64-linux-gnu,添加该路径:
    heroku config:set LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
    

3. 锁定Python xmlsec包兼容版本

在requirements.txt中指定与Heroku-22系统库兼容的xmlsec版本:

xmlsec>=1.3.12,<2.0.0

更新依赖后重新部署。

4. 验证xmlsec工具可用性

在Heroku dyno中直接测试xmlsec命令:

heroku run bash
# 进入容器后执行
xmlsec --version

若能正常输出版本信息,说明系统依赖安装无误;若仍报错,检查Aptfile配置是否正确。

5. 调整Django SAML配置

  • 在settings.py的SAML2_AUTH配置中明确指定加密引擎:
    SAML2_AUTH = {
        # 其他已有配置...
        'XMLSEC_CRYPTO_ENGINE': 'openssl',
    }
    
  • 确认Metadata文件中的证书路径正确,且证书文件权限为应用可读取(建议放在项目static/certs/目录下)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:25:09