2014-10-29 88 views
0

我試圖連接到一個公司的Web服務,它給了我4個以.cert格式的證書,我已經將這些證書放在密鑰庫中並建立了Https連接到我的客戶端代碼連接到需要證書的Web服務時出錯

System.setProperty("javax.net.ssl.trustStore",ERPGetProperty.erpGetProperty("pathToKeyStore")); 
    System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); 
    System.setProperty("javax.net.ssl.trustStoreType", "JKS"); 
    System.setProperty("javax.net.ssl.keyStore", ERPGetProperty.erpGetProperty("pathToKeyStore")); 
    System.setProperty("javax.net.ssl.keyStorePassword", "changeit"); 
    System.setProperty("javax.net.ssl.keyStoreType", "JKS"); 
    System.setProperty("https.protocols", "TLSv1.2"); 

    SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 

    URL url = new URL(address); 
    HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 

    con.setSSLSocketFactory(sslSocketFactory); 
    con.setRequestMethod("POST"); 
    con.setUseCaches(true); 
    con.setRequestProperty("Content-type", "text/xml"); 
    con.setRequestProperty("Content-Length", Integer.toString(xml.length())); 
    con.setRequestProperty("SOAPAction", address); 
    con.setDoOutput(true); 
    con.setDoInput(true); 

    userPass = username + ":" + password; 
    byte[] encodeBytes = Base64.encodeBase64(userPass.getBytes()); 
    String encode = new String(encodeBytes); 
    con.setRequestProperty("Authorization", "Basic " + encode); 

    out = con.getOutputStream(); 

    out.write(b); 

我總是得到這個異常

10:21:15,591 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) java.net.ConnectException: Operation timed out 

10:21:15,591 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at  java.net.PlainSocketImpl.socketConnect(Native Method) 
10:21:15,591 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
10:21:15,592 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
10:21:15,592 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
10:21:15,593 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
10:21:15,593 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at java.net.Socket.connect(Socket.java:579) 
10:21:15,593 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618) 
10:21:15,594 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160) 
10:21:15,594 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.NetworkClient.doConnect(NetworkClient.java:180) 
10:21:15,594 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) 
10:21:15,595 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) 
10:21:15,595 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275) 
10:21:15,595 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371) 
10:21:15,596 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) 
10:21:15,596 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932) 
10:21:15,596 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) 
10:21:15,597 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) 
10:21:15,597 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 
10:21:15,598 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at hot.com.mhd.erp.action.client.PushStatusClient.pushXML(PushStatusClient.java:492) 
10:21:15,598 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at main.com.mhd.erp.sched.StatusPushJob.execute(StatusPushJob.java:73) 
10:21:15,598 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 
10:21:15,599 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525) 

這是,這是一些我從調試模式下獲得拋出異常之前

10:21:00,034 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 
10:21:00,034 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA 
10:21:00,035 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 
10:21:00,035 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 
10:21:00,036 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 
10:21:00,036 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 
10:21:00,036 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 
10:21:00,036 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 
10:21:00,037 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 
10:21:00,037 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 
10:21:00,037 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 
10:21:00,037 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 
10:21:00,038 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 
10:21:00,038 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 
10:21:00,038 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA 
10:21:00,038 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 
10:21:00,039 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 
10:21:00,039 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 
10:21:00,039 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 
10:21:00,039 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unavailable cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA 
10:21:00,040 INFO [stdout] (DefaultQuartzScheduler_Worker-4) Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256 

請幫幫我!我沒時間解決這個問題了!謝謝!

回答

0
10:21:15,591 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) java.net.ConnectException: Operation timed out 
    10:21:15,591 ERROR [stderr] (DefaultQuartzScheduler_Worker-2) at java.net.PlainSocketImpl.socketConnect(Native Method) 

您在純套接字級別上已經有連接超時。請確保服務器處於打開狀態並打開來自外部的連接,並且您的應用和服務器之間沒有防火牆阻止訪問。嘗試與其他客戶端連接到服務器,以確保問題出在您的應用程序上。

+0

非常感謝您的回覆!那意味着這個異常與沒有正確設置的證書無關?它們都是.cer格式,我使用我的密鑰工具將它們導入到我創建的密鑰庫中,並將它的路徑指定爲系統屬性和密碼。公司表示他們的服務器已啓動並正在運行。也許那些關於密碼套件的錯誤是造成這個問題的原因。我正在使用Mac OS 10.10來執行此操作。我如何確保我和服務器之間沒有防火牆?很抱歉有很多問題,但我對此很新。再次感謝! – 2014-10-29 16:29:25

+0

與另一個客戶端進行覈對。如果它也失敗了,它就是防火牆或服務器本身。在這種情況下,請從其他位置檢查,儘可能靠近服務器。如果服務器只是爲你設置的,也可能是他們忘記在他們的網站上正確地測試它。 – 2014-10-29 17:05:16

相關問題