Wie kann ich dafür sorgen, dass Pidgin immer ein abgelaufenes Zertifikat akzeptiert?

1906
Moses

Meine Arbeit verwendet einen lokalen XMPP-Server (Wildfire, jetzt Openfire genannt ). Wenn Sie den Pidgin-Client verwenden, werden Sie immer gefragt, ob das ungültige (abgelaufene) Zertifikat akzeptiert werden soll.

Wie kann ich dafür sorgen, dass Pidgin immer ein abgelaufenes Zertifikat akzeptiert?

Ich möchte, dass Pidgin es immer akzeptiert, ohne mich zu fragen. Wie kann ich dies tun, ohne ein neues Zertifikat auf dem XMPP-Server zu installieren?

Ich habe versucht, das Zertifikat sowohl in meinen persönlichen als auch in den vertrauenswürdigen Stammspeicher zu importieren, erhalte aber immer noch dieselbe Aufforderung. Das Zertifikat ist auch in gespeichert %APPDATA%\.purple\certificates\x509\tls_peers, aber ich bekomme immer noch die Aufforderung.

Hier ist das Debug-Protokoll beim Verbinden:

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 
7
Haben Sie versucht, das Zertifikat anzuzeigen und im Windows-Zertifikatspeicher zu installieren? Evan Darwin vor 7 Jahren 0
Ja, aber Pidgin gibt dieselbe Fehlermeldung aus. Moses vor 7 Jahren 0
Öffnen Sie `Debug Window` (Hilfe -> Debug Window), verbinden Sie sich mit dem Server und wählen Sie im Zertifikatsdialogfeld 'Accept'. Im Debug-Fenster können einige Zertifikatsnachrichten angezeigt werden. Sie können das Protokoll an Ihre ursprüngliche Frage anhängen. Akzeptierte Zertifikate sollten in% APPDATA% \. Purple \ certification \ x509 \ tls_peers` gespeichert werden. Versuchen Sie, dort nachzusehen, ob es eine Datei mit demselben Namen wie Ihr Server gibt. ge0rdi vor 7 Jahren 2
@ ge0rdi Log ist jetzt da. Einige Informationen wurden aus Datenschutzgründen geändert. Das cert ist im Ordner `tls_peers` vorhanden. Moses vor 7 Jahren 0
Ich habe schlechte Neuigkeiten. Ich schaue mir Pidgin [sources] (https://bitbucket.org/pidgin/main/downloads/pidgin-2.11.0.tar.bz2) an (Ihr Protokoll hat mir sehr geholfen, sich im Codefluss zu orientieren), aber es Es scheint, dass es für abgelaufene (oder noch nicht gültige) Zertifikate immer eine Eingabeaufforderung gibt. Alle anderen Zertifikatfehler werden nicht gemeldet, wenn das Zertifikat bereits akzeptiert wurde. Ich würde vorschlagen, dieses Problem den Pidgin-Entwicklern [hier] (https://developer.pidgin.im/newticket) zu melden. ge0rdi vor 7 Jahren 1
In der Tat gibt es Probleme mit abgelaufenen Zertifikaten, die in Pidgin [Ticketsystem] (https://developer.pidgin.im/search?q=expired&noquickjump=1&ticket=on) gemeldet werden. Normalerweise lautet die Antwort, dass das Zertifikat des Servers repariert werden muss. ge0rdi vor 7 Jahren 1
Haben Sie versucht, sich ohne Verschlüsselung mit dem Server zu verbinden? Chris vor 7 Jahren 0
@ Chris Wie mache ich das? Moses vor 7 Jahren 0
@Moses, Sorry, ich schien mich zu erinnern, dass es eine Möglichkeit gab, sich ohne Verschlüsselung zu verbinden. Ich habe gerade bei meiner eigenen Installation von Pidgin nachgesehen und kann nur "Verschlüsselung erforderlich", "Verschlüsselung verwenden, falls verfügbar" und "Altes SSL verwenden" auswählen. Nichts davon scheint das zu sein, was Sie wollen. Chris vor 7 Jahren 0

2 Antworten auf die Frage

7
ge0rdi

Leider ist es nicht möglich, das abgelaufene Zertifikat dauerhaft zu akzeptieren (zumindest nicht in Pidgin 2.11.0, der aktuellsten Version).

Es gibt viele Berichte zu diesem Problem im offiziellen Pigdin-System zur Verfolgung von Problemen . Die übliche Antwort ist, dass das Zertifikat des Servers repariert werden muss.

Man kann es auch in Pidgin- Quellen bestätigen : Die
Zertifikatsüberprüfung beginnt im x509_tls_cached_start_verify. Für abgelaufenes Zertifikat ist ein Flag PURPLE_CERTIFICATE_EXPIREDgesetzt.
Wenn das Zertifikat im Cache gefunden wurde, x509_tls_cached_cert_in_cachewird aufgerufen. Es wird überprüft, ob der tatsächliche Fingerabdruck eines Zertifikats mit einem im Cache und mit Aufrufen übereinstimmt x509_tls_cached_complete.
Diese Funktion hat folgende Möglichkeiten:

  • Benutzer benachrichtigen, dass das Zertifikat ungültig ist (falls ein schwerwiegendes Zertifikatproblem aufgetreten ist)
  • Der Benutzer kann entscheiden, ob das Zertifikat akzeptiert / abgelehnt werden soll (falls kein schwerwiegendes Problem aufgetreten ist; dies ist der Fall bei abgelaufenem Zertifikat)
  • wird ohne Aufforderung fortgesetzt, wenn mit dem Zertifikat kein Problem aufgetreten ist

Es gibt keine Möglichkeit, die Warnung über ein abgelaufenes Zertifikat zu überspringen (außer das Zertifikat selbst zu reparieren).

-1
Rick van Lieshout

Was @ ge0rdi sagte, ist richtig, aber Sie könnten versuchen, das SSL-Zertifikat von Hand herunterzuladen. Dies würde dazu führen, dass Pidgin ohne Erlaubnis startet :)

Verwenden Sie den folgenden Befehl:

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

Wenn dies fehlschlägt, hängen Sie den Befehl mit -starttls xmpp wie folgt an:

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

Legen Sie die Datei in folgendem Ordner ab:

~/.purple/certificates/x509/tls_peers 

Hinweis! Stellen Sie sicher, dass der Dateiname der DNS-Name des Servers ist.

BEARBEITEN:

Ratet mal, wer gerade bemerkt hat, dass Sie eine Windows-Maschine verwenden ... ~ / ist die Home-Partition eines Linux-Benutzers. Entsprechend dieser Seite lautet das Äquivalenzfenster% APPDATA%.

Das Zertifikat ist bereits da, aber Pidgin fragt immer noch, ob ich es jedes Mal akzeptieren möchte. Das steht in der Frage und auch in den Kommentaren. Moses vor 7 Jahren 0