Como posso fazer com que o Pidgin sempre aceite um certificado expirado?

8

Meu trabalho usa um servidor XMPP local (Wildfire, agora chamado Openfire ). Ao usar o cliente Pidgin, ele sempre me pergunta se deve aceitar o certificado inválido (expirado).

insira a descrição da imagem aqui

Eu gostaria que o Pidgin sempre o aceitasse sem me perguntar. Como fazer isso sem instalar um novo certificado no servidor XMPP?

Tentei importar o certificado para o meu armazenamento pessoal e o armazenamento raiz confiável, mas ainda recebo o mesmo prompt. O certificado também é armazenado %APPDATA%\.purple\certificates\x509\tls_peers, mas ainda recebo o prompt.

Aqui está o log de depuração ao conectar:

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
Moisés
fonte
Você já tentou visualizar o certificado e instalá-lo no armazenamento de certificados do Windows?
Evan Darwin
Sim, mas o Pidgin lança a mesma mensagem de erro.
Moses
2
Abra Debug Window(Ajuda -> Janela de depuração), conecte-se ao servidor e escolha Acceptna caixa de diálogo de certificado. Pode haver algumas mensagens relacionadas ao certificado na janela Debug. Você pode anexar o log à sua pergunta original. Os certificados aceitos devem ser armazenados em %APPDATA%\.purple\certificates\x509\tls_peers. Tente procurar lá se houver um arquivo com o mesmo nome do seu servidor.
Ge0rdi 01/10/19
1
Tenho más notícias. Estou procurando fontes Pidgin (seu log ajudou muito a orientar no fluxo de código), mas parece que para certificados expirados (ou ainda não válidos) sempre há prompt. Todos os outros erros de certificado não são relatados se o certificado já foi aceito. Sugiro relatar esse problema aos desenvolvedores do Pidgin aqui .
58568 Gehrrd #
1
De fato, há problemas com certificados expirados relatados no sistema de emissão de bilhetes do Pidgin . Normalmente, a resposta é que o certificado do servidor precisa ser corrigido.
ge0rdi

Respostas:

7

Infelizmente, não é possível aceitar permanentemente o certificado expirado (pelo menos não no Pidgin 2.11.0, que é a versão mais recente no momento).

Existem muitos relatórios sobre esse problema no sistema oficial de rastreamento de problemas Pigdin . A resposta usual é que o certificado do servidor precisa ser corrigido.

Também é possível confirmá-lo nas fontes do Pidgin :
A verificação do certificado começa em x509_tls_cached_start_verify. Para certificado expirado, há sinalizador PURPLE_CERTIFICATE_EXPIREDdefinido.
Se o certificado foi encontrado no cache x509_tls_cached_cert_in_cacheé chamado. Ele verifica se a impressão digital do certificado real corresponde a uma no cache e nas chamadas x509_tls_cached_complete.
Esta função faz um dos seguintes:

  • notificar o usuário que o certificado é inválido (se houver algum problema fatal no certificado)
  • permite que o usuário decida se aceita / rejeita o certificado (se houver um problema não fatal; é o caso do certificado expirado)
  • continua sem aviso, se não houver nenhum problema com o certificado

Não há como ignorar o aviso sobre o certificado expirado (além de corrigir o próprio certificado).

ge0rdi
fonte
0

O que a @ ge0rdi disse está certo, mas você pode tentar fazer o download do certificado SSL manualmente. Fazer isso faria o pidgin começar sem pedir permissão :)

Use o seguinte comando:

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

Se isso falhar, acrescente o comando com -starttls xmpp da seguinte maneira:

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

Coloque o arquivo na seguinte pasta:

~/.purple/certificates/x509/tls_peers

Nota! Verifique se o nome do arquivo é o nome DNS do servidor.

EDITAR:

Adivinha quem acabou de perceber que você usa uma máquina Windows ... ~ / é a partição inicial do usuário do Linux. De acordo com esta página, a janela equivalente é% APPDATA%.

Rick van Lieshout
fonte
O certificado já está lá, mas o Pidgin ainda pergunta se eu quero aceitá-lo sempre. Isso está na pergunta e nos comentários também.
Moses