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

如何在Python的signxml库中启用SHA1进行XML签名?

解决signxml库使用SHA1生成XML签名的问题

signxml默认禁用SHA1这类弱算法,签名时需通过自定义SignatureConfiguration开启支持,具体步骤如下:

  • 导入SignatureConfiguration类
  • 构建允许SHA1的配置对象,明确指定允许的签名算法和摘要算法
  • 将配置对象传入XMLSigner的config参数

完整代码示例

from signxml import XMLSigner, XMLVerifier, SignatureConfiguration

# 构建允许SHA1的签名配置
sha1_config = SignatureConfiguration(
    signature_methods=["rsa-sha1"],
    digest_algorithms=["sha1"]
)

# 使用自定义配置创建XMLSigner并执行签名
signed_saml_root = XMLSigner(
    method=signxml.methods.enveloped,
    signature_algorithm="rsa-sha1",
    digest_algorithm="sha1",
    c14n_algorithm="http://www.w3.org/2001/10/xml-exc-c14n#",
    config=sha1_config  # 关键:传入自定义配置以启用SHA1
).sign(saml_root, key=self.key, cert=self.cert, always_add_key_value=True)

# 验证签名时同样需要传入允许SHA1的配置
verified_data = XMLVerifier().verify(
    signed_saml_root, 
    x509_cert=self.cert,
    expect_config=sha1_config
).signed_xml

说明

报错的核心原因是signxml的默认SignatureConfiguration未包含SHA1相关算法,通过自定义配置将其加入允许列表后,即可正常使用SHA1完成签名与验证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:02:09