は、私はWindowsでのJavaに基づくマルチサーバチャットシステムを書きました。セキュリティー部分では、SSLSocketを作成するためのキーストアを1つ作成しました。私は3台のサーバを起動すると、それは、Windows(Win10 14393.321)上で動作しますが、OS X(バージョン10.12(16A323))およびLinux(Ubuntuの14.04.4 LTS)に失敗しました。それは本当に私を混乱させた。ここでは、キーストアの一部です:Java SSLSocketを使用している場合、WindowsとLinux/OS Xの違いは何ですか?
System.setProperty("javax.net.ssl.keyStore",keyFilepath);
System.setProperty("javax.net.ssl.trustStore",keyFilepath);
System.setProperty("javax.net.ssl.keyStorePassword","password");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
そして私はOS XまたはLinux上の第三のサーバを実行すると、それは示しています
java.net.ConnectException:接続は、Javaで
を拒否しました。 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)でnet.PlainSocketImpl.socketConnect java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)での(ネイティブメソッド) で をjava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)で java.net.Socket.connect(Socket.java:589)at sun.security.ssl.SSLSocketImplでsun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)(SSLSocketImpl.java:427) sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.javaで: 88) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッドで server.AuthorizeServer.main(AuthorizeServer.java:64でserver.AuthorizeServer.MessageReceive(AuthorizeServer.java:99)))sun.reflect.NativeMethodAccessorImplで .invoke(NativeMethodAccessorImpl.java:62)java.lang.reflect.Method.invokeで でsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) (Method.java:497) org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.mainで(JarRsrcLoader.java:58)
これは私の初めてのStackOverflowの質問です。私はあなたの親切な助けを本当に楽しみにしています。 ありがとう!
私はあなたの質問にそれが成功すると、それが失敗したあなたがテストしているのWindows、OS XとLinuxのバージョンを、言っていいことだと思います。 – Tom
さて、ありがとう。私はそれを加えました。 – CrazyEric
違いは、IP:ポートが間違っているか、何もリッスンしていないために、失敗したケースがTCPレベルで接続に失敗していることです。キーストアもトラストストアもSSLSocketもJSSEもJavaも関係ありません。 – EJP