Jak sprawić, aby Pidgin zawsze akceptował wygasły certyfikat?

8

Moja praca wykorzystuje lokalny serwer XMPP (Wildfire, teraz nazywany Openfire ). Podczas korzystania z klienta Pidgin zawsze pyta mnie, czy powinien zaakceptować nieważny (wygasły) certyfikat.

wprowadź opis zdjęcia tutaj

Chciałbym, aby Pidgin zawsze akceptował to bez pytania. Jak mogę to zrobić bez instalowania nowego certyfikatu na serwerze XMPP?

Próbowałem zaimportować certyfikat zarówno do mojego osobistego sklepu, jak i do zaufanego głównego katalogu, ale wciąż otrzymuję ten sam monit. Certyfikat jest również przechowywany %APPDATA%\.purple\certificates\x509\tls_peers, ale nadal pojawia się monit.

Oto dziennik debugowania po połączeniu:

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

źródło
Czy próbowałeś wyświetlić certyfikat i zainstalować go w magazynie certyfikatów systemu Windows?
Evan Darwin
Tak, ale Pidgin wyświetla ten sam komunikat o błędzie.
2
Otwórz Debug Window(Pomoc -> Okno debugowania), połącz się z serwerem i wybierz Acceptw oknie dialogowym certyfikatu. W oknie debugowania mogą znajdować się niektóre wiadomości związane z certyfikatami. Możesz dołączyć dziennik do pierwotnego pytania. Zaakceptowane certyfikaty powinny być przechowywane w %APPDATA%\.purple\certificates\x509\tls_peers. Spróbuj tam poszukać pliku o takiej samej nazwie jak serwer.
ge0rdi
1
Mam złe wieści. Patrzę na źródła Pidgin (twój dziennik bardzo pomógł zorientować się w przepływie kodu), ale wydaje się, że w przypadku wygasłych (lub jeszcze nieważnych) certyfikatów zawsze pojawia się monit. Wszystkie inne błędy certyfikatu nie są zgłaszane, jeśli certyfikat został już zaakceptowany. Proponuję zgłosić ten problem programistom Pidgin tutaj .
ge0rdi
1
W rzeczywistości występują problemy z wygasłymi certyfikatami zgłoszonymi w systemie sprzedaży biletów Pidgin . Zwykle odpowiedź jest taka, że ​​certyfikat serwera musi zostać naprawiony.
ge0rdi

Odpowiedzi:

7

Niestety nie jest możliwe trwałe zaakceptowanie wygasłego certyfikatu (przynajmniej nie w Pidgin 2.11.0, który jest obecnie najnowszą wersją).

Istnieje wiele raportów na ten temat w oficjalnym systemie śledzenia problemów Pigdin . Zwykle odpowiedź jest taka, że ​​certyfikat serwera musi zostać naprawiony.

Można to również potwierdzić w źródłach Pidgin :
Weryfikacja certyfikatu rozpoczyna się za x509_tls_cached_start_verify. Dla wygasłego certyfikatu PURPLE_CERTIFICATE_EXPIREDustawiono flagę .
Jeśli certyfikat został znaleziony w pamięci podręcznej, x509_tls_cached_cert_in_cachewywoływany jest. Sprawdza, czy rzeczywisty odcisk palca certyfikatu pasuje do jednego w pamięci podręcznej i wywołaniach x509_tls_cached_complete.
Ta funkcja wykonuje jedną z następujących czynności:

  • powiadom użytkownika, że ​​certyfikat jest nieprawidłowy (jeśli wystąpił krytyczny problem z certyfikatem)
  • pozwala użytkownikowi zdecydować, czy przyjąć / odrzucić certyfikat (jeśli wystąpił problem niekrytyczny; dotyczy to certyfikatu, który wygasł)
  • kontynuuje bez pytania, jeśli nie wystąpił problem z certyfikatem

Nie ma możliwości pominięcia ostrzeżenia o wygasłym certyfikacie (oprócz samego naprawienia certyfikatu).

ge0rdi
źródło
0

To, co powiedział @ ge0rdi , jest słuszne, ale możesz spróbować pobrać certyfikat SSL ręcznie. W ten sposób pidgin zacząłby się bez pytania o pozwolenie :)

Użyj następującego polecenia:

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

Jeśli to się nie powiedzie, dodaj polecenie z opcją -starttls xmpp w następujący sposób:

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

Umieść plik w następującym folderze:

~/.purple/certificates/x509/tls_peers

Uwaga! Upewnij się, że nazwa pliku to nazwa DNS serwera.

EDYTOWAĆ:

Zgadnij, kto właśnie zauważył, że używasz komputera z systemem Windows ... ~ / to partycja domowa użytkownika systemu Linux. Według tej strony odpowiednikiem systemu Windows jest% APPDATA%.

Rick van Lieshout
źródło
Certyfikat już tam jest, ale Pidgin wciąż pyta, czy chcę go akceptować za każdym razem. To jest w pytaniu i komentarzach.