Come posso fare in modo che Pidgin accetti sempre un certificato scaduto?


8

Il mio lavoro utilizza un server XMPP locale (Wildfire, ora chiamato Openfire ). Quando si utilizza il client Pidgin, mi chiede sempre se deve accettare il certificato non valido (scaduto).

inserisci qui la descrizione dell'immagine

Vorrei che Pidgin lo accettasse sempre senza chiedermelo. Come posso farlo senza installare un nuovo certificato sul server XMPP?

Ho tentato di importare il certificato sia nel mio archivio personale che nell'archivio radice attendibile, ma ho ancora lo stesso messaggio. Anche il certificato è archiviato %APPDATA%\.purple\certificates\x509\tls_peers, ma ricevo ancora il prompt.

Ecco il registro di debug al momento della connessione:

Pidgin Debug Log : 10/4/2016 12:05:16 PM
(12:05:05) account: Connecting to account example@192.168.1.21/.
(12:05:05) connection: Connecting. gc = 04528D78
(12:05:05) dnssrv: querying SRV record for 192.168.1.21: _xmpp-client._tcp.192.168.1.21
(12:05:05) dnssrv: Couldn't look up SRV record. The filename, directory name, or volume label syntax is incorrect. (123).
(12:05:05) dnsquery: Performing DNS lookup for 192.168.1.21
(12:05:05) dnsquery: IP resolved for 192.168.1.21
(12:05:05) proxy: Attempting connection to 192.168.1.21
(12:05:05) proxy: Connecting to 192.168.1.21:5222 with no proxy
(12:05:05) proxy: Connection in progress
(12:05:05) proxy: Connecting to 192.168.1.21:5222.
(12:05:05) proxy: Connected to 192.168.1.21:5222.
(12:05:05) jabber: Sending (example@192.168.1.21): <?xml version='1.0' ?>
(12:05:05) jabber: Sending (example@192.168.1.21): <stream:stream to='192.168.1.21' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
(12:05:05) jabber: Recv (579): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="192.168.1.21" id="da08260e" xml:lang="en" version="1.0"><stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>
(12:05:05) jabber: Sending (example@192.168.1.21): <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
(12:05:05) jabber: Recv (50): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
(12:05:05) nss: SSL version 3.1 using 128-bit AES with 160-bit SHA1 MAC
Server Auth: 2048-bit RSA, Key Exchange: 1024-bit DHE, Compression: NULL
Cipher Suite Name: TLS_DHE_RSA_WITH_AES_128_CBC_SHA
(12:05:05) nss: subject=CN=Unknown,OU=Unknown,O=REDACTED,L=REDACTED,ST=REDACTED,C=US issuer=CN=Unknown,OU=Unknown,O=REDACTED,L=REDACTED,ST=REDACTED,C=US
(12:05:05) certificate/x509/tls_cached: Starting verify for 192.168.1.21
(12:05:05) certificate/x509/tls_cached: Certificate 192.168.1.21 expired at Mon Aug 29 09:54:35 2016

(12:05:05) certificate/x509/tls_cached: Checking for cached cert...
(12:05:05) certificate/x509/tls_cached: ...Found cached cert
(12:05:05) nss/x509: Loading certificate from C:\Users\example\AppData\Roaming\.purple\certificates\x509\tls_peers\192.168.1.21
(12:05:05) certificate/x509/tls_cached: Peer cert matched cached
(12:05:07) util: Writing file accounts.xml to directory C:\Users\example\AppData\Roaming\.purple
(12:05:07) util: Writing file C:\Users\example\AppData\Roaming\.purple\accounts.xml
(12:05:07) util: Writing file blist.xml to directory C:\Users\example\AppData\Roaming\.purple
(12:05:07) util: Writing file C:\Users\example\AppData\Roaming\.purple\blist.xml
(12:05:07) certificate/x509/tls_cached: User ACCEPTED cert
Caching first in chain for future use as 192.168.1.21...
(12:05:07) nss/x509: Exporting certificate to C:\Users\example\AppData\Roaming\.purple\certificates\x509\tls_peers\192.168.1.21
(12:05:07) util: Writing file C:\Users\example\AppData\Roaming\.purple\certificates\x509\tls_peers\192.168.1.21
(12:05:07) nss: Trusting CN=Unknown,OU=Unknown,O=REDACTED,L=REDACTED,ST=REDACTED,C=US
(12:05:07) certificate: Successfully verified certificate for 192.168.1.21

