certbot para letsencrypt falta el módulo pyopenssl

10

Necesito ayuda para configurar CertBot para LetsEncrypt

Estoy corriendo en CentOS 7 con Python 2.7

Cuando ejecuto certbot me sale el siguiente error:

[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: [email protected]
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: [email protected]
License: Apache License, Version 2.0
Location: /usr/lib/python2.7/site-packages
Requires: six, cryptography

Por favor ayuda

Gracias

cs378
fuente
Por favor, arregle su publicación para que sea legible, todos los rastreos están en mal estado ... Además, incluya cómo instaló certbot, lo que ha hecho para intentar que funcione hasta el momento y cualquier información que pueda ayudarnos a entender por qué Estás recibiendo este error.
Ginnungagap
Por favor vea mi comentario para la solución usando virtualenv
Danie

Respuestas:

7

No intente instalar certbot manualmente en sistemas CentOS / RHEL. Simplemente hace un gran desastre. En su lugar, instálelo desde EPEL.

yum install epel-release
yum install certbot
Michael Hampton
fuente
1
Lo instalé desde el epel, y sigo teniendo el mismo problema
chrismarx
77
Ejecuté el paquete certel EPEL y resolví este problema. Algo más en mi sistema había actualizado la biblioteca de 'solicitudes' a la última versión (2.13.0 a partir de este escrito), pero el RPM que se instala como una dependencia para certbot es 2.6.0. Compare versiones para pip list 2>/dev/null | grep requestsy rpm -q python-requests --queryformat '%{VERSION}\n'. Si son diferentes, inténtalo pip install --upgrade --force-reinstall 'requests==2.6.0'.
Alan Ivey
4

Experimenté este mismo problema dos veces en 2 sistemas Centos7 separados en los últimos 2 meses. Esto es lo que funcionó para mí:

  • yum remove pyOpenSSL [Esto eliminará certbot instalado a través de epel]
  • yum install openssl-devel python-devel [Puede o no ser realmente necesario]
  • pbot install certbot
  • pip install certbot-apache

Después de completar estos pasos, pude renovar con éxito mis certificados con certbot.

bluemorpho
fuente
1
Esto funcionó. urllib3 se confunde entre el pip instalado y las versiones yum de pyOpenSSL. La eliminación de los paquetes yum e instalación con pip parece corregir esto.
scoota269
Después de aplicar esos primeros tres comandos, aparece el siguiente error: UnknownExtra: requests 2.6.0 has no such extra feature 'security'cuando ejecuto$ certbot certonly ...
Pathros
3

Me encuentro con el mismo problema. Usando python venv pude hacer que certbot funcionara usando pip.

Pasos: Instalar virtualenv

pip install virtualenv --upgrade

Crea un virtualenv

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

Activa el certbotvirtualenv

. /root/certbot/bin/activate

Su aviso podría convertirse en algo como esto

(certbot) [root@hostname ~]#

Luego pip install certbot

pip install certbot

Una vez completado, puede probar el certbotcomando bajo certbotvirtualenv, pero esto no es práctico si va a usar cron para configurar las renovaciones de certbot. Así que desactiva el entorno virtual,

(certbot) [root@hostname ~]# deactivate

Ahora ejecute el comando certbot desde

/root/certbot/bin/certbot
Danie
fuente
2

Esto parece estar funcionando para mí.

Tome un rpm desde aquí: 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
usuario353255
fuente
"ImportError: el módulo 'pyOpenSSL' no tiene la funcionalidad requerida. Intente actualizar a v0.14 o más reciente". He encontrado este problema y finalmente lo resolví instalando 'pyOpenSSL-0.15.1-1.el7.noarch.rpm'
kai.fantasy el
2

La solución correcta es:

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

Gracias a cnritng frim github.

Tim Duncklee
fuente
Hizo la magia de inmediato.
j4hangir
1

No mezcle yumpaquetes instalados a través de pipunos. La solución apropiada incluye la remoción paquetes PIP e instalar todo desde yum. Lo he delineado aquí .

¡No necesita una nueva pyOpenSSL en CentOS 7 para ejecutar certbot!

pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3
Danila Vershinin
fuente
0

Tuve el mismo problema en 0.9.3. Fue causado por la instalación del complemento nginx.

Puede reproducir fácilmente una instalación en funcionamiento:

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

rhoerbe
fuente
alguna solución?
chrismarx
No sé dónde estaba el problema. Reinstalé el CentOS y funcionó ahora :(
cs378
0

solo lo hice funcionar ejecutando

sudo pip install pyOpenSSL==0.14.0

eliminó la versión 0.13 e instaló la 0.14, luego certbot simplemente funcionó normalmente.

ignivs
fuente
Me sale lo siguiente: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

Parece que la versión de la fuente de epel es demasiado antigua, puede eliminar el certbot de la versión yum e instalarlo por pip

yingjia
fuente
-4

En lugar de certbot, el cliente letsencrypt me resolvió el problema.

Puede eliminar los otros clientes

pip uninstall certbot
pip uninstall pyopenssl

Y luego instala letsencrypt:

pip install letsencrypt
Alexey K
fuente