Як я можу змусити Pidgin завжди приймати сертифікат з минулим терміном дії?


8

У моїй роботі використовується локальний XMPP-сервер (Wildfire, тепер називається Openfire ). Під час використання клієнта Pidgin він завжди запитує мене, чи слід приймати недійсний (термін дії).

введіть тут опис зображення

Я хотів би, щоб Підгін завжди приймав це, не питаючи мене. Як це зробити, не встановлюючи новий сертифікат на сервер XMPP?

Я намагався імпортувати сертифікат як в мій особистий магазин, так і в магазин довірених коренів, але все одно отримую те саме підказку. Сертифікат також зберігається в %APPDATA%\.purple\certificates\x509\tls_peers, але я все одно отримую підказку.

Ось журнал налагодження при підключенні:

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

Ви спробували переглянути сертифікат та встановити його у сховищі сертифікатів Windows?
Еван Дарвін

Так, але Pidgin передає те саме повідомлення про помилку.

2
Відкрийте Debug Window(Довідка -> Вікно налагодження), підключіться до сервера та виберіть Acceptу діалоговому вікні сертифіката. У вікні налагодження можуть бути деякі повідомлення, пов’язані із сертифікатом. Ви можете приєднати журнал до свого оригінального питання. Прийняті сертифікати повинні зберігатися в %APPDATA%\.purple\certificates\x509\tls_peers. Спробуйте подивитися там, чи є файл з тим самим іменем, як у вашого сервера.
ge0rdi

1
У мене погані новини. Я переглядаю джерела Pidgin (ваш журнал дуже допоміг зорієнтуватися в потоці коду), але здається, що для сертифікатів, що минули (чи ще не дійсні), завжди є запит. Про всі інші помилки сертифіката не повідомляється, якщо сертифікат вже прийнято. Я б запропонував повідомити про цю проблему розробникам Pidgin тут .
ge0rdi

1
Насправді є проблеми із сертифікатами з простроченим терміном, про які повідомляється в системі квитків Pidgin . Зазвичай відповідь полягає в тому, що сертифікат сервера повинен бути виправлений.
ge0rdi

Відповіді:


7

На жаль, неможливо назавжди прийняти сертифікат простроченого терміну (принаймні, не в Pidgin 2.11.0, який є останньою версією на даний момент).

Існує багато повідомлень про це питання в офіційній системі відстеження випусків Pigdin . Зазвичай відповідь полягає в тому, що сертифікат сервера повинен бути виправлений.

Можна також підтвердити це у джерелах Pidgin :
Підтвердження сертифікату починається з x509_tls_cached_start_verify. Для сертифікату з минулим терміном дії PURPLE_CERTIFICATE_EXPIREDвстановлено прапор .
Якщо сертифікат знайдено в кеші x509_tls_cached_cert_in_cache, викликається. Він перевіряє, що фактичний відбиток сертифіката відповідає одному в кеш-пам'яті та викликах x509_tls_cached_complete.
Ця функція виконує одне з наступних дій:

  • повідомляти користувача про те, що сертифікат недійсний (якщо стався якийсь фатальний випуск сертифіката)
  • дозволяє користувачеві вирішити, чи приймати / відхиляти сертифікат (якщо виникла не фатальна проблема; це стосується сертифікату з минулим терміном)
  • продовжується без будь-якого підказок, якщо не було проблеми з сертифікатом

Немає способу пропустити попередження про термін дії сертифікату, що втратив чинність (крім самого підтвердження сертифікату).


0

Що @ ge0rdi сказав, що це правильно, але ви можете спробувати завантажити сертифікат SSL вручну. Це зробить стартовий модуль без його запиту про дозвіл :)

Використовуйте таку команду:

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

Якщо це не вдалося додати команду з -starttls xmpp наступним чином:

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

Помістіть файл у таку папку:

~/.purple/certificates/x509/tls_peers

Примітка! Переконайтесь, що ім'я файлу - це DNS-ім’я сервера.

Редагувати:

Здогадайтесь, хто щойно помітив, що ви використовуєте машину Windows ... ~ / - це домашній розділ користувача Linux. Відповідно до цієї сторінки еквівалент вікон становить% APPDATA%.


Сертифікат вже є, але Pidgin все ще запитує, чи хочу я його приймати кожен раз. Це і в питанні, і в коментарях.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.