Как я могу заставить Pidgin всегда принимать просроченный сертификат?

2033
Moses

Моя работа использует локальный сервер XMPP (Wildfire, теперь называется Openfire ). При использовании клиента Pidgin он всегда спрашивает меня, должен ли он принять недействительный (просроченный) сертификат.

enter image description here

Я бы хотел, чтобы Пиджин всегда принимал это, не спрашивая меня. Как я могу сделать это без установки нового сертификата на сервер 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 
7
Вы пытались просмотреть сертификат и установить его в хранилище сертификатов Windows? Evan Darwin 7 лет назад 0
Да, но Pidgin выдает то же сообщение об ошибке. Moses 7 лет назад 0
Откройте «Окно отладки» (Справка -> Окно отладки), подключитесь к серверу и выберите «Принять» в диалоговом окне сертификата. В окне отладки могут быть сообщения, связанные с сертификатами. Вы можете прикрепить журнал к исходному вопросу. Принятые сертификаты должны храниться в `% APPDATA% \. Purple \ Certificates \ x509 \ tls_peers`. Попробуйте посмотреть, есть ли файл с тем же именем, что и у вашего сервера. ge0rdi 7 лет назад 2
@ ge0rdi Журнал уже там. Некоторая информация была отредактирована для конфиденциальности. Сертификат присутствует в папке `tls_peers`. Moses 7 лет назад 0
У меня плохие новости. Я смотрю на Pidgin [sources] (https://bitbucket.org/pidgin/main/downloads/pidgin-2.11.0.tar.bz2) (ваш журнал очень помог сориентироваться в потоке кода), но это Кажется, что для истекших (или еще не действительных) сертификатов всегда есть подсказка. Все другие ошибки сертификата не сообщаются, если сертификат уже был принят. Я бы предложил сообщить об этой проблеме разработчикам Pidgin [здесь] (https://developer.pidgin.im/newticket). ge0rdi 7 лет назад 1
На самом деле есть проблемы с просроченными сертификатами, о которых сообщалось в Pidgin [система тикетов] (https://developer.pidgin.im/search?q=expired&noquickjump=1&ticket=on). Обычно ответом является то, что сертификат сервера должен быть исправлен. ge0rdi 7 лет назад 1
Вы пытались подключиться к серверу без шифрования? Chris 7 лет назад 0
@ Крис Как мне это сделать? Moses 7 лет назад 0
@ Моисей, извините, я, кажется, вспомнил, что была возможность подключиться без шифрования. Я только что проверил собственную установку Pidgin и могу выбрать только «Требовать шифрование», «Использовать шифрование, если доступно» и «Использовать SSL старого стиля». Ни один из тех, что, кажется, не то, что вы хотите. Chris 7 лет назад 0

2 ответа на вопрос

7
ge0rdi

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

Есть много сообщений об этой проблеме в официальной системе отслеживания проблем Pigdin . Обычный ответ - сертификат сервера должен быть исправлен.

Подтвердить это также можно в источниках на пиджине :
проверка сертификата начинается с x509_tls_cached_start_verify. Для просроченного сертификата установлен флаг PURPLE_CERTIFICATE_EXPIRED.
Если сертификат был найден в кеше x509_tls_cached_cert_in_cache, называется. Он проверяет, что фактический отпечаток сертификата совпадает с отпечатком в кеше и вызовах x509_tls_cached_complete.
Эта функция выполняет одно из следующих действий:

  • уведомить пользователя о том, что сертификат недействителен (если произошла неустранимая проблема с сертификатом)
  • позволяет пользователю решить, следует ли принимать / отклонять сертификат (если возникла нефатальная проблема; в случае с сертификатом с истекшим сроком действия)
  • продолжается без запроса, если не было проблем с сертификатом

Невозможно пропустить предупреждение об истекшем сертификате (кроме исправления самого сертификата).

-1
Rick van Lieshout

То, что сказал @ ge0rdi, правильно, но вы можете попробовать загрузить сертификат SSL вручную. Это может привести к запуску pidgin без разрешения :)

Используйте следующую команду:

~/.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. Согласно этой странице Windows Equivelant является% APPDATA%.

Сертификат уже есть, но Пиджин все еще спрашивает, хочу ли я принимать его каждый раз. Это как в вопросе, так и в комментариях. Moses 7 лет назад 0