Certbot: ImportError:“pyOpenSSL”模块缺少必需的功能。 尝试升级到 v0.14 或更高版本。

创建于 2018-02-05  ·  17评论  ·  资料来源: certbot/certbot

我的操作系统是(包括版本):

CentOS 7.4.1708(64 位)

我使用(certbot-auto、OS 包管理器、pip 等)安装了 Certbot:

centos 7 百胜

我运行了这个命令,它产生了这个输出:

sudo certbot --authenticator 独立 --installer nginx --pre-hook "nginx -s stop" --post-hook "nginx"

输出:
Traceback (most recent call last): File "/bin/certbot", line 9, in <module> load_entry_point('certbot==0.20.0', 'console_scripts', 'certbot')() File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 572, i n load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2755, in load_entry_point return ep.load() File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2408, in load return self.resolve() File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2414, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/lib/python2.7/site-packages/certbot/main.py", line 19, in <module> from certbot import client File "/usr/lib/python2.7/site-packages/certbot/client.py", line 11, in <module > from acme import client as acme_client File "/usr/lib/python2.7/site-packages/acme/client.py", line 32, in <module> requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() # type: i gnore File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 112 , in inject_into_urllib3 _validate_dependencies_met() File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 147 , in _validate_dependencies_met raise ImportError("'pyOpenSSL' module missing required functionality. " ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

Certbot 的行为与我的预期不同,因为:

我排除了它给我证书,但它给出了那个错误。 已经尝试更新 pyOpenSSL,但没有用

这是显示问题的 Certbot 日志(如果可用):

默认情况下,日志存储在/var/log/letsencrypt中。 随意编辑您认为合适的域、电子邮件和 IP 地址。

文件夹不存在

这是我正在配置的域的相关 nginx 服务器块或 Apache 虚拟主机:

上游后端{
# 网络数据服务器
服务器 127.0.0.1:19999;
保活 64;
}

服务器 {
# nginx 监听这个
听 80;

# the virtual host name of this
server_name netdata.mydomain.fi;

location / {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_pass_request_headers on;
    proxy_set_header Connection "keep-alive";
    proxy_store off;
}

}

unplanned

最有用的评论

试试pip install --upgrade --force-reinstall 'requests==2.6.0'

所有17条评论

centos-release-7-4.1708.el7.centos.x86_64

ImportError:“pyOpenSSL”模块缺少必需的功能。 尝试升级到 v0.14 或更高版本。

pyOpenSSL 0.13.1从升级到pyOpenSSL 17.5.0

降级时:

sudo pip install pyOpenSSL==0.15.1

同样的错误

ImportError:“pyOpenSSL”模块缺少必需的功能。 尝试升级到 v0.14 或更高版本。

试试pip install --upgrade --force-reinstall 'requests==2.6.0'

不要通过pip混合yum安装的软件包。 正确的修复包括删除 pip 包并安装yum中的所有内容。 我在这里概述了它。

您不需要在 CentOS 7 上更新 pyOpenSSL 即可运行 certbot!

pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3

此错误在 RHEL 7 中仍然存在

Traceback (most recent call last):
  File "/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.22.2', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 558, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2682, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2355, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 20, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 13, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 33, in <module>
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()  # type: ignore
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 112, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 147, in _validate_dependencies_met
    raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

如此加重。 我开始讨厌 Centos。

尝试在 CentOS 上更新 pyOpenSSL,得到以下错误:

sudo pip install pyOpenSSL==0.15.1
收集pyOpenSSL==0.15.1
下载 https://files.pythonhosted.org/packages/37/2f/840f2656e4bcf257cb814825bb751a9197ca6f39f1fa036ab111920ac7ef/pyOpenSSL-0.15.1-py2.py3-none-any.whl (102kB)
100% |████████████████████████████████| 112kB 1.9MB/秒
已满足要求:/usr/lib/python2.7/site-packages 中的六个>=1.5.2(来自 pyOpenSSL==0.15.1)(1.9.0)
已满足要求:/usr/lib64/python2.7/site-packages 中的密码学>=0.7(来自 pyOpenSSL==0.15.1)(2.3.1)
已满足要求:/usr/lib/python2.7/site-packages 中的 idna>=2.1(来自 cryptography>=0.7->pyOpenSSL==0.15.1)(2.7)
已满足要求:enum34; /usr/lib/python2.7/site-packages 中的 python_version < "3" (来自密码学>=0.7->pyOpenSSL==0.15.1) (1.0.4)
已满足要求:/usr/lib64/python2.7/site-packages 中的 cffi!=1.11.3,>=1.7(来自密码学>=0.7->pyOpenSSL==0.15.1)(1.11.5)
已满足要求:/usr/lib/python2.7/site-packages 中的 asn1crypto>=0.21.0(来自 cryptography>=0.7->pyOpenSSL==0.15.1)(0.24.0)
已满足要求:ipaddress; /usr/lib/python2.7/site-packages 中的 python_version < "3" (来自密码学>=0.7->pyOpenSSL==0.15.1) (1.0.16)
已满足要求:/usr/lib/python2.7/site-packages 中的 pycparser(来自 cffi!=1.11.3,>=1.7->cryptography>=0.7->pyOpenSSL==0.15.1)(2.14)
安装收集的包:pyOpenSSL
找到现有安装:pyOpenSSL 0.13.1
无法卸载“pyOpenSSL”。 这是一个 distutils 安装的项目,因此我们无法准确确定哪些文件属于它,这只会导致部分卸载。

