模块“lib”没有属性“X509_V_FLAG_CB_ISSUER_CHECK”

模块“lib”没有属性“X509_V_FLAG_CB_ISSUER_CHECK”

我在我的 ubuntu 机器上使用 python 3.6,在进行一些测试时遇到此错误:

CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography and will be removed in a future release.
...
from OpenSSL import crypto, SSL
default:       File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1550, in <module>
default:         class X509StoreFlags(object):
default:       File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1570, in X509StoreFlags
default:         CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
default:     AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

对错误进行了研究。因此,我安装了 Python 3.9,然后更新替代方案以将 Python 3.9 指定为要使用的主要 Python。然后我重新安装并升级 OpenSSL 和 Cryptography。

sudo pip3 install pyOpenSSL --upgrade
sudo pip3 install cryptography --upgrade

我再次运行测试,仍然遇到同样的错误。

我决定检查 python3.9 dist-packages 文件夹 (/usr/local/lib/python3.9/dist-packages/),发现 OpenSSL 和 Cryptography 根本找不到。它们位于 /usr/local/lib/python3.6/dist-packages/。这可能是错误持续存在的原因吗?

答案1

我遇到了这个问题pyOpenSSL==19.0.0,并能用以下方法修复它:

pip3 install pyOpenSSL --upgrade

答案2

这似乎是由于 pip 22.2.2 升级造成的。检查是否可以将 pyOpenSSL 升级到 22.0.0 来修复此问题。

如果它不起作用,请告诉我。

答案3

我遇到了同样的问题。您需要将 pip 更新到最新版本。

  1. 删除旧版本
sudo apt remove python3-pip 
  1. 根据pip 安装指南, 请执行下列操作:
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

答案4

将 cryptography 升级到版本 38.0.1 后,pip 命令在我的 Linux 系统上完全损坏,我无法以任何方式修复它。我只能通过删除以下行来解决问题

“CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK”

来自文件 /usr/lib/python3/dist-packages/OpenSSL/crypto.py

太棒了! 之后,pip 又可以工作了,我可以将加密降级到与 pyOpenSSL==20.0.1 兼容的版本:

pip 卸载加密

pip install--升级加密==36.0.2

相关内容