¿Cómo puedo hacer que Pidgin siempre acepte un certificado caducado?

8

Mi trabajo utiliza un servidor XMPP local (Wildfire, ahora llamado Openfire ). Cuando uso el cliente Pidgin, siempre me pregunta si debe aceptar el certificado no válido (caducado).

ingrese la descripción de la imagen aquí

Me gustaría que Pidgin lo aceptara siempre sin preguntarme. ¿Cómo puedo hacer esto sin instalar un nuevo certificado en el servidor XMPP?

Intenté importar el certificado tanto en mi tienda Personal como en la tienda Trusted Root, pero sigo recibiendo el mismo mensaje. El certificado también se almacena %APPDATA%\.purple\certificates\x509\tls_peers, pero aún recibo el mensaje.

Aquí está el registro de depuración al conectarse:

Pidgin Debug Log : 10/4/2016 12:05:16 PM
(12:05:05) account: Connecting to account [email protected]/.
(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 ([email protected]): <?xml version='1.0' ?>
(12:05:05) jabber: Sending ([email protected]): <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 ([email protected]): <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

fuente
¿Has intentado ver el certificado e instalarlo en el almacén de certificados de Windows?
Evan Darwin
Sí, pero Pidgin arroja el mismo mensaje de error.
2
Abra Debug Window(Ayuda -> Ventana de depuración), conéctese al servidor y elija Accepten el diálogo de certificado. Puede haber algunos mensajes relacionados con el certificado en la ventana Depuración. Puede adjuntar el registro a su pregunta original. Los certificados aceptados deben almacenarse en %APPDATA%\.purple\certificates\x509\tls_peers. Intente buscar allí si hay un archivo con el mismo nombre que tiene su servidor.
ge0rdi
1
Tengo malas noticias. Estoy mirando las fuentes de Pidgin (su registro ayudó mucho a orientar el flujo de código), pero parece que para los certificados caducados (o aún no válidos) siempre hay un aviso. Todos los demás errores de certificado no se informan si el certificado ya fue aceptado. Sugeriría informar este problema a los desarrolladores de Pidgin aquí .
ge0rdi
1
De hecho, hay problemas con los certificados caducados informados en el sistema de tickets Pidgin . Por lo general, la respuesta es que el certificado del servidor tiene que ser reparado.
ge0rdi

Respuestas:

7

Desafortunadamente, no es posible aceptar permanentemente el certificado caducado (al menos no en Pidgin 2.11.0, que es la última versión en este momento).

Hay muchos informes sobre este problema en el sistema oficial de seguimiento de problemas de Pigdin . La respuesta habitual es que el certificado del servidor debe ser reparado.

También se puede confirmar en las fuentes de Pidgin :
comienza la verificación del certificado x509_tls_cached_start_verify. Para el certificado caducado hay un PURPLE_CERTIFICATE_EXPIREDconjunto de banderas .
Si se encontró el certificado en la memoria caché x509_tls_cached_cert_in_cachese llama. Verifica que la huella digital real del certificado coincida con una en la caché y las llamadas x509_tls_cached_complete.
Esta función realiza uno de los siguientes:

  • notificar al usuario que el certificado no es válido (si hubo algún problema grave con el certificado)
  • permite al usuario decidir si acepta / rechaza el certificado (si hubo un problema no fatal; este es el caso con el certificado caducado)
  • continúa sin ningún aviso si no hubo problemas con el certificado

No hay forma de omitir la advertencia sobre el certificado caducado (aparte de corregir el certificado en sí).

ge0rdi
fuente
0

Lo que @ ge0rdi dijo es correcto, pero puede intentar descargar el certificado SSL a mano. Hacer esto haría que pidgin comenzara sin pedir permiso :)

Use el siguiente comando:

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

Si eso falla, agregue el comando con -starttls xmpp de la siguiente manera:

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

Coloque el archivo en la siguiente carpeta:

~/.purple/certificates/x509/tls_peers

¡Nota! Asegúrese de que el nombre del archivo sea el nombre DNS del servidor.

EDITAR:

Adivina quién acaba de notar que usas una máquina Windows ... ~ / es la partición de inicio de un usuario de Linux. De acuerdo con esta página, el equivalente de Windows es% APPDATA%.

Rick van Lieshout
fuente
El certificado ya está allí, pero Pidgin todavía me pregunta si quiero aceptarlo cada vez. Eso está en la pregunta y en los comentarios también.