一点上下文:pyOpenSSL 的 dist 包是 0.13.1。 卸载它以便通过 pip 更新它 - Yum 让我卸载 certbot。 考虑到 certbot 是我需要更新 pyOpenSSL 的全部原因——有点让我们陷入困境 22。

百胜信息 pyOpenSSL
加载的插件:fastestmirror、langpacks
从缓存的主机文件加载镜像速度

  • 基地:repos.dfw.quadranet.com
  • epel:mirror.nodesdirect.com
  • 演员:reflector.westga.edu
  • 更新:repo1.dal.innoscale.net
    已安装的软件包
    名称:pyOpenSSL
    拱门:x86_64
    版本:0.13.1
    发布:3.el7
    尺寸:628 k
    回购:已安装
    来自回购:基地
    摘要:围绕 OpenSSL 库的 Python 包装器模块
    网址:http: //pyopenssl.sourceforge.net/
    许可证:美国手语 2.0
    描述:围​​绕 OpenSSL 库子集的高级包装器,其中包括
    : * SSL.Connection 对象,包装了 Python 的可移植方法
    : 插座
    : * 用 Python 编写的回调
    : * 广泛的错误处理机制,镜像 OpenSSL 的错误代码

为了调试和地狱,我卸载了 dist pyOpenSSL(因此也卸载了 certbot),对 pyOpenSSL 进行了 pip 安装,然后重新安装了 certbot。 Yum 用 0.13.1 覆盖了 pyOpenSSL 0.15.1 ....当我尝试使用 certbot 更新时,结果相同。

然后我尝试了 sudo pip install --upgrade pyopenssl - 以及关于 distutils 安装版本的相同错误消息。

今天没有解决方法 - 猜猜我的证书会过期

acme.sh 有效,我已经放弃了 certbot ;)

伙计们,实际上找到了解决此问题的方法。 除了偶然发现这篇文章之外,我不能把任何事情归功于自己: https: //medium.com/@getpagespeed/fix -importerror-pyopenssl-module-missing-required-functionality-e1c514797204

感谢 Danila Vershinin 找到了解决方案!

我只能补充一点,如果您安装了 certbot 和 aws cli,那么很可能会出现这个问题。
根据我的快速研究,似乎按照建议安装系统包会破坏 aws cli。 修复 aws cli 会破坏 certbot 等,所以真的不好玩:)

伙计们,实际上找到了解决此问题的方法。 除了偶然发现这篇文章之外,我不能把任何事情归功于自己: https: //medium.com/@getpagespeed/fix -importerror-pyopenssl-module-missing-required-functionality-e1c514797204

感谢 Danila Vershinin 找到了解决方案!

修复对我不起作用 - 没有安装 pip 包,并且所有列出的 yum 报告已安装且是最新的。

关于在同一系统上拥有 aws cli 和 certbot。

它归结为 urllib3 的冲突版本。
awscli-1.16.81需要urllib3-1.24.1python2-certbot-0.27.1-1.el7.noarch.rpmurllib3-1.10.2一起使用。
较新的版本给出了上述错误。

我无法让它们一起工作,即使使用--user安装awscli也会出现同样的问题,因为较新的 urllib 然后被放置在/root/.local/libcertbot中也在看这里……

我无法让它们一起工作,即使使用 --user 安装 awscli 也会出现同样的问题,因为较新的 urllib 然后被放置在 /root/.local/lib 中,而 certbot 也会在这里寻找......

安装 aws cli 后 urllib3 的冲突版本也有同样的问题。 最终,在修复 certbot 后,我​​使用 virtualenv 安装了 aws cli。
https://docs.aws.amazon.com/cli/latest/userguide/install-virtualenv.html
现在,certbot 和 aws cli 都很好。

我还使用他们提供的捆绑安装程序安装了 awscli,因此它是独立的。

https://docs.aws.amazon.com/cli/latest/userguide/install-bundle.html

解决 awscli 和 certbot 之间冲突的另一种方法是安装 python36 并使用它运行 awscli。

certbot 包可以不在自己的环境中安装其 python 模块,或者在版本要求方面不那么严格吗?

此页面是否有帮助?
0 / 5 - 0 等级