2013-11-21 4 views
0

Я пытаюсь перенаправить сервер (написанный в java) на HTTPS-url (URL-адрес никогда не изменится) при доступе. Если я скомпилировать код сJava HTTPS Proxy/Redirect Server

java -Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=password ProxyServer 

и введите в адрес, порт и локальный_порт в

https://google.com 443 5000 

И попытайтесь получить доступ к

localhost:5000 

на моей машине, я получаю ошибку

java.net.UnknownHostException: https://google.com 

После отладки ging, я уверен, что он разбивается в этом блоке кода, когда я пытаюсь создать SSLSocket (secureServer).

SSLSocket secureServer; 
    try { 
     SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
     secureServer = (SSLSocket) factory.createSocket(host, port); 
     from_server = secureServer.getInputStream(); 
     to_server = secureServer.getOutputStream(); 
    } 

ответ

1

Аргумент вы передаете в качестве хоста factory.createSocket(host,port) не должен иметь протокол предваряется к нему. Это должно быть просто google.com.

Причина в том, что Java собирается принять этот параметр host и передать его в качестве входа в поиск DNS. Если вы введете host https://google.com в командной строке, вы получите аналогичный сбой.

+0

Спасибо! которые позволяют подключать сокет и потоки, но по какой-то причине он не отображает веб-сайт и не запускает загрузку пустого файла ... время для дополнительной отладки. – sko

+0

@sko Рад это слышать! Если мой ответ помог вам, подумайте о том, чтобы принять его ... это помогает мотивировать людей к тому, чтобы они отвечали на вопросы. :) – stevevls

+0

больше: не используйте IP-адрес. см. java bug: https://bugs.openjdk.java.net/browse/JDK-8133196 –