Компания сообщает, что мои IP-адреса занесены в белый список, а их сервер запущен и работает, но я продолжаю получать это исключение:
Код: Выделить всё
17:18:00,255 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) java.net.SocketTimeoutException: connect timed out
17:18:00,255 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.PlainSocketImpl.socketConnect(Native Method)
17:18:00,256 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
17:18:00,256 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
17:18:00,257 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
17:18:00,257 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
17:18:00,258 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.Socket.connect(Socket.java:579)
17:18:00,258 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618)
17:18:00,258 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
17:18:00,259 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
17:18:00,259 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
17:18:00,259 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:275)
17:18:00,260 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371)
17:18:00,260 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
17:18:00,260 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
17:18:00,261 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
17:18:00,261 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
17:18:00,261 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
17:18:00,262 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:
Код: Выделить всё
//Start connection
URL url = new URL(address);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
//Set HTTP header properties
con.setConnectTimeout(60000);
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);
//Set up HTTPS
HttpsURLConnection httpsConnection = (HttpsURLConnection) con;
try {
SSLContext context = SSLContext.getInstance("TLS");
KeyManagerFactory kmFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore kStore = KeyStore.getInstance("JKS");
FileInputStream fis = new FileInputStream(new File(ERPGetProperty.erpGetProperty("pathToKeyStore")));
TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
try {
kStore.load(fis, keyStorePass);
kmFactory.init(kStore, keyStorePass);
tmFactory.init(kStore);
context.init(kmFactory.getKeyManagers(), tmFactory.getTrustManagers(), new SecureRandom());
httpsConnection.setSSLSocketFactory(context.getSocketFactory());
httpsConnection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
} catch(Exception e) {
e.printStackTrace();
} finally {
fis.close();
}
} catch(Exception e) {
e.printStackTrace();
}
out = httpsConnection.getOutputStream();
ОБНОВЛЕНИЕ: я использовал клиент openssl для тестирования хоста
Код: Выделить всё
openssl s_client -connect :port (where ip is the IP address of the host im trying to reach)
connect: время ожидания операции истекло
connect: errno =60
Однако, используя IP-адрес их среды тестирования, я могу общаться с ними, и openssl может отображать их цепочку сертификатов, поэтому соединение установлено успешно. Кажется, у меня проблемы с рабочим IP-адресом.
UPDATE_2: использовал nmap с флагом -P0 для проверки портов 80 и 443 хост-сервера. и оба они кажутся отфильтрованными. Означает ли это, что мой IP-адрес не был успешно внесен в белый список?
Подробнее здесь: https://stackoverflow.com/questions/266 ... able-to-in