Certbot: ImportError : le module 'pyOpenSSL' manque la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.

Créé le 5 févr. 2018  ·  17Commentaires  ·  Source: certbot/certbot

Mon système d'exploitation est (inclure la version):

CentOS 7.4.1708 (64 bits)

J'ai installé Certbot avec (certbot-auto, gestionnaire de packages OS, pip, etc.):

centos 7 miam

J'ai exécuté cette commande et cela a produit cette sortie:

sudo certbot --authenticator autonome --installer nginx --pre-hook "nginx -s stop" --post-hook "nginx"

sortir:
Traceback (most recent call last): File "/bin/certbot", line 9, in <module> load_entry_point('certbot==0.20.0', 'console_scripts', 'certbot')() File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 572, i n load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2755, in load_entry_point return ep.load() File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2408, in load return self.resolve() File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2414, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/lib/python2.7/site-packages/certbot/main.py", line 19, in <module> from certbot import client File "/usr/lib/python2.7/site-packages/certbot/client.py", line 11, in <module > from acme import client as acme_client File "/usr/lib/python2.7/site-packages/acme/client.py", line 32, in <module> requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() # type: i gnore File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 112 , in inject_into_urllib3 _validate_dependencies_met() 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.

Le comportement de Certbot diffère de ce à quoi je m'attendais car :

Je l'ai excepté pour me donner un certificat, mais cela a donné cette erreur. déjà essayé de mettre à jour pyOpenSSL, mais cela n'a pas fonctionné

Voici un journal Certbot montrant le problème (si disponible) :

Les journaux sont stockés dans /var/log/letsencrypt par défaut. N'hésitez pas à supprimer les domaines, les adresses e-mail et IP comme bon vous semble.

Le dossier n'existe pas

Voici le bloc de serveur nginx ou l'hôte virtuel Apache pertinent pour le domaine que je configure :

backend en amont {
# le serveur netdata
serveur 127.0.0.1:19999 ;
garder en vie 64 ;
}

serveur {
# nginx écoute ceci
écouter 80 ;

# the virtual host name of this
server_name netdata.mydomain.fi;

location / {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_pass_request_headers on;
    proxy_set_header Connection "keep-alive";
    proxy_store off;
}

}

unplanned

Commentaire le plus utile

essayez pip install --upgrade --force-reinstall 'requests==2.6.0'

Tous les 17 commentaires

centos-release-7-4.1708.el7.centos.x86_64

ImportError : le module 'pyOpenSSL' manque la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.

mettre à niveau pyOpenSSL 0.13.1 de à pyOpenSSL 17.5.0

lors de la rétrogradation :

sudo pip install pyOpenSSL==0.15.1

même erreur

ImportError : le module 'pyOpenSSL' manque la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.

essayez pip install --upgrade --force-reinstall 'requests==2.6.0'

Ne mélangez pas les packages yum installés avec ceux pip . Le correctif approprié consiste à supprimer les packages pip et à tout installer à partir de yum . Je l'ai décrit ici .

Vous n'avez pas besoin de la version plus récente de pyOpenSSL 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

Ce bogue persiste toujours dans RHEL 7

Traceback (most recent call last):
  File "/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.22.2', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 558, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2682, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2355, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 20, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 13, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 33, in <module>
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()  # type: ignore
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 112, in inject_into_urllib3
    _validate_dependencies_met()
  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.

Donc aggravant. Je commence à détester Centos.

J'ai essayé de mettre à jour pyOpenSSL sur CentOS, obtenez l'erreur suivante :

sudo pip installer pyOpenSSL==0.15.1
Collecte de pyOpenSSL==0.15.1
Téléchargement https://files.pythonhosted.org/packages/37/2f/840f2656e4bcf257cb814825bb751a9197ca6f39f1fa036ab111920ac7ef/pyOpenSSL-0.15.1-py2.py3-none-any.whl (102kB)
100 % | 112 Ko 1,9 Mo/s
Exigence déjà satisfaite : six>=1.5.2 dans /usr/lib/python2.7/site-packages (depuis pyOpenSSL==0.15.1) (1.9.0)
Exigence déjà satisfaite : cryptographie>=0.7 dans /usr/lib64/python2.7/site-packages (depuis pyOpenSSL==0.15.1) (2.3.1)
Exigence déjà satisfaite : idna>=2.1 dans /usr/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL==0.15.1) (2.7)
Exigence déjà satisfaite : enum34 ; python_version < "3" dans /usr/lib/python2.7/site-packages (de cryptographie>=0.7->pyOpenSSL==0.15.1) (1.0.4)
Exigence déjà satisfaite : cffi!=1.11.3,>=1.7 dans /usr/lib64/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL==0.15.1) (1.11.5)
Exigence déjà satisfaite : asn1crypto>=0.21.0 dans /usr/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL==0.15.1) (0.24.0)
Exigence déjà satisfaite : adresse IP ; python_version < "3" dans /usr/lib/python2.7/site-packages (de cryptographie>=0.7->pyOpenSSL==0.15.1) (1.0.16)
Exigence déjà satisfaite : pycparser dans /usr/lib/python2.7/site-packages (depuis cffi!=1.11.3,>=1.7->cryptography>=0.7->pyOpenSSL==0.15.1) (2.14)
Installation des packages collectés : pyOpenSSL
Installation existante trouvée : pyOpenSSL 0.13.1
Impossible de désinstaller 'pyOpenSSL'. Il s'agit d'un projet installé par distutils et nous ne pouvons donc pas déterminer avec précision quels fichiers lui appartiennent, ce qui ne conduirait qu'à une désinstallation partielle.