Hai provato a visualizzare il certificato e installarlo nell'archivio certificati di Windows?
Evan Darwin,

Sì, ma Pidgin genera lo stesso messaggio di errore.

2
Apri Debug Window(Guida -> Finestra di debug), connettiti al server e scegli Acceptnella finestra di dialogo del certificato. Potrebbero esserci dei messaggi relativi al certificato nella finestra Debug. È possibile allegare il registro alla domanda originale. I certificati accettati devono essere archiviati in %APPDATA%\.purple\certificates\x509\tls_peers. Prova a guardare lì se c'è un file con lo stesso nome del tuo server.
ge0rdi,

1
Ho brutte notizie. Sto guardando le fonti Pidgin (il tuo registro ha aiutato molto ad orientarsi nel flusso di codice), ma sembra che per i certificati scaduti (o non ancora validi) ci sia sempre pronta. Tutti gli altri errori del certificato non vengono segnalati se il certificato è già stato accettato. Suggerirei di segnalare questo problema agli sviluppatori Pidgin qui .
ge0rdi,

1
In effetti ci sono problemi con i certificati scaduti segnalati nel sistema di ticketing Pidgin . Di solito la risposta è che il certificato del server deve essere corretto.
ge0rdi,

Risposte:


7

Sfortunatamente non è possibile accettare permanentemente il certificato scaduto (almeno non in Pidgin 2.11.0 che è l'ultima versione al momento).

Ci sono molti rapporti su questo problema nel sistema ufficiale di tracciamento dei problemi di Pigdin . La solita risposta è che il certificato del server deve essere corretto.

Si può anche confermare nelle fonti Pidgin : la
verifica del certificato inizia tra x509_tls_cached_start_verify. Per il certificato scaduto è PURPLE_CERTIFICATE_EXPIREDimpostato il flag .
Se il certificato trovato nella cache x509_tls_cached_cert_in_cacheviene chiamato. Verifica che l'impronta digitale del certificato effettiva corrisponda a quella nella cache e nelle chiamate x509_tls_cached_complete.
Questa funzione svolge una delle seguenti operazioni:

  • avvisare l'utente che il certificato non è valido (se si è verificato un problema irreversibile con il certificato)
  • consente all'utente di decidere se accettare / rifiutare il certificato (se si è verificato un problema non fatale; questo è il caso del certificato scaduto)
  • continua senza alcuna richiesta in caso di problemi con il certificato

Non è possibile ignorare gli avvisi relativi al certificato scaduto (diverso dalla correzione del certificato stesso).


0

Quello che ha detto @ ge0rdi è giusto ma potresti provare a scaricare manualmente il certificato SSL. In questo modo farebbe iniziare Pidgin senza chiedere l'autorizzazione :)

Utilizzare il comando seguente:

~/.purple/certificates/x509/tls_peers$ openssl s_client -connect YOUR_SERVER:PORTNUMBER 

Se fallisce, aggiungi il comando con -starttls xmpp come segue:

~/.purple/certificates/x509/tls_peers$ openssl s_client -connect YOUR_SERVER:PORTNUMBER -starttls xmpp

Posiziona il file nella seguente cartella:

~/.purple/certificates/x509/tls_peers

Nota! Assicurarsi che il nome file sia il nome DNS del server.

MODIFICARE:

Indovina chi ha appena notato che usi una macchina Windows ... ~ / è la partizione home di un utente Linux. Secondo questa pagina l'equivelante di Windows è% APPDATA%.


Il certificato è già lì, ma Pidgin mi chiede ancora se voglio accettarlo ogni volta. Questo è nella domanda e anche nei commenti.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.