certbot для letsencrypt отсутствует модуль pyopenssl
Мне нужна помощь в настройке 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
Пожалуйста, помогите
Спасибо
10 ответов
Не пытайтесь установить certbot вручную в системах CentOS/RHEL. Это просто делает огромный беспорядок. Вместо этого установите его из EPEL.
yum install epel-release
yum install certbot
Я сталкивался с такой же проблемой дважды в двух отдельных системах Centos7 за последние 2 месяца. Вот что сработало для меня:
- yum remove pyOpenSSL [Это удалит certbot, установленный через epel]
- yum install openssl-devel python-devel [Может или не нужно на самом деле]
- pip install certbot
- pip install certbot-apache
После выполнения этих шагов я смог успешно продлить свои сертификаты с помощью certbot.
Я сталкиваюсь с той же проблемой. Используя python venv, я смог заставить работать certbot с помощью pip.
Шаги: Установите virtualenv
pip install virtualenv --upgrade
Создать виртуал
virtualenv -p /usr/bin/python2.7 certbot
Активировать certbot
virtualenv
. /root/certbot/bin/activate
Ваше приглашение может превратиться в нечто подобное
(certbot) [root@hostname ~]#
Затем установите pip certbot
pip install certbot
После завершения вы можете проверить certbot
командование под certbot
virtualenv, но это не практично, если вы собираетесь использовать cron для настройки продлений certbot. Итак, отключите виртуальную среду,
(certbot) [root@hostname ~]# deactivate
Теперь запустите команду certbot из
/root/certbot/bin/certbot
Правильное исправление:
mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL
Благодаря cnritng от github.
Кажется, это работает для меня.
Получите обороты отсюда: 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
Не смешивать 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.9.3. Это было вызвано установкой плагина nginx.
Вы можете легко воспроизвести рабочую установку:
docker run -it --rm centos: centos7 bash yum -y установить epel-release yum -y установить certbot certbot -h
Кажется, что версия исходного кода epel слишком старая, вы можете удалить certbot из yum-версии и установить pip
Просто заставил это работать, запустив
sudo pip install pyOpenSSL==0.14.0
он удалил версию 0.13 и установил 0.14, затем certbot просто работал нормально.
Вместо certbot, клиент letsencrypt решил для меня проблему.
Вы можете удалить другой клиент (ы)
pip uninstall certbot
pip uninstall pyopenssl
А затем установите letsencrypt:
pip install letsencrypt