python-aemet
python-aemet copied to clipboard
Uso de la librería en Raspberry Pi, problema SSL: DH_KEY_TOO_SMALL
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)
Muchas gracias por la aportación @emichester! la dejo fijada y abierta para que se pueda ver!
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'