Pidgin이 항상 만료 된 인증서를 수락하도록하려면 어떻게해야합니까?


8

내 작품은 로컬 XMPP 서버 (Wildfire, 이제 Openfire 라고 함 )를 사용합니다. Pidgin 클라이언트를 사용할 때 항상 유효하지 않은 (만료 된) 인증서를 수락해야하는지 묻습니다.

여기에 이미지 설명을 입력하십시오

나는 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 인증서 저장소에 설치해 보셨습니까?
Evan Darwin

예, 그러나 Pidgin은 동일한 오류 메시지를 발생시킵니다.

2
Debug Window(도움말-> 디버그 창)을 열고 서버에 연결 한 Accept후 인증서 대화 상자에서 선택하십시오 . 디버그 창에 인증서 관련 메시지가있을 수 있습니다. 원래 질문에 로그를 첨부 할 수 있습니다. 허용 된 인증서는에 저장해야합니다 %APPDATA%\.purple\certificates\x509\tls_peers. 서버와 동일한 이름의 파일이 있으면 거기를 살펴보십시오.
ge0rdi 2016 년

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 인증서를 다운로드를 시도 할 수 있습니다. 이렇게하면 허가를 요구하지 않고 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 머신을 사용하는 것을 보았는지 맞춰보세요 ... ~ /는 리눅스 사용자의 홈 파티션입니다. 이 페이지 에 따르면 , Windows와 동등한 것은 % APPDATA %입니다.


인증서가 이미 있지만 Pidgin은 여전히 ​​매번 수락할지 묻습니다. 그것은 질문과 의견에도 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.