python-aemet icon indicating copy to clipboard operation
python-aemet copied to clipboard

Uso de la librería en Raspberry Pi, problema SSL: DH_KEY_TOO_SMALL

Open emichester opened this issue 3 years ago • 2 comments

Escribo esto por si a alguien le sirve. Y por cierto, muy buena implementación.

Al usar la librería en la RPi (en mi caso con Raspbian 10) salta la siguiente excepción:

. . .
  File "/usr/lib/python3.7/ssl.py", line 412, in wrap_socket
    session=session
  File "/usr/lib/python3.7/ssl.py", line 853, in _create
    self.do_handshake()
  File "/usr/lib/python3.7/ssl.py", line 1117, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1056)
. . . 

Si se usa en Ubuntu 18.04 LTS, por ejemplo, no da este problema. Pero en Raspbian sí, al haber sido actualizados los parámetros de seguridad en Debian OpenSSL (ver hilo1, hilo2->Edit). La solución (puede usar el editor de texto que desee, para el ejemplo uso vim.tiny que viene por defecto en Raspbian):

$ sudo vim.tiny /etc/ssl/openssl.cnf

Verá en las últimas líneas lo siguiente:

    360 [system_default_sect]
    361 MinProtocol = TLSv1.2
    362 CipherString = DEFAULT@SECLEVEL=2

Cambie el CipherString a nivel 1 y ya podrá ejecutar la librería sin problemas.

    362 CipherString = DEFAULT@SECLEVEL=1

(dejo el issue abierto, los contribuidores podrán cerrarlo cuando lo estimen conveniente)

emichester avatar Mar 29 '21 02:03 emichester

Muchas gracias por la aportación @emichester! la dejo fijada y abierta para que se pueda ver!

pablo-moreno avatar Mar 29 '21 09:03 pablo-moreno

Otra opción que me ha funcionado a mí es añadir este par de líneas antes de la primera llamada al API:

import requests requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'

javierpena avatar Jun 18 '21 10:06 javierpena