Python 引用旧的 SSL 版本

标签 python ssl openssl dropbox-api nas

我有一个旧的 nas 盒子上有一个 Dropbox 上传脚本,最近我遇到了以下错误

SSL certificate error: [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

最佳答案

几天后就可以正常工作了。 MAC OS X El Captian 或更高版本

 sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7
 sudo rm -rf "/Applications/Python 2.7"
 cd /usr/local/bin/
 ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | tr -d @ | xargs rm
 brew uninstall python
 brew uninstall openssl
 brew link --force openssl

现在使用 brew 再次安装 python 和 openssl。

 brew install openssl
 brew install python --with-brewed-openssl

将以下内容添加到您 MAC 上的 ~/.bash_profile 中的 PATH

 vi ~/.bash_profile
 export PATH=/usr/local/opt/openssl/bin:/usr/local/opt/python/libexec/bin:$PATH

重启终端

 python --version (verify if it is picking up the right version)
 openssl version -a (verify if it is picking up the right version)
 python -c "import ssl; print ssl.OPENSSL_VERSION"

(注意:如果您安装了 Python3,则必须在内联编译步骤中更新 print 语法)

python -c "import ssl; print(ssl.OPENSSL_VERSION)"

应该给你最新版本的 OPEN SSL 版本

关于Python 引用旧的 SSL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24323858/

相关文章:

encryption - 仅在登录时使用 ssl?或整个网站?

Java/Kotlin AES-128-CBC 加密产生的结果与 OpenSSL 不同

sockets - 关闭套接字 FD 后 SSL session 恢复

python - Paramiko BindAddress 选项

python - 使用 Beautifulsoup 解析时保持 XML 文件的缩进

python - 将列转换为字典并访问

c# - 服务帐户无法从 Windows 证书存储加载 X509Certificate

ios - Swift NSStream() SSL - 要求用户确认

java - 如何在两个tomcat之间使用https时创建两个Tomcat满意的自签名证书?

python - Python中通过正则表达式提取字符串的一部分