2012-06-30 3 views
1

호스트 이름을 입력으로 사용하여 해당 호스트의 인증서를 추출하는 함수에서 다음 코드를 받았습니다. 원격 호스트의 IP 주소를 표시해야합니다. ".getInetAdress()"를 사용하여 원격 호스트의 IP를 반환했습니다 : http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#getInetAddress(). 나는이 프로그램을 실행하면.getInetAddress()의 반환 값이 실제 IP가 아닙니다.

SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); 

System.out.println("Starting SSL Socket For "+hostname+" port "+port); 
SSLSocket socket = (SSLSocket) factory.createSocket(hostname, port); 

//To get the IP for the remote host. Format: (domain name/IP), 
//then manually covert it to string 

String remoteIP=socket.getInetAddress().toString(); 
System.out.println("Remote address = " + remoteIP); 

socket.startHandshake();  
Certificate[] serverCerts = socket.getSession().getPeerCertificates(); 

, 예를 들어, 호스트는 "www.tesco.com"은 ".getInetAddress()." 이 IP를 나에게 돌려 보낸다 : 88.221.94.232. 브라우저에이 IP를 입력하려고하면 URL에 'https : //'를 추가 한 후에도 '잘못된 URL'이 표시됩니다. 반면, "tesco.com"에 ping을 시도하면 다른 IP 주소 인 "212.140.185.177"이 표시되고 브라우저에 입력하면 tesco의 웹 페이지가 열립니다.

내가 뭘 잘못 알고 있니? 소켓을 사용하지 않고 gethostAddress & getHostAddress() 이외의 다른 방법으로 원격 호스트의 IP 주소를 가져 오는 중입니까?

답변

7

올바른 IP 주소를 얻고 있습니다.

예를 들어 프로그램을 실행할 때 호스트는 "www.tesco.com", ".getInetAddress()"입니다. 이 IP를 나에게 돌려 보낸다 : 88.221.94.232.

오른쪽. 이것이 바로 www.tesco.com에 대한 IP 주소입니다.

이 IP를 브라우저에 입력하면 "잘못된 URL"이 표시됩니다.

해당 서버 (Akamai 가속기)에는 원하는 웹 사이트가 없기 때문에 tesco.comwww.tesco.com와 동일하지 않기 때문에, "212.140.185.177"

오른쪽 : 나는 "tesco.com을"핑 (ping)을 시도하는 경우

동안, 나는 다른 IP를 얻을.

브라우저에 입력하면 테스코의 웹 페이지가 열립니다.

해당 웹 서버가 단지 많은 웹 사이트를 처리 www.tesco.com을 처리하는 서버와는 달리, tesco.com을 처리하기 때문에 당신이 원하는 어떤 웹 사이트 알지 못했다 때문에.

자세히 보면 브라우저가 tesco.com 일 때 www.tesco.com으로 리디렉션됩니다. 그들은 Akamai를 사용합니다.

+0

그래서 저는 여러분에게 맞았는지 확인하기 위해 "88.221.94.232"는 tesco뿐만 아니라 많은 사이트를 호스트하는 호스팅 서버입니다. SSL을 지원하는 서버 (tesco 및 amazon 등의 트랜잭션 중에 보안 통신을 보장하는 인증서를 사용자에게 제공하는 서버)의 인증서를 추출하려는 경우 이는 내 생각에 또 다른 질문입니다. 자세한 내용은 내 코드를 참조하십시오. "www.tesco.com"이 아닌 "tesco.com"? –

+0

또한 가능한 경우 plz, 내 tesco 예제뿐만 아니라 일반적인 대답이 필요합니다. 인증서를 추출하려면 어떤 호스트 이름을 사용해야합니까? www가 맞습니까? 또는없이? –

+0

예, 호스팅 서버입니다 (실제로는 여러 가지면에서 Akamai입니다. 전세계에 서버가 있습니다.). 웹 사이트 "tesco.com"에 대한 인증서를 원하면'tesco.com '을 사용하십시오.웹 사이트 "www.tesco.com"에 대한 인증서를 원하면 'www.tesco.com'을 사용하십시오. 웹 사이트는 인증서가있는 것입니다. 원하는 인증서가있는 사이트를 사용하십시오. –

관련 문제