certbot用于letsencrypt缺少的pyopenssl模块


10

我需要帮助为LetsEncrypt设置CertBot

我在具有Python 2.7的CentOS 7上运行

当我运行certbot时,出现以下错误:

[root@li86-193 frappe-bench]#certbot certonly --manual

Traceback (most recent call last):
  File "/usr/bin/certbot", line 7, in <module>
    from certbot.main import main
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 10, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 31, in <module>
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()
  File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 112, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/requests/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.

[root@li86-193 frappe-bench]# pip show certbot
Name: certbot
Version: 0.11.1
Summary: ACME client
Home-page: https://github.com/letsencrypt/letsencrypt
Author: Certbot Project
Author-email: client-dev@letsencrypt.org
License: Apache License 2.0
Location: /usr/lib/python2.7/site-packages
Requires: ConfigArgParse, configobj, zope.component, pytz, setuptools, cryptography, zope.interface, pyrfc3339, mock, parsedatetime, six, acme, PyOpenSSL

[root@li86-193 frappe-bench]# pip show pyopenssl
Name: pyOpenSSL
Version: 16.2.0
Summary: Python wrapper module around the OpenSSL library
Home-page: https://pyopenssl.readthedocs.io/
Author: Hynek Schlawack
Author-email: hs@ox.cx
License: Apache License, Version 2.0
Location: /usr/lib/python2.7/site-packages
Requires: six, cryptography

请帮忙

谢谢


请修正您的文章以使其可读,回溯都被弄乱了。。。此外,请包括您如何安装certbot,迄今为止为使它工作而所做的工作以及可能实际上帮助我们理解原因的所有信息您收到此错误。
Ginnungagap

请参阅我对使用virtualenv解决方案的评论
Danie

Answers:


7

不要尝试在CentOS / RHEL系统上手动安装certbot。真是一团糟。而是从EPEL安装它。

yum install epel-release
yum install certbot

1
我从epel安装,仍然遇到相同的问题
chrismarx

7
我运行EPEL certbot软件包并解决了此问题。我系统上的其他内容已将“请求”库更新为最新版本(在撰写本文时为2.13.0),但是作为certbot依赖项安装的RPM为2.6.0。比较pip list 2>/dev/null | grep requests和的版本rpm -q python-requests --queryformat '%{VERSION}\n'。如果它们不同,请尝试pip install --upgrade --force-reinstall 'requests==2.6.0'
艾伦·艾维

4

在过去的两个月中,我在2个单独的Centos7系统上两次遇到相同的问题。这对我有用:

  • yum remove pyOpenSSL [这将删除通过epel安装的certbot]
  • yum install openssl-devel python-devel [可能实际上不一定,]
  • 点安装certbot
  • 点安装certbot-apache

完成这些步骤后,我能够使用certbot成功续订我的证书。


1
这工作了。urllib3在安装的pip和yOpen的pyOpenSSL版本之间混淆了。删除yum软件包并使用pip安装可纠正此问题。
scoota269

应用了前三个命令后,我得到以下错误:UnknownExtra: requests 2.6.0 has no such extra feature 'security'执行时$ certbot certonly ...
Pathros,

3

我遇到了同样的问题。使用python venv,我能够使用pip使certbot工作。

步骤:安装virtualenv

pip install virtualenv --upgrade

创建一个virtualenv

virtualenv -p /usr/bin/python2.7 certbot

激活certbotvirtualenv

. /root/certbot/bin/activate

您的提示可能会变成这样

(certbot) [root@hostname ~]#

然后点安装certbot

pip install certbot

完成后,您可以certbotcertbotvirtualenv 下测试命令,但是如果要使用cron设置certbot续订,则这不切实际。因此停用虚拟环境,

(certbot) [root@hostname ~]# deactivate

现在从运行bot命令

/root/certbot/bin/certbot

2

这似乎为我工作。

从此处获取rpm:http : //rpm.pbone.net/index.php3/stat/4/idpl/31446026/dir/centos_7/com/pyOpenSSL-0.15.1-1.el7.noarch.rpm.html

wget ftp://ftp.muug.mb.ca/mirror/centos/7.2.1511/cloud/x86_64/openstack-mitaka/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum install certbot

“ ImportError:'pyOpenSSL'模块缺少必需的功能。请尝试升级到v0.14或更高版本。” 我遇到了这个问题,最后通过安装'pyOpenSSL-0.15.1-1.el7.noarch.rpm'来解决
kai.fantasy

2

正确的解决方法是:

mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL

感谢cnritng frim github。


立刻做到了魔术。
j4hangir

1

请勿yum通过已安装的软件包混合pip使用。正确的解决方案包括删除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

0

我在0.9.3中有同样的问题。这是由安装nginx插件引起的。

您可以轻松地复制有效的安装:

docker run -it --rm centos:centos7 bash yum -y安装epel-release yum -y安装certbot certbot -h


任何解决方法?
chrismarx

不知道问题出在哪里。我重新安装了CentOS,现在可以正常工作了:(
cs378

0

通过运行使其工作

sudo pip install pyOpenSSL==0.14.0

它删除了0.13版本并安装了0.14,然后certbot正常工作。


我得到以下信息:ERROR: Cannot uninstall 'pyOpenSSL'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
Pathros

0

看来epel来源的版本太旧,您可以删除yum版本的certbot并通过pip安装它


-4

而不是certbot,letsencrypt客户端为我解决了这个问题。

您可以删除其他客户端

pip uninstall certbot
pip uninstall pyopenssl

然后安装letsencrypt:

pip install letsencrypt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.