2013-12-23 11 views
16

https webserviceとその動作は正常ですが、今は次のエラーを通知しています。javax.net.ssl.SSLException:SSLハンドシェイクが中断されました。webserviceを呼び出す際にピアによって接続がリセットされました。

ログエラー:

12-23 06:28:11.969: W/System.err(3014): javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x1cc160: I/O error during system call, Connection reset by peer 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:750) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:692) 
12-23 06:28:11.979: W/System.err(3014):  at crittercism.android.aa.getInputStream(Unknown Source) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:93) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129) 
12-23 06:28:11.979: W/System.err(3014):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:171) 
12-23 06:28:11.989: W/System.err(3014):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
12-23 06:28:11.989: W/System.err(3014):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
12-23 06:28:11.989: W/System.err(3014):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359) 
12-23 06:28:11.989: W/System.err(3014):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
12-23 06:28:11.989: W/System.err(3014):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
12-23 06:28:11.989: W/System.err(3014):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 

私がhttpsのWebサービスを呼び出すための次のコードを使用しています。

public static void trustAllHosts() { 

     X509TrustManager easyTrustManager = new X509TrustManager() { 

      public void checkClientTrusted(X509Certificate[] chain, 
        String authType) throws CertificateException { 
       // Oh, I am easy! 
      } 

      public void checkServerTrusted(X509Certificate[] chain, 
        String authType) throws CertificateException { 
       // Oh, I am easy! 
      } 

      public X509Certificate[] getAcceptedIssuers() { 
       return null; 
      } 

     }; 

     // Create a trust manager that does not validate certificate chains 
     TrustManager[] trustAllCerts = new TrustManager[] { easyTrustManager }; 

     // Install the all-trusting trust manager 
     try { 
      SSLContext sc = SSLContext.getInstance("TLS"); 

      sc.init(null, trustAllCerts, new java.security.SecureRandom()); 

      HttpsURLConnection 
        .setDefaultSSLSocketFactory(sc.getSocketFactory()); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static HttpClient getNewHttpClient() { 
     try { 
      KeyStore trustStore = KeyStore.getInstance(KeyStore 
        .getDefaultType()); 
      trustStore.load(null, null); 

      SSLSocketFactory sf = new MySSLSocketFactory(trustStore); 
      sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 

      HttpParams params = new BasicHttpParams(); 
      HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
      HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); 

      SchemeRegistry registry = new SchemeRegistry(); 
      registry.register(new Scheme("http", PlainSocketFactory 
        .getSocketFactory(), 80)); 
      registry.register(new Scheme("https", sf, 443)); 

      ClientConnectionManager ccm = new ThreadSafeClientConnManager(
        params, registry); 

      return new DefaultHttpClient(ccm, params); 
     } catch (Exception e) { 
      return new DefaultHttpClient(); 
     } 
    } 

MySSLSocketFactory.java

public class MySSLSocketFactory extends SSLSocketFactory { 
    SSLContext sslContext = SSLContext.getInstance("TLS"); 

    public MySSLSocketFactory(KeyStore truststore) 
      throws NoSuchAlgorithmException, KeyManagementException, 
      KeyStoreException, UnrecoverableKeyException { 
     super(truststore); 

     TrustManager tm = new X509TrustManager() { 
      public void checkClientTrusted(X509Certificate[] chain, 
        String authType) throws CertificateException { 
      } 

      public void checkServerTrusted(X509Certificate[] chain, 
        String authType) throws CertificateException { 
      } 

      public X509Certificate[] getAcceptedIssuers() { 
       return null; 
      } 
     }; 

     sslContext.init(null, new TrustManager[] { tm }, null); 
    } 

    @Override 
    public Socket createSocket(Socket socket, String host, int port, 
      boolean autoClose) throws IOException, UnknownHostException { 
     return sslContext.getSocketFactory().createSocket(socket, host, port, 
       autoClose); 
    } 

    @Override 
    public Socket createSocket() throws IOException { 
     return sslContext.getSocketFactory().createSocket(); 
    } 
} 

それは前に正常に動作しているが、今では失敗します。サーバーに何も変更はありません。

私はすでに、私は無線LANとモバイルデータの両方でそれをテストしている

  1. Android-Query - Random SSLExceptions
  2. Intermittent Connection Reset by Peer errors in Android connecting to .NET REST endpoint
  3. Android HTTPS exception Connection reset by peer
  4. Why is HttpUrlConnection throwing an SSLException while on a mobile data connection?

を参照さ。アプリケーションは両方で動作しません。

誰かがこの問題に直面した場合は、それを解決するのを手伝ってください。

+0

@Tamilan私はすでにこのリンクを通過しています。私はすでに私の質問でそれを言及します。 – DreamsNeverDie

+0

解決策はありましたか?はいの場合はそれは何ですか? – Abhinav

+0

詳しい説明と解決方法については、こちらを参照してください。http://stackoverflow.com/questions/30538640/javax-net-ssl-sslex-ssl-0x9524b800-io-error-during-system?lq=1 –

答えて

3

理由は2つあります。

クライアントまたはサーバー側で証明書が期限切れになる可能性があります。

解決方法: 既存の証明書またはExhangeの新しい証明書の有効期限を延長します。

サーバーポートが他のポートにリセットされました。

解決方法: 私はこのポート変更の問題に直面しています。これは通常、サーバーのメンテナンスやパッチの更新によって発生します。サービスのポートが変更されることがあります。 wsdlを提供した人に、自分のサーバー上でwsdlを再生成して、クライアント側の既存のwsdlと一致するかどうかをポート番号で確認します。おそらくこれがここに当てはまるでしょう。

+0

こんにちは、どうもありがとうございました。これで何らかの理由がある場合は、iPhoneでも失敗しますか?実際には、iPhoneアプリでは、完全に動作します。 – DreamsNeverDie

+0

OK Sir、iphoneアプリから同じサービス(エンドポイントURL)を呼び出している場合は、2番目の理由がなくなり、サービスが正常に動作していることを意味します。しかし、各クライアントは、サーバー証明書をインポートするか、または自己署名証明書を使用してそのURLを個別に信頼する必要があります。 – kingAm

+0

Okey。だから問題は: "サーバーのポートは、他のポートにリセットされました"?もう少しお手伝いできますか、それを解決する方法は何ですか? – DreamsNeverDie

26

私も同じ例外があります。私はそれがTLS 1.0プロトコルがサーバーによってサポートされていないことが原因であることがわかりました。

私は、Androidデバイス、http接続がTLS 1.0がサポートされていないサーバーに接続できないことに気付いた。バグについてどこで調べたが、この問題に関連するものは何も見つかりませんでした。また、TLS 1.0 protocolサポートがサーバーに追加されたときに問題は解決しました。https://www.ssllabs.com/ssltestを使用してサーバー/ホスト名プロトコルのサポートを確認できます。

+7

私はいくつかのデバイスでこの例外をいくつか取得していますが、ほとんどのデバイスでは正常に動作しています。私はアンドロイド携帯電話でSim Dataを使用しています。 –

+0

TLS 1.0は推奨されておらず、安全でないとみなされ、TLS1.0を有効にするとPCI準拠に失敗するため、TLS 1.0をもう使用しないでください。 https://www.comodo.com/e-commerce/ssl-certificates/tls-1-deprecation.php –

2

今朝から同じ問題が発生し、解決しました。IIS 8

  1. SSLは、すべてのものは、昨日罰金働いていたし、最後の夜は、当社のSSLは、IISのサイトで更新されました。

  2. SSLへのサイトのバインディングをチェックしているうちに、IIS8に「サーバー名の表示が必要です」という新しいチェックボックスが表示されていたことが確認されました。
  3. 問題が発生しました。
  4. IISに戻って、チェックボックスを無効にしました....問題が解決しました!
0

一部のAndroid搭載端末で同じ問題が発生していました。 IISサーバー設定で解決策を見つけました。

ステップ:

  1. オープンIIS
  2. あなたは
  3. チェックを外して、必要なサーバー名の識別を結合
  4. 編集サイトを作業しているサイトを選択
  5. [OK]をクリックします

リファレンススクリーンショット:

enter image description here

希望これはあなたを助けます。

関連する問題