Ubuntu20.04运行依赖Python2.7的Stampy时报unsupported hash type错误如何解决
问题根因
Ubuntu 20.04 预装的 OpenSSL 1.1.x 默认调整了加密安全等级,对已停止维护的 Python 2.7 的部分哈希调用做了限制。官方源提供的 Python 2.7 包编译时未适配对应的接口规则,因此会出现 hashlib 可正常导入,但 sha224、sha256 等特定哈希算法无法调用的报错。
适配 Ubuntu 20.04 的修复方案
方案1:安装兼容依赖包(优先尝试,无需编译)
- 首先启用 universe 软件源,安装旧版 OpenSSL 兼容开发包:
add-apt-repository universe && apt update apt install libssl1.0-dev
- 完成后重装 Python 2.7 核心组件:
apt install --reinstall python2.7-minimal python2.7-dev
- 验证修复效果,执行以下命令无报错即为修复成功:
python2.7 -c "import hashlib; print(hashlib.sha256('test').hexdigest())"
方案2:手动编译适配哈希接口的 Python 2.7(方案1无效时使用)
- 先安装编译所需的全部依赖:
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl1.0-dev libreadline-dev libffi-dev
- 从 Python 官方存档下载 Python 2.7.18 源码包(Python 2 最终稳定版本),解压后进入源码目录。
- 执行编译配置,指定启用 SSL 支持:
./configure --enable-optimizations --with-ssl make altinstall
- 编译完成后,将 Stampy 调用的 Python 路径替换为新编译的 Python 2.7 路径即可。
方案3:调整 OpenSSL 全局配置(临时测试用)
如果仅需要临时验证功能,不需要长期修改 Python 环境,可以降低系统加密安全等级临时兼容:
- 编辑
/etc/ssl/openssl.cnf文件,在文件最开头添加如下配置:
openssl_conf = default_conf [default_conf] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] MinProtocol = TLSv1.0 CipherString = DEFAULT@SECLEVEL=1
- 保存退出后直接重新运行 Stampy 即可。该方案会降低系统全局加密安全等级,不推荐生产环境长期使用。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

