certbot для letsencrypt отсутствует модуль pyopenssl

10

Мне нужна помощь в настройке CertBot для LetsEncrypt

Я работаю на CentOS 7 с Python 2.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

Пожалуйста, помогите

Спасибо

cs378
источник
Пожалуйста, исправьте ваше сообщение, чтобы его можно было прочитать, трассировки все испорчены ... Также, пожалуйста, укажите, как вы установили certbot, что вы сделали, чтобы попытаться заставить его работать до сих пор, и любую информацию, которая может реально помочь нам понять, почему Вы получаете эту ошибку.
Ginnungagap
Пожалуйста, смотрите мой комментарий для решения с использованием virtualenv
Дани

Ответы:

7

Не пытайтесь установить certbot вручную в системах CentOS / RHEL. Это просто делает огромный беспорядок. Вместо этого установите его из EPEL.

yum install epel-release
yum install certbot
Майкл Хэмптон
источник
1
Я установил из epel, и все еще получаю ту же проблему
chrismarx
7
Я запустил пакет certbot EPEL и решил эту проблему. Что-то еще в моей системе обновило библиотеку запросов до последней версии (2.13.0 на момент написания этой статьи), но RPM, установленный в качестве зависимости для certbot, равен 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 за последние 2 месяца. Вот что сработало для меня:

  • yum remove pyOpenSSL [Это удалит certbot, установленный через epel]
  • yum install openssl-devel python-devel [Может или не нужно на самом деле]
  • pip install certbot
  • pip install certbot-apache

После выполнения этих шагов я смог успешно продлить свои сертификаты с помощью certbot.

Bluemorpho
источник
1
Это сработало. urllib3 путается между установленным pip и yum установленными версиями pyOpenSSL. Удаление пакетов yum и установка с помощью pip могут исправить это.
scoota269
После применения этих первых трех команд, я получаю followin ошибку: UnknownExtra: requests 2.6.0 has no such extra feature 'security'когда я исполняю$ certbot certonly ...
Патросе
3

Я сталкиваюсь с той же проблемой. Используя python venv, я смог заставить работать certbot с помощью pip.

Шаги: Установите virtualenv

pip install virtualenv --upgrade

Создать виртуал

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

Активировать certbotvirtualenv

. /root/certbot/bin/activate

Ваше приглашение может превратиться в нечто подобное

(certbot) [root@hostname ~]#

Затем установите pip certbot

pip install certbot

После завершения вы можете проверить certbotкоманду под certbotvirtualenv, но это не практично, если вы собираетесь использовать cron для настройки продлений certbot. Итак, отключите виртуальную среду,

(certbot) [root@hostname ~]# deactivate

Теперь запустите команду certbot из

/root/certbot/bin/certbot
Danie
источник
2

Кажется, это работает для меня.

Получите обороты отсюда: 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
user353255
источник
«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 от github.

Тим Данкли
источник
Сделал магию сразу.
4
1

Не смешивайте yumустановленные пакеты с помощью пакетов pip. Правильное исправление включает в себя удаление пакетов pip и установку всего из yum. Я изложил это здесь .

Вам не нужен новый pyOpenSSL на CentOS 7 для запуска 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

rhoerbe
источник
любой обходной путь?
Крисмаркс
Не знаю, где была проблема. Я переустановил CentOS, и теперь он работает :(
cs378
0

просто заставил это работать, запустив

sudo pip install pyOpenSSL==0.14.0

он удалил версию 0.13 и установил 0.14, затем certbot просто работал нормально.

ignivs
источник
Я получаю следующее: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.
Патрос
0

Кажется, что версия исходного кода epel слишком старая, вы можете удалить certbot из yum-версии и установить его в pip

Yingjia
источник
-4

Вместо certbot, клиент letsencrypt решил для меня проблему.

Вы можете удалить другой клиент (ы)

pip uninstall certbot
pip uninstall pyopenssl

А затем установите letsencrypt:

pip install letsencrypt
Алексей К
источник