2017-04-10 1 views
1

Google의 문제를 설명하려고합니다.https에서 로컬 http 서버로 요청 보내기

우리는 하드 드라이브 또는 인쇄 문서에 직접 데이터 (문서, ...)를 저장하기위한 나머지 서버를 제공하는 작은 도구 (Java 1.8 및 Jetty + Jersey)를 코딩하고 있습니다.

로컬 컴퓨터 (로컬 호스트) 또는 로컬 네트워크의 다른 장치에서 도구를 시작/액세스 할 수 있습니다.

문제는 SSL로 암호화되지 않은 https 페이지에서 로컬 도구로 요청을 보낼 수 없다는 것입니다.

우리 도구에 대한 SSL 인증서가 필요합니다.

하지만 문제는 우리가 고객이 도구를 실행하려는 장치/ip 주소에 대해 알 수 없으며 도메인을 SSL 인증서에 바인딩해야한다는 것입니다.

우리는 ssl-certificate를 만들고이를 (예 : tool.domain.com과) 바인딩 할 수 있지만이 도구는 127.0.0.1 및 192.168.10.2 또는 유사 항목에서 실행할 수 있습니다.

제 궁금한 점은 (프로그래밍 방식으로)이 벽을 우회하는 방법이 있습니까?

하나의 "방법"은 로컬 호스트 파일에 항목을 추가하는 것이지만 우리는 고객을 위해 가능한 한 적은 노력을하고 루트가 아닌 모바일 장치에는 호스트 항목을 설정할 수 없습니다.

편집 : 일부 코드 스 니펫이 추가되었습니다.

 ServletContextHandler context = new ServletContextHandler(server, "/*"); 

     // vhosts 
//  context.setContextPath("/*"); 
     context.setVirtualHosts(new String[]{ 
      "127.0.0.1", 
      "192.168.6.195", 
      "localhost", 
      "tool.domain.com" 
     }); 

이 우리는 부두 서버에 가상 호스트를 추가합니다. Google 도메인 용 자체 서명 인증서 (테스트 용)가 있습니다. 테스트/시각화를위한 다음

enter image description here

일부 JS-코드 :

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'https://127.0.0.1:7331/test/echo/test1111'); 
xhr.setRequestHeader('Host', 'https://tool.domain.com'); 
xhr.send(); 

그러나 크롬 (내가 너무 다른 브라우저를 생각한다) 차단

우리는 이런 일을 보관할 호스트 헤더

+0

https 인 경우 https를 사용하는 것이 더 좋습니다. –

+0

Google 도구에 ssl 인증서를 추가하려고하지만 문제가 대상입니다. 대상은 각 IP 주소를 가질 수 있습니다. 문제를 설명하기가 어렵습니다. –

답변

1

자신의 회사와 자신의 회사 도메인 이름이있는 경우 이것이 가능합니다.

당신은 항상 127.0.0.1은 당신이 당신의 제품의 도메인 이름 self.dominice-so.com에 대한 유효한 인증서와 키 스토어/신뢰를 보내실 수 있습니다 반환 self.dominice-so.com처럼 뭔가에 대한 DNS 항목을 만든 경우 dominice-so.com

이 있다고 할 수 있습니다. 이 사악한 손에하지 않도록

브라우저는 키 스토어/트러스트 스토어 암호를 확보하기 위해 ... 같은 것을 사용하면 최대

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'https://self.dominice-so.com:7331/test/echo/test1111'); 
xhr.setRequestHeader('Host', 'https://tool.domain.com'); 
xhr.send(); 

그것을 잘 연결할 수 있어야합니다. (이 질문의 범위를 벗어났습니다.)

+1

답변 해 주셔서 감사합니다. 하지만 그게 문제입니다. 127.0.0.1을 원할뿐만 아니라 다른 ip 주소도 192.168.2.50과 같이 네트워크 -PC (서버 시스템과 같은) 인 경우를 원합니다. 우리는 고객을 위해 최대한 노력을 기울여야합니다. 하나의 방법은 와일드 카드 인증서를 만들고 각 고객에게 필요한 IP 주소를 사용하여 하위 도메인을 만드는 것입니다. 그러나 이것은 우리에게 많은 노력입니다. –

+0

그런 경우 해당 환경에 알려진 CA (각 회사마다 다른 CA 규칙이있을 수 있음)를 기반으로 인 - 환경 인증서를 생성해야합니다. –

+0

이제이 방법을 구현하고 있습니다. 나는 그것이 최선의 방법이라고 생각한다. 다시 한 번 감사드립니다. –