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証明書ストアにインストールしてみましたか?
エヴァンダーウィン

はい。ただし、Pidginは同じエラーメッセージをスローします。

2
開いてDebug Window(ヘルプ->デバッグウィンドウ)、サーバーに接続しAccept、証明書ダイアログで選択します。デバッグウィンドウに証明書関連のメッセージが表示される場合があります。元の質問にログを添付できます。承認された証明書はに保存する必要があります%APPDATA%\.purple\certificates\x509\tls_peers。サーバーと同じ名前のファイルがあるかどうかを調べてみてください。
ge0rdi 2016年

1
悪いニュースがある。私はPidginのソース(ログがコードフローを方向付けるのに大いに役立ちました)を調べていますが、期限切れ(またはまだ有効ではない)証明書の場合は常にプロンプ​​トが表示されるようです。証明書がすでに受け入れられている場合、他のすべての証明書エラーは報告されません。この問題をPidgin開発者にここで報告することをお勧めします
ge0rdi 2016年

1
実際、Pidgin チケットシステムで報告される期限切れの証明書に関する問題があります。通常、答えはサーバーの証明書を修正する必要があるということです。
ge0rdi 2016年

回答:


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マシンを使用していることに気付いた人を推測してください...〜/はLinuxユーザーのホームパーティションです。このページによると、Windowsで同等のものは%APPDATA%です。


証明書は既に存在しますが、Pidginは毎回それを受け入れるかどうかを尋ねます。それは質問とコメントにもあります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.