Версия CentOS Linux 7.3.1611
Диспетчер пакетов ОС
Отслеживание (последний вызов последний):
Файл "/ bin / certbot", строка 7, в
from certbot.main import main
Файл "/usr/lib/python2.7/site-packages/certbot/main.py", строка 17, в
из клиента импорта certbot
Файл "/usr/lib/python2.7/site-packages/certbot/client.py", строка 10, в
из клиента импорта acme как acme_client
Файл "/usr/lib/python2.7/site-packages/acme/client.py", строка 31, в
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3 () # тип: игнорировать
Файл "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", строка 112, в inject_into_urllib3
_validate_dependencies_met ()
Файл "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", строка 147, в _validate_dependencies_met
поднять ImportError ("В модуле 'pyOpenSSL' отсутствуют необходимые функции."
ImportError: в модуле pyOpenSSL отсутствуют необходимые функции. Попробуйте перейти на версию 0.14 или новее.
Он должен успешно обновляться вместо ошибок.
/var/log/letsencrypt
. Не стесняйтесь редактировать домены, электронную почту и IP-адреса по своему усмотрению.Нет записей в журнале. Я удалил pyopenssl и переустановил его.
Имя: pyOpenSSL
Версия: 16.2.0
Описание: модуль оболочки Python для библиотеки OpenSSL
Домашняя страница: https://pyopenssl.readthedocs.io/
Автор: Хайнек Шлавак
Электронная почта автора: [email protected]
Лицензия: Лицензия Apache, версия 2.0
Расположение: /usr/lib64/python2.7/site-packages
Требуется: шесть, криптография
Но ошибка все еще сохраняется. Любая идея ?
Возможно, существует несколько версий pyOpenSSL, поэтому urllib3 запутается. В /usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py должно быть несколько строк вроде этой:
# pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509
# attribute is only present on those versions.
from OpenSSL.crypto import X509
x509 = X509()
if getattr(x509, "_x509", None) is None:
raise ImportError("'pyOpenSSL' module missing required functionality. "
"Try upgrading to v0.14 or newer.")
Не могли бы вы добавить отладочные коды и посмотреть, что будет на выходе?
# pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509
# attribute is only present on those versions.
import OpenSSL.crypto
print(OpenSSL.crypto)
from OpenSSL.crypto import X509
x509 = X509()
if getattr(x509, "_x509", None) is None:
raise ImportError("'pyOpenSSL' module missing required functionality. "
"Try upgrading to v0.14 or newer.")
Помните, что Python не любит вкладки. Всегда вставляйте пробелы для идентификации. Кроме того, для изменения этого файла вам потребуется root.
Вот результат:
Отслеживание (последний вызов последний):
Файл "/ bin / certbot", строка 7, в
from certbot.main import main
Файл "/usr/lib/python2.7/site-packages/certbot/main.py", строка 17, в
из клиента импорта certbot
Файл "/usr/lib/python2.7/site-packages/certbot/client.py", строка 10, в
из клиента импорта acme как acme_client
Файл "/usr/lib/python2.7/site-packages/acme/client.py", строка 31, в
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3 () # тип: игнорировать
Файл "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", строка 112, в inject_into_urllib3
_validate_dependencies_met ()
Файл "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", строка 149, в _validate_dependencies_met
поднять ImportError ("В модуле 'pyOpenSSL' отсутствуют необходимые функции."
ImportError: в модуле pyOpenSSL отсутствуют необходимые функции. Попробуйте перейти на версию 0.14 или новее.
/usr/lib64/python2.7/site-packages/OpenSSL/crypto.so
Этот путь похож на более ранний пакет pyOpenSSL. Не могли бы вы удалить pyOpenSSL через yum и повторить попытку?
У меня такая же проблема на centos7. Удаление pyOpenSSL.x86_64 0: 0.13.1-3.el7 не помогает, потому что yum install certbot
переустановит его снова.
Однако я нашел обходной путь для сломанного RPM:
yum remove pyOpenSSL.x86_64
cd
mkdir virtualenv
cd virtualenv/
virtualenv --no-site-packages -p /usr/bin/python2.7 certbot
. ~/virtualenv/certbot/bin/activate
pip import six packaging appdirs
pip install setuptools --upgrade pip install certbot
certbot help
Такая же проблема здесь при новой установке centos.
rpm --query centos-release # centos-release-7-3.1611.el7.centos.x86_64
wget ftp://ftp.muug.mb.ca/mirror/centos/7.3.1611/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
certbot renew # OK
Я думаю, что это скорее проблема CentOS, чем certbot. Может ли кто-нибудь сообщить CentOS, что их pyOpenSSL слишком старый?
Проблема сохранялась в моей системе даже после обновления до pyOpenSSL 16.something
Та же проблема возникла недавно на моей машине CentOS 7.
Единственный рабочий обходной путь - pip install pyOpenSSL=0.13.1
Последние два месяца это не удалось.
И я попробовал снова только сейчас, снова не удалось.
Выход:
>> sudo certbot certonly --standalone -d mydomain.com
<< Traceback (most recent call last):
File "/bin/certbot", line 9, in <module>
load_entry_point('certbot==0.12.0', 'console_scripts', 'certbot')()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
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.
Затем я пробую это, и это работает:
Ссылка для ответа: https://serverfault.com/questions/830284/certbot-for-letsencrypt-missing-pyopenssl-module
Просто для справки ... как правило, обновлять pyOpenSSL через pip на CentOS небезопасно, поскольку таким образом можно сломать yum.
Какой пакет certbot вы используете? Я был бы признателен, если бы вы могли установить 0.13.0 из epel-testing и всегда следить за тем, чтобы в вашей системе было полное обновление yum.
Возможно, вам потребуется использовать yum переустановить pyOpenSSL для восстановления вашей системы (проверьте его состояние с помощью rpm -qV pyOpenSSL).
В этом пакете есть проблема с таймером обновления systemd, поэтому я не сделал его стабильным, но просто выполнение запросов certbot и ручное обновление certbot будут работать.
Релиз 0.14.0 тоже на подходе ... и я буквально только что протестировал это в AWS.
Мне любопытно - первоначальный автор установил его через диспетчер пакетов, так где же нам закрепить версию для pip?
У людей все еще есть эта проблема? И если да, то какой метод установки вы используете?
Вы можете попробовать метод, описанный в этом Dockerfile, который у меня сработал:
https://github.com/identinetics/docker-nginx/blob/master/Dockerfile#L65
По-прежнему существует проблема с недавно установленной и обновленной версией CentOS 7.3.
Устранена проблема, установив обновленную версию pyOpenSSL rpm (pyOpenSSL-0.14-3.fc222 показалось достаточно, в то время как pyOpenSSL-16.2.0-1.fc25 не работал), но как быть уверенным, что он ничего не сломает ?!
https://www.rpmfind.net/linux/rpm2html/search.php?query=pyOpenSSL
Спасибо
@ tisc0 Меня очень интересует более подробная информация о том, как именно вы установили и запустили это, чтобы решить эту проблему.
Когда я создавал пакеты certbot centos7, я без проблем тестировал их в AWS - конечно, не то, что вы описали или описывает эта проблема.
Ужасная идея устанавливать подобный rpm-пакет Fedora непосредственно на centos7, особенно с таким основным пакетом, как pyOpenSSL.
Привет, Хогартдж,
Извините за отсутствие деталей, в эти дни вроде бы занято :)
Суммируя :
[ root @ c7-dse ~] # echo N | ням удалить python-urllib3 | awk '{print $ 1}'
(...)
Зависимости
==============
Упаковка
Удаление:
python-urllib3
Удаление
Certbot
ipa-клиент
python-запросы
python2-acme
python2-certbot
python2-ipaclient
python2-ipalib
Любая идея объяснить, почему переустановка некоторых пакетов заставила его работать, приветствуется :)
@ tisc0 спасибо за дополнительную информацию
Принудительная установка / удаление пакетов часто может вызывать проблемы - как и обновления системных библиотек с помощью пакетов.
Редко бывает хорошей идеей просто взять пакет Fedora для использования CentOS, не выполняя перестройку самого пакета из src.rpm.
При переустановке пакетов (вместо того, чтобы выполнять удаление и установку с проблемами зависимостей, yum переустановка может быть спасением), проверяется наличие исходных файлов.
Я очень рад слышать, что переустановка пакетов CentOS помогает вам :)
Поскольку у @ tisc0, похоже, есть рабочая настройка, я собираюсь закрыть эту проблему. Если у кого-то все еще есть проблемы, напишите о новой проблеме, так как эта ветка становится довольно переполненной.
для CentOS7: просто сделайте «mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL», и это сработает для меня как шарм !!!
Грязный хак: 1st_place_medal:;)
У меня была такая же проблема, потому что pip install -U
перезаписал модули python, установленные из RPM.
Чтобы решить эту проблему, я сделал следующее:
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.
[root<strong i="12">@kolla</strong> ~]# rpm -qf /usr/lib64/python2.7/site-packages/OpenSSL/
pyOpenSSL-0.13.1-3.el7.x86_64
[root<strong i="13">@kolla</strong> ~]# rpm -qf /usr/lib/python2.7/site-packages/urllib3
python-urllib3-1.10.2-2.el7_1.noarch
[root<strong i="14">@kolla</strong> ~]# rpm --nodeps -e python-urllib3
[root<strong i="15">@kolla</strong> ~]# rm -rf /usr/lib/python2.7/site-packages/urllib3/
[root<strong i="16">@kolla</strong> ~]# yum -y install python-urllib3
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 90, in <module>
from urllib3.exceptions import DependencyWarning
ImportError: cannot import name DependencyWarning
[root<strong i="20">@kolla</strong> ~]# rpm -qf /usr/lib/python2.7/site-packages/requests
python-requests-2.6.0-1.el7_1.noarch
[root<strong i="24">@kolla</strong> ~]# rpm --nodeps -e python-requests
[root<strong i="25">@kolla</strong> ~]# rm -rf /usr/lib/python2.7/site-packages/requests
[root<strong i="26">@kolla</strong> ~]# yum -y install python-requests
Снова столкнулся с той же проблемой, на этот раз было намного проще использовать контейнер докеров :)
alias certbot='docker run --rm -ti -v /etc/letsencrypt:/etc/letsencrypt -p 80:80 certbot/certbot:v0.21.1'
@cnritng У меня тоже работает
Любой, у кого все еще есть эта проблема, попробуйте следующее:
rpm --query centos-release # centos-release-7-3.1611.el7.centos.x86_64
wget ftp://ftp.muug.ca/mirror/centos/7/cloud/x86_64/openstack-newton/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum install certbot
certbot renew # OK
из @sulliwane . обратите внимание, что адрес ftp://ftp.muug.ca/mirror/...
изменился.
Спасибо @JellyBool
сделал это и все исправил. yum install http://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm
Ребята, не путайте 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
Вышеупомянутые шаги от @dvershinin помогли мне
также есть вещи, работающие с тем, что опубликовал @dvershinin . просто нужно было изменить последнюю строку с «yum переустановить python-urllib3» на «yum install python-urllib3»
для CentOS7: просто сделайте «mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL», и это сработает для меня как шарм !!!
Система, подобная * nix, всегда имеет аналогичные проблемы: нарушена файловая зависимость.
https://github.com/certbot/certbot/issues/4514#issuecomment -375741595
работал на меня
здесь, возможно, истинная причина и решение:
https://www.getpagespeed.com/troubleshooting/fix-importerror-pyopenssl-module-missing-required-functionality-try-upgrading-to-v0-14-or-newer
Ребята, не путайте
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
Спасибо! Это работает!
@dvershinin исправление делает notwork для меня в данный момент - после выполнения действий , он описал на Centos 7 я получаю следующее сообщение об ошибке:
VersionConflict: (urllib3 1.10.2 (/usr/lib/python2.7/site-packages), Requirement.parse ('urllib3> = 1.20, <1.26'))
@ keir-lavelle, мое исправление - это всего лишь попытка восстановить систему в исходное состояние после того, как она была серьезно повреждена с помощью pip
под пользователем root
(что многие учебники заставляют людей делать, без учета того факта, что это никогда не должно выполняться в системах CentOS / RHEL!)
Поэтому, если вы чувствуете себя авантюристом в его исправлении, вы можете перейти по ссылке, которую я дал, которая пытается исправить это дальше, удалив все пакеты Python (заметьте, yum
тоже основан на Python), что, кроме того, является опасным предприятием. . (потому что вы можете сломать больше).
certbot
, тогда все будет в порядкеyum
в рабочее состояние. ).И, конечно, это помогает еще раз вспомнить: не используйте pip
или python
installs под root
. Вот как он ломается в первую очередь. Если бы этого не случилось - не сломалось бы.
Спасибо, что нашли время объяснить, в данный момент я просто тестирую, поэтому сервер является одноразовым, так что ничего страшного, если он сломается, но ценю информацию
Самый полезный комментарий
Ребята, не путайте
yum
установленные пакеты черезpip
. Правильное исправление включает удаление пакетов pip и установку всего изyum
. Я обрисовал это здесь .Вам не нужен более новый pyOpenSSL на CentOS 7 для запуска certbot! Нельзя сказать, что полагаться на третьи пакеты в конечном итоге ни к чему хорошему не приведет :)