Come rendere gli errori di OpenSSL più dettagliati per il client MQTT?

2

Ho 2 server, con un'installazione molto simile (una su Debian 8.7, l'altra su Debian 8.8).

Sul primo server, quando provo ad iscrivermi a un argomento MQTT su ssl:

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

Ho ricevuto questo chiaro messaggio che sembra provenire da OpenSSL (conosco già il motivo dell'errore, non è l'obiettivo della mia domanda):

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

Sull'altro server, per lo stesso comando, ottengo solo questo messaggio oscuro senza la spiegazione "OpenSSL":

Unable to connect (8).

Quindi, come potrei rendere openssl più dettagliato?

    
posta Tristan 10.05.2017 - 21:08
fonte

2 risposte

2

Ok, ecco la risposta e non è correlata a OpenSSL.

Quando installi Mosquitto dai repository Debian, ti viene fornita una v1.3.4-2 che è veramente vecchia e non funziona come previsto, almeno in termini di log SSL.

Quindi installa l'ultimo Mosquitto (v1.4.11 oggi) dal repository mosquitto.org, e otterrai l'output completo: link

    
risposta data 17.05.2017 - 08:40
fonte
1

Non esiste nulla di più dettagliato per OpenSSL poiché OpenSSL non ha alcun output di debug da solo. Quello che vedi nel primo caso non è l'output di OpenSSL ma l'errore riportato da OpenSSL all'applicazione, che mostra questo errore all'utente.

Perché la stessa applicazione non mostra l'errore nel secondo caso è sconosciuto. Ma la mia ipotesi è che in realtà non è lo stesso problema che si afferma: nel primo caso l'applicazione ha mostrato che può connettersi e che invia dati (CONNECT) e tenta e fallisce con l'handshake TLS. Ma nel secondo caso l'applicazione dice che non può connettersi affatto, il che significa che non può inviare nulla e non fare alcun handshake TLS e quindi non può fallire con l'handshake TLS. Perché l'applicazione non può connettersi è off-topic qui.

Puoi semplicemente verificare se ho ragione eseguendo un'acquisizione di pacchetti. Nel primo caso si dovrebbe vedere l'handshake TLS almeno fino alla parte in cui il server ha inviato il certificato al client. Nel secondo caso non dovresti vedere alcuna parte dell'handshake TLS.

    
risposta data 10.05.2017 - 21:41
fonte

Leggi altre domande sui tag