[英]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.