CentOS Linux version 7.3.1611
Gestionnaire de package de système d'exploitation
Traceback (appel le plus récent en dernier) :
Fichier "/bin/certbot", ligne 7, dans
de certbot.main import principal
Fichier "/usr/lib/python2.7/site-packages/certbot/main.py", ligne 17, dans
depuis le client d'importation certbot
Fichier "/usr/lib/python2.7/site-packages/certbot/client.py", ligne 10, dans
à partir du client d'importation acme en tant que client_acme
Fichier "/usr/lib/python2.7/site-packages/acme/client.py", ligne 31, dans
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() # type : ignorer
Fichier "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", ligne 112, dans inject_into_urllib3
_validate_dependencies_met()
Fichier "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", ligne 147, dans _validate_dependencies_met
raise ImportError("Le module 'pyOpenSSL' manque la fonctionnalité requise. "
ImportError : le module 'pyOpenSSL' manque la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.
Il devrait se renouveler avec succès au lieu d'erreurs.
/var/log/letsencrypt
par défaut. N'hésitez pas à rédiger les domaines, e-mails et adresses IP comme bon vous semble.Aucune entrée de journal. J'ai supprimé pyopenssl et je l'ai réinstallé.
Nom : pyOpenSSL
Version : 16.2.0
Résumé : module wrapper Python autour de la bibliothèque OpenSSL
Page d'accueil : https://pyopenssl.readthedocs.io/
Auteur : Hynek Schlawack
E -mail de l'auteur :
Licence : Licence Apache, Version 2.0
Emplacement : /usr/lib64/python2.7/site-packages
Nécessite : six, cryptographie
Mais l'erreur persiste toujours. Une idée ?
Peut-être qu'il existe plusieurs versions de pyOpenSSL pour que urllib3 soit confus. Dans /usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py, il devrait y avoir des lignes comme celle-ci :
# 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.")
Pourriez-vous ajouter des codes de débogage et voir quel est le résultat ?
# 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.")
Attention, Python n'aime pas les onglets. Insérez toujours des espaces pour l'identification. De plus, vous avez besoin de root pour modifier ce fichier.
Voici la sortie :
Traceback (appel le plus récent en dernier) :
Fichier "/bin/certbot", ligne 7, dans
de certbot.main import principal
Fichier "/usr/lib/python2.7/site-packages/certbot/main.py", ligne 17, dans
depuis le client d'importation certbot
Fichier "/usr/lib/python2.7/site-packages/certbot/client.py", ligne 10, dans
à partir du client d'importation acme en tant que client_acme
Fichier "/usr/lib/python2.7/site-packages/acme/client.py", ligne 31, dans
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() # type : ignorer
Fichier "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", ligne 112, dans inject_into_urllib3
_validate_dependencies_met()
Fichier "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", ligne 149, dans _validate_dependencies_met
raise ImportError("Le module 'pyOpenSSL' manque la fonctionnalité requise. "
ImportError : le module 'pyOpenSSL' manque la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.
/usr/lib64/python2.7/site-packages/OpenSSL/crypto.so
Ce chemin ressemble à un package pyOpenSSL antérieur. Pourriez-vous supprimer pyOpenSSL via yum et réessayer ?
J'ai le même problème sur centos7. Supprimer pyOpenSSL.x86_64 0:0.13.1-3.el7 n'aide pas, car yum install certbot
le réinstallera à nouveau.
Cependant, j'ai trouvé une solution de contournement pour le RPM cassé :
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
Même problème ici sur une nouvelle installation de 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
Je pense qu'il s'agit plus d'un problème de CentOS que de certbot. Quelqu'un peut-il signaler à CentOS que son pyOpenSSL est trop ancien ?
Le problème a persisté sur mon système même après une mise à niveau vers pyOpenSSL 16.something
Le même problème s'est produit récemment sur ma machine CentOS 7.
La seule solution de contournement est de pip install pyOpenSSL=0.13.1
Les deux derniers mois, ça a échoué.
Et je l'ai réessayé tout à l'heure, ça a encore échoué.
Le résultat:
>> 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.
Ensuite, j'essaie ceci et cela fonctionne:
Le lien de la réponse : https://serverfault.com/questions/830284/certbot-for-letsencrypt-missing-pyopenssl-module
Juste pour référence ... il est généralement dangereux de mettre à jour pyOpenSSL via pip sur CentOS car il est possible de casser yum de cette façon.
Quel package certbot utilisez-vous ? J'apprécierais si vous pouviez installer 0.13.0 à partir de epel-testing, et assurez-vous toujours que votre système dispose d'une mise à jour complète de yum.
Vous devrez peut-être utiliser yum reinstall pyOpenSSL pour réparer votre système (vérifiez l'état de celui-ci avec rpm -qV pyOpenSSL).
Il y a un problème avec la minuterie de renouvellement de systemd avec ce package, c'est pourquoi je ne l'ai pas rendu stable, mais le simple fait de faire des demandes de certbot et un renouvellement manuel de certbot fonctionnera.
La version 0.14.0 est également en route... et je viens littéralement de la tester dans AWS.
Je suis curieux - l'auteur d'origine l'a installé via un gestionnaire de paquets, alors où épingler une version pour pip ?
Est-ce que les gens ont toujours ce problème ? Et si oui quelle méthode d'installation utilisez-vous ?
Vous voudrez peut-être essayer la méthode décrite dans ce Dockerfile, qui a fonctionné pour moi :
https://github.com/identinetics/docker-nginx/blob/master/Dockerfile#L65
Vous avez toujours le problème sur centOS 7.3 récemment installé et mis à jour.
Correction du problème en installant le rpm pyOpenSSL mis à jour (pyOpenSSL-0.14-3.fc222 semblait suffisant, tandis que pyOpenSSL-16.2.0-1.fc25 ne fonctionnait pas), mais comment être sûr qu'il ne casse rien d'autre ?!
https://www.rpmfind.net/linux/rpm2html/search.php?query=pyOpenSSL
Merci
@tisc0 Je suis très intéressé par plus de détails sur la manière exacte dont vous avez installé et exécuté cela pour vous retrouver avec ce problème.
Lorsque j'ai créé les packages certbot centos7, je les ai testés dans AWS sans aucun problème - certainement pas ce que vous avez décrit ou ce problème décrit.
C'est une très mauvaise idée d'installer un rpm fedora comme celui-ci directement sur centos7 - en particulier avec un package de base comme pyOpenSSL.
Salut Hogarthj,
Désolé pour le manque de détails, un peu occupé ces jours-ci :)
En bref :
[ root@c7-dse ~]# echo N | miam supprimer python-urllib3 | awk '{print $1}'
(...)
Dépendances
===============
Emballer
Suppression :
python-urllib3
Retrait
certbot
ipa-client
requêtes python
python2-acme
python2-certbot
python2-ipaclient
python2-ipalib
Toute idée pour expliquer pourquoi la réinstallation de certains packages l'a fait fonctionner est la bienvenue :)
@tisc0 merci pour le détail supplémentaire
L'installation/suppression forcée de packages peut souvent causer des problèmes, tout comme les mises à niveau des bibliothèques système.
C'est rarement une bonne idée de simplement récupérer un package Fedora pour une utilisation CentOS sans effectuer une reconstruction du package lui-même à partir du src.rpm
En réinstallant les packages (plutôt que d'effectuer une suppression et une installation avec des problèmes de dépendance, yum reinstall peut vous sauver la vie), les fichiers d'origine sont vérifiés pour être en place.
Je suis très heureux d'apprendre que la réinstallation des packages CentOS fonctionne pour vous :)
Étant donné que @tisc0 semble avoir une configuration de travail, je vais maintenant clore ce problème. Si quelqu'un rencontre toujours des problèmes, veuillez déposer un nouveau problème, car ce fil est de plus en plus encombré.
pour CentOS7, faites simplement "mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL", et cela fonctionne comme un charme pour moi !!!
Sale hack : 1st_place_medal : ;)
J'ai eu le même problème, c'est parce que pip install -U
a écrasé les modules python installés à partir du RPM.
Pour résoudre ce problème, j'ai effectué les opérations suivantes :
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
Je suis à nouveau tombé sur le même problème, cette fois, il était beaucoup plus facile d'utiliser le conteneur docker :)
alias certbot='docker run --rm -ti -v /etc/letsencrypt:/etc/letsencrypt -p 80:80 certbot/certbot:v0.21.1'
@cnritng ça marche aussi pour moi
Si vous rencontrez toujours ce problème, essayez ceci :
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
de @sulliwane . remarquez que l'adresse ftp://ftp.muug.ca/mirror/...
a changé.
Merci @JellyBool
a fait cela et a tout réparé. miam installer http://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm
Les gars, ne mélangez pas les packages yum
installés avec les 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 d'un pyOpenSSL plus récent sur CentOS 7 pour exécuter certbot ! Pour ne pas dire que compter sur des packages tiers ne vous mènera à rien de bon, finalement :)
pip uninstall requests
yum reinstall python-requests
pip uninstall six
yum reinstall python-six
pip uninstall urllib3
yum reinstall python-urllib3
Les étapes ci-dessus de @dvershinin ont fait l'affaire pour moi
a également fait fonctionner les choses avec ce que @dvershinin a publié. juste eu à changer la dernière ligne de "yum reinstall python-urllib3" en "yum install python-urllib3"
pour CentOS7, faites simplement "mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL", et cela fonctionne comme un charme pour moi !!!
Le système *nix like a toujours les mêmes problèmes : la dépendance de fichier est rompue.
https://github.com/certbot/certbot/issues/4514#issuecomment -375741595
travaillé pour moi
voici peut-être la vraie raison et la solution :
https://www.getpagespeed.com/troubleshooting/fix-importerror-pyopenssl-module-missing-required-functionality-try-upgrading-to-v0-14-or-newer
Les gars, ne mélangez pas les packages
yum
installés avec lespip
. Le correctif approprié consiste à supprimer les packages pip et à tout installer à partir deyum
. Je l'ai décrit ici .Vous n'avez pas besoin d'un pyOpenSSL plus récent sur CentOS 7 pour exécuter certbot ! Pour ne pas dire que compter sur des packages tiers ne vous mènera à rien de bon, finalement :)
pip uninstall requests yum reinstall python-requests pip uninstall six yum reinstall python-six pip uninstall urllib3 yum reinstall python-urllib3
Merci! C'est du travail!
Le correctif
Conflit de version : (urllib3 1.10.2 (/usr/lib/python2.7/site-packages), Requirement.parse('urllib3>=1.20,<1.26'))
@keir-lavelle mon correctif n'est qu'une tentative de restauration d'un système à son état d'origine après qu'il a été gravement endommagé en utilisant pip
sous root
utilisateur (ce que tant de tutoriels font faire aux gens, sans tenir compte du fait que cela ne devrait
Donc, si vous vous sentez aventureux pour le réparer, vous pouvez suivre le lien que j'ai donné qui tente de le réparer davantage en supprimant tous les packages Python (rappelez-vous, yum
est également basé sur Python), ce qui est en outre une entreprise dangereuse . (parce que vous pouvez casser plus).
certbot
fonctionné, alors ça devrait alleryum
à un état de fonctionnement ).Et bien sûr, cela aide à se rappeler à nouveau : n'utilisez pas d'installations pip
ou python
sous root
. C'est comme ça qu'il se brise en premier lieu. Si cela n'arrivait pas, cela ne se briserait pas.
Merci d'avoir pris le temps d'expliquer, je teste juste des choses pour le moment donc le serveur est jetable donc pas grave s'il casse mais j'apprécie l'information
Commentaire le plus utile
Les gars, ne mélangez pas les packages
yum
installés avec lespip
. Le correctif approprié consiste à supprimer les packages pip et à tout installer à partir deyum
. Je l'ai décrit ici .Vous n'avez pas besoin d'un pyOpenSSL plus récent sur CentOS 7 pour exécuter certbot ! Pour ne pas dire que compter sur des packages tiers ne vous mènera à rien de bon, finalement :)