最近Openfireクライアントで作業しています。私はこれまでに分かりませんでした(私はいくつかの手がかりを持っていますが、まだ固い解決策はありません)というこの奇妙な問題を抱えています。 我々は2台のopenfireサーバを持っている:java-smackクライアントからOpenfireに接続する際のSSLエラー
我々はそれがADSL経由でインターネットにconected通常のPC上でホストされたテストのために使用していたことを- まず、サーバは、すべてが完璧に働いて、スムーズに構成された、NATの後ろにいました。私たちのクライアントは問題なく接続していました。 、instaledから生産への接続時に
今まったく同じように設定し、試験1の場合と同じOS、OF OFと
でorg.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203) で362)javax.net.ssl.SSLException:受信致命的なアラートを: INTERNAL_ERROR sun.security.ssl.Alerts.getSSLException(不明なソース) でsun.securityで認証しようとしたとき、クライアント我々はこの問題を次のようexperianced。 ssl.Alerts.getSSLException(不明なソース) Sun.security.ssl.SSLSocketImpl.recvAlert(不明なソース) at sun.security.ssl.SSLSocketImpl.readRecord(不明なソース) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(不明なソース) at sun.security org.jivesoftware.smackでorg.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:806) でsun.security.ssl.SSLSocketImpl.startHandshake(不明なソース) で.ssl.SSLSocketImpl.startHandshake(不明なソース) .PacketReader.parsePackets(PacketReader.java:267) at org.jivesoftware.smack.PacketReader.access $ 000(PacketReader.java:43) at org.jivesoftware.smack.PacketReader $ 1.run(PacketReader.java:70) java.lang.IllegalStateException:サーバーに接続されていません。 org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:445)org.jivesoftware.smack.SASLAuthentication.authenticateでorg.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:69) で(SASLAuthenticationで 。 java:352) at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203) at Main.connectToJabber(Main.java:31) at Main.main(Main.java:16) スレッド内の例外"main" java.lang.IllegalStateException:サーバーに接続されていません。 org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:445)org.jivesoftware.smack.SASLAuthentication.authenticateでorg.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:69) で(SASLAuthenticationで 。 Javaの:Main.connectToJabber Main.mainで(Main.java:31) (Main.java:16)
ここで一番面白いのは、私のフラットからクライアントを使ってプロダクションサーバに接続すると、そのエラーは表示されません。他の開発者のフラットからプロダクションに接続すると、このエラーが発生します。違うインターネットプロバイダ(私はそれがそれと関係があるかもしれないかどうか分からない)。 私たちはそれを見て一晩中過ごしましたが、これまでのところ何の手がかりもありませんでした。 私達はちょうど接続を確認するための基本的なコードを書いた:
public static void connect() {
ConnectionConfiguration cc = new ConnectionConfiguration("prod ip",
5222);
cc.setCompressionEnabled(true);
cc.setSASLAuthenticationEnabled(true);
Connection connection = new XMPPConnection(cc);
try {
connection.connect();
connection.login(login, pass, "resource");
System.out.println(connection.isSecureConnection() + " " + connection.isUsingCompression());
} catch (XMPPException e1) {
e1.getStackTrace();
}
}
いくつかの所見:
- をラインconnection.login(...)はそう何がエラーの原因となっている、エラーがない、コメントしたときそこに本番サーバに接続するのSystem.out ...が偽書き込むとき
- テストサーバーを接続するのSystem.out ...偽の真の書き込み、
- が偽
- が試されますcc.setCompressionEnabled()cc.setSASLAuthenticationEnabled();すべての組み合わせは次のとおりです。 (真、真、偽真真偽偽偽)
- エラーにもかかわらず、ユーザーは要約する に記録されます。テスト環境で
接続を生産して、常に動作します:私の場所から - 問題なく、他の場所に記載されているエラー、 を使用していますSMACK API 3.2.1
アイデアの1つは証明書で何かをしなければならないということでした。非常に
これを確認してください:http://community.igniterealtime.org/thread/42807 – home
私はすでにしましたが、この質問はあなたが見ることができるように答えられていません(またはしていない) – Stugal
あなたは ' 'connect'と' login'の間で 'スリープ'しようとしましたか?これは回避策でも同じ問題を抱えている可能性があります。 – home