certbot pour letsencrypt module pyopenssl manquant


10

J'ai besoin d'aide pour configurer le CertBot pour LetsEncrypt

Je cours sur CentOS 7 avec Python 2.7

Lorsque j'exécute certbot, j'obtiens l'erreur suivante:

[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

S'il vous plaît, aidez

Je vous remercie


Veuillez corriger votre message pour qu'il soit lisible, les traces sont toutes gâchées ... Veuillez également indiquer comment vous avez installé certbot, ce que vous avez fait pour essayer de le faire fonctionner jusqu'à présent et toute information qui pourrait nous aider à comprendre pourquoi vous obtenez cette erreur.
Ginnungagap

Veuillez voir mon commentaire pour la solution utilisant virtualenv
Danie

Réponses:


7

N'essayez pas d'installer manuellement certbot sur les systèmes CentOS / RHEL. Cela fait juste un énorme gâchis. Au lieu de cela, installez-le à partir d'EPEL.

yum install epel-release
yum install certbot

1
J'ai installé depuis epel, et j'ai toujours le même problème
chrismarx

7
J'exécute le package EPEL certbot et résolu ce problème. Quelque chose d'autre sur mon système avait mis à jour la bibliothèque «requêtes» vers la dernière version (2.13.0 au moment de la rédaction de ce document), mais le RPM installé en tant que dépendance pour certbot est 2.6.0. Comparez les versions pour pip list 2>/dev/null | grep requestset rpm -q python-requests --queryformat '%{VERSION}\n'. S'ils sont différents, essayez pip install --upgrade --force-reinstall 'requests==2.6.0'.
Alan Ivey

4

J'ai rencontré ce même problème deux fois sur 2 systèmes Centos7 distincts au cours des 2 derniers mois. C'est ce qui a fonctionné pour moi:

  • yum remove pyOpenSSL [Cela supprimera certbot installé via epel]
  • yum install openssl-devel python-devel [Peut ou peut-être pas réellement nécessaire]
  • installer pip certbot
  • pip installer certbot-apache

Après avoir terminé ces étapes, j'ai réussi à renouveler mes certificats avec certbot.


1
Cela a fonctionné. urllib3 est confondu entre le pip installé et les versions yum installées de pyOpenSSL. La suppression des packages yum et l'installation avec pip semble corriger cela.
scoota269

Après avoir appliqué ces trois premières commandes, j'obtiens l'erreur suivante: UnknownExtra: requests 2.6.0 has no such extra feature 'security'lorsque $ certbot certonly ...
j'exécute

3

Je rencontre le même problème. En utilisant python venv, j'ai pu faire fonctionner certbot en utilisant pip.

Étapes: installer virtualenv

pip install virtualenv --upgrade

Créer un virtualenv

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

Activez le certbotvirtualenv

. /root/certbot/bin/activate

Votre invite pourrait se transformer en quelque chose comme ceci

(certbot) [root@hostname ~]#

Puis pip installez certbot

pip install certbot

Une fois terminé, vous pouvez tester la certbotcommande sous certbotvirtualenv, mais ce n'est pas pratique si vous allez utiliser cron pour configurer les renouvellements de certbot. Alors désactivez l'environnement virtuel,

(certbot) [root@hostname ~]# deactivate

Exécutez maintenant la commande certbot depuis

/root/certbot/bin/certbot

2

Cela semble fonctionner pour moi.

Prenez un rpm à partir d'ici: 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: le module 'pyOpenSSL' manque la fonctionnalité requise. Essayez la mise à niveau vers v0.14 ou plus récent." J'ai rencontré ce problème et finalement résolu en installant 'pyOpenSSL-0.15.1-1.el7.noarch.rpm'
kai.fantasy

2

La solution correcte est:

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

Merci à cnritng frim github.


A fait la magie tout de suite.
j4hangir

1

Ne mélangez pas les yumpackages installés via pipceux-ci. La bonne solution consiste à supprimer les packages pip et à tout installer à partir de yum. Je l'ai décrit ici .

Vous n'avez pas besoin de pyOpenSSL plus récent sur CentOS 7 pour exécuter certbot!

pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3

0

J'ai eu le même problème en 0.9.3. Cela a été causé par l'installation du plugin nginx.

Vous pouvez facilement reproduire une installation fonctionnelle:

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


une solution?
chrismarx

Je ne sais pas où était le problème. J'ai réinstallé le CentOS et cela a fonctionné maintenant :(
cs378

0

vient de le faire fonctionner en exécutant

sudo pip install pyOpenSSL==0.14.0

il a supprimé la version 0.13 et installé le 0.14, puis certbot a juste fonctionné normalement.


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.
J'obtiens ce qui

0

Il semble que la version de la source epel soit trop ancienne, vous pouvez supprimer le certbot de la version yum et l'installer par pip


-4

Au lieu de certbot, le client letsencrypt a résolu pour moi le problème.

Vous pouvez supprimer les autres clients

pip uninstall certbot
pip uninstall pyopenssl

Et puis installez letsencrypt:

pip install letsencrypt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.