Fix Plesk – LetsEnCrypt en Centos 6 error (Python 2.6)

LetsEncrypt no soporta python 2.6 ( versión por defecto de centos 6 ), lo cual es un problema bastante importante para algunos, ya que centos 6 tiene soporte para varios años más y mucha gente sigue usandolo centos 6 con plesk el problema es que no se puede actualizar python 2.6 ya que si se hace se rompe el sistema principalmente yum, esto ya lo sabemos pero tenia que decirlo por si alguien no lo sabe y el otro día me tope con este error en plesk 12.5 con centos 6 y el modulo letsencript instalado desde el catalogo de módulos de plesk

Así que si usamos Plesk con centos 6 y hemos instalado letsencrypt puede que nos salga este feo error:

Error: Error de instalación del certificado SSL Let’s Encrypt: Failed letsencrypt execution: /usr/local/psa/var/modules/letsencrypt/venv.xxxx/lib/python2.6/site-packages/cryptography/__init__.py:25: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python.

El error completo:

Error: Let's Encrypt SSL certificate installation failed: Failed letsencrypt execution: /usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/cryptography/__init__.py:25: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python.
DeprecationWarning
Traceback (most recent call last):
File "/usr/local/psa/var/modules/letsencrypt/venv/bin/letsencrypt", line 11, in <module>
sys.exit(main())
File "/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/letsencrypt/cli.py", line 1950, in main
plugins = plugins_disco.PluginsRegistry.find_all()
File "/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/letsencrypt/plugins/disco.py", line 168, in find_all
plugin_ep = PluginEntryPoint(entry_point)
File "/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/letsencrypt/plugins/disco.py", line 31, in __init__
self.plugin_cls = entry_point.load()
File "/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2201, in load
self.require(*args, **kwargs)
File "/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2218, in require
items = working_set.resolve(reqs, env, installer)
File "/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages/pkg_resources/__init__.py", line 835, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
ContextualVersionConflict: (cryptography 1.1 (/usr/local/psa/var/modules/letsencrypt/venv.5qCQD/lib/python2.6/site-packages), Requirement.parse('cryptography>=1.3'), set(['PyOpenSSL']))

Oh si, bastante feo el error, nos recomienda actualizar python 2.6 pero no es posible como ya comente, la página del desarrollador en github no dice nada, básicamente que instales una nueva versión de python y que el modulo intentará detectarlo, esto no es cierto así que he tenido que meter mano para resolver el problema.

Así que bueno, vamos a parchear el problema metiendo un nuevo python sin dañar el sistema, vamos a usar los de ius y también epel que si no ius no funciona.

Instalamos epel:

yum install epel-release

Instalamos los de ius:

rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm

Ahora instalamos python 2.7:

yum install python27 python27-devel python27-pip python27-setuptools

IUS se activa automáticamente pero si no es así en su caso por cualquier motivo pueden usar el argumento –enablerepo=ius al final.

Esto nos instala python 2.7 como versión adicional:

# ls -lha /usr/bin/ |grep python
-rwxr-xr-x  2 root root   4,8K jul 23  2015 python
lrwxrwxrwx  1 root root      6 ago 10  2015 python2 -> python
-rwxr-xr-x  2 root root   4,8K jul 23  2015 python2.6
-rwxr-xr-x  1 root root   1,4K jul 23  2015 python2.6-config
-rwxr-xr-x  1 root root   4,8K dic  7 12:26 python2.7
-rwxr-xr-x  1 root root   1,9K dic  7 12:26 python2.7-config
lrwxrwxrwx  1 root root     16 mar 27 07:28 python-config -> python2.6-config

Ahora viene lo divertido, copiamos la ruta que viene en el error y accedemos

cd /usr/local/psa/var/modules/letsencrypt/venv.XXXXX/bin

Esta ruta es diferente el venv.xxxx parece que se genera aleatoriamente por eso revisen bien y accedemos a la carpeta bin como ven arriba.

Hacemos un backup del binario python ( renombrandolo )

mv python{,-bk}

Y hacemos un enlace simbólico a python 2.7:

ln -s /usr/bin/python2.7 /usr/local/psa/var/modules/letsencrypt/venv.5qCQD/bin/python

Hasta aquí todo bien cuando lo hice dije «voy a probar seguro que funciona ya» pero no es así.

Faltan algunas dependencias:

Instalamos libffi-devel necesario para instalar cffi y gcc para poder compilarlo:

yum install libffi-devel gcc

Ahora podemos instalar cffi con pip

/usr/bin/pip2.7 install cffi

También cryptography si no no podemos generar el ssl:

Antes instalamos openssl-devel para poder compilarlo es necesario algunas librerías:

yum install openssl-devel

Posteriormente:

/usr/bin/pip2.7 install cryptography

Por último instalamos lo más importante letsencrypt-plesk:

/usr/bin/pip2.7 letsencrypt-plesk

Con esto desaparece el error y podemos usar letsencrypt en todos nuestros dominios, si da un error dns es que no tenemos apuntando el dominio en cuestión.

plesk-skamasle

Espero que esta solución les sirva, me tomo un rato dar con la tecla pero si ayuda a alguien más me quedo satisfecho y claro lo dejemos como base de conocimientos ya que me tocará corregirlo en más de un plesk y por eso he hecho este script aunque no lo he probado pero sobre papel funciona ya que ejecuta los mismos comandos.

Recomiendo la ejecución manual de los anteriores pasos, el script hace lo mismo pero por falta de tiempo he omitido checkeos y respuestas de error y demás, básicamente si falla en instalar algo note dirá nada.

Descargamos y ejecutamos.

wget mirror.skamasle.com/scripts/fixletsencrypt.sh

sh fixletsencrypt.sh

Publicado por Maks Skamasle

Sysadmin, fotógrafo aficionado y me gusta tomar el té por las madrugadas cuando no hay ruido ni sol y mas fresco esta el día.

No usamos Cookies para rastrear nada, navega tranquilo...
Seguir Navegando
x