Versión 7.3.1611 de CentOS Linux
Administrador de paquetes de SO
Rastreo (llamadas recientes más última):
Archivo "/ bin / certbot", línea 7, en
desde certbot.main import main
Archivo "/usr/lib/python2.7/site-packages/certbot/main.py", línea 17, en
desde el cliente de importación certbot
Archivo "/usr/lib/python2.7/site-packages/certbot/client.py", línea 10, en
desde el cliente de importación de acme como acme_client
Archivo "/usr/lib/python2.7/site-packages/acme/client.py", línea 31, en
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3 () # tipo: ignorar
Archivo "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", línea 112, en inject_into_urllib3
_validate_dependencies_met ()
Archivo "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", línea 147, en _validate_dependencies_met
raise ImportError ("El módulo 'pyOpenSSL' falta la funcionalidad requerida."
ImportError: al módulo 'pyOpenSSL' le falta la funcionalidad requerida. Intente actualizar a la versión 0.14 o más reciente.
Debería renovarse con éxito en lugar de errores.
/var/log/letsencrypt
de forma predeterminada. Siéntase libre de redactar dominios, correo electrónico y direcciones IP como mejor le parezca.No hay entradas de registro. He eliminado pyopenssl y lo he vuelto a instalar.
Nombre: pyOpenSSL
Versión: 16.2.0
Resumen: módulo contenedor de Python alrededor de la biblioteca OpenSSL
Página de inicio: https://pyopenssl.readthedocs.io/
Autor: Hynek Schlawack
Autor-correo electrónico: [email protected]
Licencia: Licencia Apache, Versión 2.0
Ubicación: /usr/lib64/python2.7/site-packages
Requiere: seis, criptografía
Pero el error aún persiste. Alguna idea ?
Tal vez haya varias versiones de pyOpenSSL para que urllib3 se confunda. En /usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py, debería haber algunas líneas como esta:
# 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.")
¿Podría agregar algunos códigos de depuración y ver cuál es el resultado?
# 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.")
Tenga en cuenta que a Python no le gustan las pestañas. Inserte siempre espacios para la identificación. Además, necesita root para modificar este archivo.
Aquí está el resultado:
Rastreo (llamadas recientes más última):
Archivo "/ bin / certbot", línea 7, en
desde certbot.main import main
Archivo "/usr/lib/python2.7/site-packages/certbot/main.py", línea 17, en
desde el cliente de importación certbot
Archivo "/usr/lib/python2.7/site-packages/certbot/client.py", línea 10, en
desde el cliente de importación de acme como acme_client
Archivo "/usr/lib/python2.7/site-packages/acme/client.py", línea 31, en
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3 () # tipo: ignorar
Archivo "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", línea 112, en inject_into_urllib3
_validate_dependencies_met ()
Archivo "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", línea 149, en _validate_dependencies_met
raise ImportError ("El módulo 'pyOpenSSL' falta la funcionalidad requerida."
ImportError: al módulo 'pyOpenSSL' le falta la funcionalidad requerida. Intente actualizar a la versión 0.14 o más reciente.
/usr/lib64/python2.7/site-packages/OpenSSL/crypto.so
Esta ruta se parece a la de un paquete pyOpenSSL anterior. ¿Podría eliminar pyOpenSSL a través de yum e intentarlo de nuevo?
Tengo el mismo problema en centos7. Eliminar pyOpenSSL.x86_64 0: 0.13.1-3.el7 no ayuda, porque yum install certbot
lo reinstalará nuevamente.
Sin embargo, encontré una solución para las RPM rotas:
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
El mismo problema aquí en una instalación nueva 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
Creo que esto es más un problema de CentOS que de un certbot. ¿Alguien puede informar a CentOS que su pyOpenSSL es demasiado antiguo?
El problema persistió en mi sistema incluso después de una actualización a pyOpenSSL 16.
El mismo problema ocurrió recientemente en mi máquina CentOS 7.
La única solución que funciona es pip install pyOpenSSL=0.13.1
Los últimos dos meses fracasó.
Y lo intenté de nuevo hace un momento, falló de nuevo.
La salida:
>> 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.
Entonces pruebo esto y funciona:
El enlace de la respuesta: https://serverfault.com/questions/830284/certbot-for-letsencrypt-missing-pyopenssl-module
Solo como referencia ... generalmente no es seguro actualizar pyOpenSSL a través de pip en CentOS, ya que es posible romper yum de esa manera.
¿Qué paquete de certbot estás usando? Le agradecería que pudiera instalar 0.13.0 desde epel-testing, y siempre asegurarse de que su sistema tenga una actualización completa de yum.
Es posible que deba usar yum reinstall pyOpenSSL para reparar su sistema (verifique el estado con rpm -qV pyOpenSSL).
Hay un problema con el temporizador de renovación de systemd con ese paquete, por lo que no lo he puesto estable, pero solo hacer solicitudes de certbot y una renovación manual de certbot funcionará.
La versión 0.14.0 también está en camino ... y literalmente lo acabo de probar en AWS.
Tengo curiosidad: el autor original lo instaló a través de un administrador de paquetes, entonces, ¿dónde fijaríamos una versión para pip?
¿La gente todavía tiene este problema? Y si es así, ¿qué método de instalación estás usando?
Es posible que desee probar el método descrito en este Dockerfile, que funcionó para mí:
https://github.com/identinetics/docker-nginx/blob/master/Dockerfile#L65
Todavía tengo el problema en centOS 7.3 recién instalado y actualizado.
Se solucionó el problema instalando pyOpenSSL rpm actualizado (pyOpenSSL-0.14-3.fc222 parecía suficiente, mientras que pyOpenSSL-16.2.0-1.fc25 no funcionó), pero ¿cómo asegurarse de que no está rompiendo nada más?
https://www.rpmfind.net/linux/rpm2html/search.php?query=pyOpenSSL
Gracias
@ tisc0 Estoy muy interesado en más detalles sobre exactamente cómo instaló y ejecutó esto para terminar con ese problema.
Cuando construí los paquetes de centos7 certbot, los probé en AWS sin problemas, ciertamente no lo que ha descrito o describe este problema.
Es una idea terrible instalar un rpm de fedora como ese directamente en centos7, especialmente con un paquete central como pyOpenSSL.
Hola Hogarthj,
Perdón por la falta de detalles, un poco ocupado estos días :)
En breve :
[ root @ c7-dse ~] # echo N | yum eliminar python-urllib3 | awk '{imprimir $ 1}'
(...)
Dependencias
==============
Paquete
Eliminando:
python-urllib3
Eliminando
certbot
ipa-cliente
solicitudes de python
python2-acme
python2-certbot
python2-ipaclient
python2-ipalib
Cualquier idea que explique por qué la reinstalación de algunos paquetes lo hizo funcionar es bienvenida :)
@ tisc0 gracias por el detalle adicional
Forzar la instalación / eliminación de paquetes a menudo puede causar problemas, al igual que las actualizaciones de las bibliotecas del sistema.
Rara vez es una buena idea simplemente tomar un paquete de Fedora para el uso de CentOS sin llevar a cabo una reconstrucción del paquete en sí desde src.rpm
Al reinstalar los paquetes (en lugar de quitarlos e instalarlos con problemas de dependencia, yum reinstall puede ser un salvavidas), se verifica que los archivos originales estén en su lugar.
Me alegra mucho saber que reinstalar los paquetes de CentOS lo hace funcionar para usted :)
Dado que @ tisc0 parece tener una configuración funcional, ahora voy a cerrar este problema. Si alguien todavía tiene problemas, presente un nuevo problema, ya que este hilo se está llenando de gente.
para CentOS7, simplemente haz "mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL", ¡y eso funciona como un encanto para mí!
Hack sucio: 1st_place_medal:;)
Acabo de tener el mismo problema, eso se debe a que pip install -U
sobrescribió los módulos de Python instalados desde el RPM.
Para solucionar esto hice lo siguiente:
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
Me encontré con el mismo problema nuevamente, esta vez fue mucho más fácil usar el contenedor de la ventana acoplable :)
alias certbot='docker run --rm -ti -v /etc/letsencrypt:/etc/letsencrypt -p 80:80 certbot/certbot:v0.21.1'
@cnritng También me funciona
Cualquiera que todavía tenga este problema, intente esto:
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 . observe que la dirección ftp://ftp.muug.ca/mirror/...
ha cambiado.
Gracias @JellyBool
hizo esto y lo arregló todo. yum install http://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm
Chicos, no mezclen yum
paquetes instalados a través de pip
one. La solución adecuada implica eliminar los paquetes pip e instalar todo desde yum
. Lo he resumido aquí .
¡No necesita pyOpenSSL más reciente en CentOS 7 para ejecutar certbot! Por no decir que depender de terceros paquetes no lo llevará a nada bueno, eventualmente :)
pip uninstall requests
yum reinstall python-requests
pip uninstall six
yum reinstall python-six
pip uninstall urllib3
yum reinstall python-urllib3
Los pasos anteriores de @dvershinin me
También conseguí que las cosas funcionaran con lo que publicó @dvershinin . solo tuve que cambiar la última línea de "yum reinstalar python-urllib3" a "yum install python-urllib3"
para CentOS7, simplemente haz "mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL", ¡y eso funciona como un encanto para mí!
El sistema similar a * nix siempre tiene problemas similares: dependencia de archivos rota.
https://github.com/certbot/certbot/issues/4514#issuecomment -375741595
trabajó para mi
aquí quizás la verdadera razón y solución:
https://www.getpagespeed.com/troubleshooting/fix-importerror-pyopenssl-module-missing-required-functionality-try-upgrading-to-v0-14-or-newer
Chicos, no mezclen
yum
paquetes instalados a través depip
one. La solución adecuada implica eliminar los paquetes pip e instalar todo desdeyum
. Lo he resumido aquí .¡No necesita pyOpenSSL más reciente en CentOS 7 para ejecutar certbot! Por no decir que depender de terceros paquetes no lo llevará a nada bueno, eventualmente :)
pip uninstall requests yum reinstall python-requests pip uninstall six yum reinstall python-six pip uninstall urllib3 yum reinstall python-urllib3
¡Gracias! ¡Es trabajo!
La corrección de
VersionConflict: (urllib3 1.10.2 (/usr/lib/python2.7/site-packages), Requirement.parse ('urllib3> = 1.20, <1.26'))
@ keir-lavelle mi solución es solo un intento de restaurar un sistema al estado original después de que se dañó severamente al usar pip
bajo root
usuario (que tantos tutoriales hacen que la gente haga, ¡sin tener en cuenta el hecho de que nunca debería hacerse en sistemas CentOS / RHEL!)
Entonces, si se siente aventurero para solucionarlo, puede seguir el enlace que proporcioné, que intenta solucionarlo aún más eliminando todos los paquetes de Python (tenga en cuenta, yum
está basado en Python), que es una empresa aún más peligrosa. . (porque puedes romper más).
certbot
, entonces debería estar bienyum
en un estado de funcionamiento ).Y, por supuesto, es útil recordar nuevamente: no use pip
o python
instalaciones en root
. Así es como se rompe en primer lugar. Si no sucediera, no se rompería.
Gracias por tomarse el tiempo para explicar, solo estoy probando cosas en este momento para que el servidor sea desechable, por lo que no es gran cosa si se rompe, pero agradezco la información.
Comentario más útil
Chicos, no mezclen
yum
paquetes instalados a través depip
one. La solución adecuada implica eliminar los paquetes pip e instalar todo desdeyum
. Lo he resumido aquí .¡No necesita pyOpenSSL más reciente en CentOS 7 para ejecutar certbot! Por no decir que depender de terceros paquetes no lo llevará a nada bueno, eventualmente :)