certbot dla brakującego modułu pyopenssl letsencrypt


10

Potrzebuję pomocy przy konfigurowaniu CertBota dla LetsEncrypt

Korzystam z CentOS 7 z Python 2.7

Po uruchomieniu certbota pojawia się następujący błąd:

[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

Proszę o pomoc

Dziękuję Ci


Popraw swój post, aby był czytelny, wszystkie pomyłki są pomieszane ... Proszę również podać, w jaki sposób zainstalowałeś certbota, co zrobiłeś, aby go uruchomić do tej pory oraz wszelkie informacje, które mogą pomóc nam zrozumieć, dlaczego pojawia się ten błąd.
Ginnungagap

Proszę zobaczyć mój komentarz do rozwiązania wykorzystującego virtualenv
Danie

Odpowiedzi:


7

Nie próbuj instalować certbota ręcznie w systemach CentOS / RHEL. Po prostu robi wielki bałagan. Zamiast tego zainstaluj go z EPEL.

yum install epel-release
yum install certbot

1
Zainstalowałem z epelu i wciąż mam ten sam problem
chrismarx

7
Uruchomiłem pakiet certyfikatu EPEL i rozwiązałem ten problem. Coś innego w moim systemie zaktualizowało bibliotekę „żądań” do najnowszej wersji (2.13.0 w tym tekście), ale RPM zainstalowana jako zależność dla certbota to 2.6.0. Porównaj wersje dla pip list 2>/dev/null | grep requestsi rpm -q python-requests --queryformat '%{VERSION}\n'. Jeśli są różne, spróbuj pip install --upgrade --force-reinstall 'requests==2.6.0'.
Alan Ivey

4

Ten sam problem wystąpił dwa razy na 2 oddzielnych systemach Centos7 w ciągu ostatnich 2 miesięcy. Oto, co zadziałało dla mnie:

  • mniam usuń pyOpenSSL [Spowoduje to usunięcie certbota zainstalowanego przez epel]
  • mniam install openssl-devel python-devel [Może lub może nie być faktycznie konieczne]
  • pip install certbot
  • pip zainstaluj certbot-apache

Po wykonaniu tych kroków udało mi się pomyślnie odnowić moje certyfikaty za pomocą certbota.


1
To zadziałało. urllib3 jest mylony między zainstalowanym pipem a wersjami pyOpenSSL zainstalowanymi yum. Wydaje się, że usunięcie pakietów yum i instalacja za pomocą pipa to rozwiązuje.
scoota269,

Po zastosowaniu tych trzech pierwszych poleceń UnknownExtra: requests 2.6.0 has no such extra feature 'security'pojawia się błąd śledzenia: kiedy $ certbot certonly ...
wykonuję

3

Występuje ten sam problem. Używając Pythona Venv udało mi się uruchomić Certbota przy użyciu pip.

Kroki: zainstaluj virtualenv

pip install virtualenv --upgrade

Utwórz virtualenv

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

Aktywuj certbotvirtualenv

. /root/certbot/bin/activate

Twoje zapytanie może zmienić się w coś takiego

(certbot) [root@hostname ~]#

Następnie pip zainstaluj certbota

pip install certbot

Po zakończeniu możesz przetestować certbotkomendę pod certbotvirtualenv, ale nie jest to praktyczne, jeśli zamierzasz użyć crona do skonfigurowania odnawiania certbota. Dezaktywuj więc środowisko wirtualne,

(certbot) [root@hostname ~]# deactivate

Teraz uruchom polecenie certbot z

/root/certbot/bin/certbot

2

To wydaje się działać dla mnie.

Weź rpm stąd: 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: Brak modułu wymaganej funkcjonalności w module„ pyOpenSSL ”. Spróbuj zaktualizować do wersji v0.14 lub nowszej.” Napotkałem ten problem i ostatecznie rozwiązałem instalację „pyOpenSSL-0.15.1-1.el7.noarch.rpm”
kai.fantasy

2

Prawidłowa poprawka to:

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

Dzięki cnritng frim github.


Od razu magię.
j4hangir

1

Nie mieszaj yumzainstalowanych pakietów za pomocą pipjednego. Prawidłowa poprawka polega na usunięciu pakietów pip i instalacji wszystkiego z yum. Przedstawiłem to tutaj .

Nie potrzebujesz nowszej wersji pyOpenSSL na CentOS 7, aby uruchomić certbota!

pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3

0

Miałem ten sam problem w wersji 0.9.3. Przyczyną było zainstalowanie wtyczki nginx.

Możesz łatwo odtworzyć działającą instalację:

docker run -it --rm centos: centos7 bash mniam -y zainstaluj epel-release mniam -y zainstaluj certbot certbot -h


jakieś obejście?
chrismarx

Nie wiem, gdzie był problem.
Ponownie

0

właśnie sprawiłem, że działało

sudo pip install pyOpenSSL==0.14.0

usunął wersję 0.13 i zainstalował 0.14, a następnie certbot po prostu działał normalnie.


Dostaję następujące: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

Wygląda na to, że wersja źródła epel jest za stara, możesz usunąć certbota z wersji yum i zainstalować go


-4

Zamiast tego certbot rozwiązał dla mnie problem letsencrypt.

Możesz usunąć innych klientów

pip uninstall certbot
pip uninstall pyopenssl

A następnie zainstaluj letsencrypt:

pip install letsencrypt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.