【发布时间】:2014-08-11 00:14:44
【问题描述】:
我在一个旧的 nas 盒子上有一个 Dropbox 上传脚本,最近我收到以下错误
SSL 证书错误:[Errno 1] _ssl.c:504: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm
我认为这是由于包装盒上的 openssl 已过时
所以我下载了 openssl,从源代码构建并安装了它,现在当我运行以下命令时,它似乎已正确更新。
openssl version
OpenSSL 1.0.1h 5 Jun 2014
但是看起来 Python 仍然在引用旧版本,我该如何更新它?
python -c "import ssl; print ssl.OPENSSL_VERSION"
OpenSSL 0.9.7m 23 Feb 2007
【问题讨论】:
-
天哪,0.9.7...您需要迁移到 0.9.8。 1.0.1 不二进制兼容。
-
您需要针对较新的 OpenSSL 重新编译 Python。
-
@Paul - Python 是否静态链接?我认为它使用动态链接到 OpenSSL。来自
Modules/Setup.dist:-L$(SSL)/lib -lssl -lcrypto。如果是动态的,他只需要设置LD_PRELOAD,指向0.9.8的共享对象,然后启动Python。 -
取决于平台,但也可以。查看底层
ssl.OPENSSL_VERSION的实现,它将显示它加载的动态库(不仅仅是它最初链接的库),因此可能值得尝试LD_PRELOAD。
标签: python ssl openssl dropbox-api nas