私の仕事では、ローカル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 [email protected]/.
(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 ([email protected]): <?xml version='1.0' ?>
(12:05:05) Jabber: Sending ([email protected]): <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 ([email protected]): <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
残念ながら、期限切れの証明書を永続的に受け入れることは不可能です(少なくとも現時点で最新バージョンであるPidgin 2.11.0では)。
この問題に関する多くの報告が公式にあります Pigdin問題追跡システム 。通常の答えは、サーバーの証明書を修正する必要があるというものです。
Pidginで確認することもできます sources :
証明書の検証はx509_tls_cached_start_verify
で始まります。期限切れの証明書には、フラグPURPLE_CERTIFICATE_EXPIRED
が設定されています。
証明書がキャッシュで見つかった場合、x509_tls_cached_cert_in_cache
が呼び出されます。実際の証明書のフィンガープリントがキャッシュ内のフィンガープリントと一致することを確認し、x509_tls_cached_complete
を呼び出します。
この関数は次のいずれかを実行します。
期限切れの証明書に関する警告をスキップする方法はありません(証明書自体を修正する以外)。
@ ge0rdi と言ったことは正しいですが、SSL証明書を手動でダウンロードしてみることができます。これを行うと、許可を求めずにPidginが起動します:)
次のコマンドを使用します。
~/.purple/certificates/x509/tls_peers$ openssl s_client -connect YOUR_SERVER:PORTNUMBER
それが失敗した場合は、次のように-starttlsxmppを使用してコマンドを追加します。
~/.purple/certificates/x509/tls_peers$ openssl s_client -connect YOUR_SERVER:PORTNUMBER -starttls xmpp
次のフォルダにファイルを配置します。
~/.purple/certificates/x509/tls_peers
注!ファイル名がサーバーのDNS名であることを確認してください。
編集:
あなたがWindowsマシンを使用していることに誰が気づいたかを推測してください...〜/はLinuxユーザーのホームパーティションです。 このページ によると、同等のウィンドウは%APPDATA%です。