簡體   English   中英

Java:javax.net.ssl.SSLHandshakeException

[英]Java : javax.net.ssl.SSLHandshakeException

給出以下代碼:

    public void start(String a_sAddress, int a_nPort) throws IOException {

    try {
        // Create a trust manager that does not validate certificate chains
        final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {

            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] chain,  String authType) {
                // TODO Auto-generated method stub

            }

            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
                // TODO Auto-generated method stub

            }
        } };

        // Install the all-trusting trust manager
        final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
        sslContext.init( null, trustAllCerts, new java.security.SecureRandom() );

    //  Init a configuration with our SSL context
        HttpsConfigurator configurator = new HttpsConfigurator(sslContext);

       HttpsServer server = HttpsServer.create(new InetSocketAddress(a_sAddress, a_nPort), 0);

       server.setHttpsConfigurator(configurator);

       //here - attaching HttpHanlder code.

       server.setExecutor(null); // creates a default executor
       server.start();
    }
    catch (KeyManagementException e) {
        System.out.println("HttpsRequest - setTLSMode - KeyManagementException");
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        System.out.println("HttpsRequest - setTLSMode - NoSuchAlgorithmException");
        e.printStackTrace();
    }
}

我試圖忽略證書驗證,因為我只是一個測試模擬器。

問題是我的客戶端收到“ javax.net.ssl.SSLHandshakeException:握手期間遠程主機關閉連接”

我必須在這里處理證書嗎? 還是我嘗試忽略證書驗證失敗?

謝謝。


更新:好吧,和一些朋友交談,他們建議我應該創建一個自簽名證書,用它注冊我的服務器,然后將其發送給我的客戶端,以便在向我發送請求時使用。

我的服務器在Solaris 10上運行。我試圖查看“最常見的Java Keytool密鑰庫命令”,但找不到適合我需要的特定命令。 你能幫忙嗎? 謝謝

你需要

keytool -genkey ...

生成一個密鑰對,然后

keytool -selfcert ...

生成使用相同別名的自簽名證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM