¿Cómo hacer que los errores de OpenSSL sean más detallados para el cliente MQTT?

2

Tengo 2 servidores, con una instalación muy similar (uno en Debian 8.7, el otro en Debian 8.8).

En el primer servidor, cuando intento suscribirme a un tema MQTT a través de ssl:

mosquitto_sub -h localhost -t test -p 8883 --cafile /etc/mosquitto/certs/selfsigned.pem -d

Recibo este mensaje claro que parece provenir de OpenSSL (ya sé el motivo del error, no es el objetivo de mi pregunta):

Client mosqsub/9647-CIEYY2T7 sending CONNECT
OpenSSL Error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Error: Protocol error

En el otro servidor, para el mismo comando exacto, solo recibo este mensaje oscuro sin la explicación de "OpenSSL":

Unable to connect (8).

Entonces, ¿cómo podría hacer que openssl sea más detallado?

    
pregunta Tristan 10.05.2017 - 21:08
fuente

2 respuestas

2

Ok, aquí está la respuesta y no está relacionada con OpenSSL.

Cuando instala Mosquitto desde los repositorios de Debian, obtiene una v1.3.4-2 que es muy antigua y no funciona como se esperaba, al menos en términos de registros SSL.

Tan solo instale el último Mosquitto (v1.4.11 hoy) desde el repositorio mosquitto.org, y obtendrá el resultado completo: enlace

    
respondido por el Tristan 17.05.2017 - 08:40
fuente
1

No hay nada más detallado para OpenSSL ya que OpenSSL no tiene ningún resultado de depuración por sí mismo. Lo que se ve en el primer caso no es la salida de OpenSSL sino el error informado por OpenSSL a la aplicación, que luego muestra este error al usuario.

Se desconoce por qué la misma aplicación no muestra el error en el segundo caso. Pero mi conjetura es que en realidad no es el mismo problema que afirma: en el primer caso, la aplicación demostró que puede conectarse y que envía datos (CONECTAR) e intenta y falla con el protocolo de enlace TLS. Pero en el segundo caso, la aplicación dice que no puede conectarse en absoluto, lo que significa que no puede enviar nada y no hacer ningún saludo de TLS y, por lo tanto, no puede fallar con el saludo de TLS. Por qué la aplicación no se puede conectar no es un tema aquí.

Puedes simplemente verificar si tengo razón al hacer una captura de paquetes. En el primer caso, debería ver el protocolo de enlace TLS al menos hasta la parte donde el servidor ha enviado el certificado al cliente. En el segundo caso, no debería ver ninguna parte del protocolo de enlace TLS.

    
respondido por el Steffen Ullrich 10.05.2017 - 21:41
fuente

Lea otras preguntas en las etiquetas