Un peu de contexte : le package dist pour pyOpenSSL est à 0.13.1. pour le désinstaller afin de le mettre à jour via pip - Yum me fait désinstaller certbot. Considérer que certbot était la raison pour laquelle je devais mettre à jour pyOpenSSL - nous met en quelque sorte dans un piège 22.

miam info pyOpenSSL
Plugins chargés : Fastmirror, langpacks
Chargement des vitesses de miroir à partir du fichier hôte mis en cache

  • base : repos.dfw.quadranet.com
  • epel : mirror.nodesdirect.com
  • extras : reflector.westga.edu
  • mises à jour : repo1.dal.innoscale.net
    Paquets installés
    Nom : pyOpenSSL
    Arche : x86_64
    Version : 0.13.1
    Version : 3.el7
    Taille : 628k
    Dépôt : installé
    Du dépôt : base
    Résumé : Module wrapper Python autour de la bibliothèque OpenSSL
    URL : http://pyopenssl.sourceforge.net/
    Licence : ASL 2.0
    Description : Wrapper de haut niveau autour d'un sous-ensemble de la bibliothèque OpenSSL, inclut entre autres
    : * Objets SSL.Connection, enveloppant les méthodes du portable de Python
    : prises
    : * Callbacks écrits en Python
    : * Mécanisme de gestion des erreurs étendu, reflétant les codes d'erreur d'OpenSSL

À la fois pour le débogage et pour le plaisir, j'ai désinstallé la dist pyOpenSSL (et donc certbot), effectué une installation pip de pyOpenSSL et réinstallé certbot. Yum a remplacé pyOpenSSL 0.15.1 par 0.13.1... et même résultat lorsque j'essaie de renouveler avec certbot.

J'ai ensuite tenté une installation sudo pip --upgrade pyopenssl - et le même message d'erreur concernant la version installée de distutils.

Pas de solution de contournement aujourd'hui - je suppose que mes certificats vont expirer alors

acme.sh fonctionne, j'ai abandonné certbot ;)

Les gars, en fait trouvé un correctif pour cela. Je ne peux pas m'attribuer le mérite d'avoir fait autre chose que de tomber sur l'article : https://medium.com/@getpagespeed/fix -importerror-pyopenssl-module-missing-required-functionality-e1c514797204

Tout le mérite revient à Danila Vershinin pour avoir trouvé la solution !

Je ne peux qu'ajouter que si vous avez installé certbot et aws cli, il est très probable qu'il y ait ce problème.
d'après mes recherches rapides, il semble que l'installation de packages système comme suggéré casse aws cli. réparer aws cli casse certbot et etc donc pas vraiment amusant :)

Les gars, en fait trouvé un correctif pour cela. Je ne peux pas m'attribuer le mérite d'avoir fait autre chose que de tomber sur l'article : https://medium.com/@getpagespeed/fix -importerror-pyopenssl-module-missing-required-functionality-e1c514797204

Tout le mérite revient à Danila Vershinin pour avoir trouvé la solution !

Le correctif ne fonctionne pas pour moi - aucun paquet pip n'est installé et tous ceux répertoriés dans les rapports yum sont déjà installés et à jour.

En ce qui concerne le fait d'avoir aws cli et certbot sur le même système.

Cela se résume à une version conflictuelle de urllib3.
awscli-1.16.81 nécessite urllib3-1.24.1 et python2-certbot-0.27.1-1.el7.noarch.rpm fonctionne avec urllib3-1.10.2 .
La version la plus récente donne l'erreur susmentionnée.

Je n'arrive pas à les faire travailler ensemble, même l'installation awscli avec --user donne les mêmes problèmes, car la nouvelle urllib est alors placée dans /root/.local/lib et certbot va regarde ici aussi...

Je ne peux pas les faire travailler ensemble, même l'installation d'awscli avec --user pose les mêmes problèmes, car la nouvelle urllib est ensuite placée dans /root/.local/lib et certbot va également chercher ici ...

Avait le même problème avec des versions conflictuelles d'urllib3 après l'installation d'aws cli. Finalement, après avoir réparé certbot, j'ai installé aws cli en utilisant virtualenv.
https://docs.aws.amazon.com/cli/latest/userguide/install-virtualenv.html
Maintenant, certbot et aws cli vont bien.

J'ai également installé awscli à l'aide du programme d'installation fourni qu'ils fournissent, de sorte qu'il soit autonome.

https://docs.aws.amazon.com/cli/latest/userguide/install-bundle.html

Une autre façon de contourner le conflit entre awscli et certbot consiste à installer python36 et à exécuter awscli en l'utilisant.

Le package certbot peut-il ne pas installer ses modules python dans son propre environnement ou être moins strict en ce qui concerne les exigences de version ?

Cette page vous a été utile?
0 / 5 - 0 notes