2009-12-22 3 views
0

java 웹 응용 프로그램이 http 요청을 통해 컴퓨터에 설치된 보안 인증서에 대한 정보를 얻고 특정 인증서가 컴퓨터에 설치된 경우 선택적으로 액세스 권한을 부여 할 수있는 방법이 있습니까?인증서 및 IP 기반 인증

기본적으로 웹 응용 프로그램은 회사의 랩톱에서만 요청을 받아 들여야하며, 적절한 오류 텍스트로 액세스를 거부해야합니다.

가 (이 자신의 컴퓨터에 설치된 특정 certifcates와 노트북을 이길 수 또는 그들이 고정 IP의 특정 세트에서 될 수 있습니다.)

답변

2

예,이 HTTPS 클라이언트 인증서를 사용하여 가능하다. 정확한 설치 및 구성은 응용 프로그램 서버 및 특정 요구 사항에 따라 다르지만 일반적으로 특정 클라이언트 IP 주소로 제한 될 수있는 클라이언트 인증서를 발급하고 응용 프로그램 서버를 구성하기 위해 회사 내부 CA (인증 기관)를 만드는 것이 일반적입니다 HTTPS 커넥터를 사용하여 클라이언트 인증서를 요구하고 자신의 CA에서 발급 한 인증서를 신뢰합니다. 적절한 구성이 완료되면

는 클라이언트 인증서 (들)/서블릿 요청 속성을 통해 웹 응용 프로그램에 사용할 수 있습니다입니다 : jambjo 말했듯이

X509Certificate[] certificates = (X509Certificate[]) 
    request.getAttribute("javax.servlet.request.X509Certificate"); 
0

- 당신이 절대적으로 클라이언트 인증서를 얻을 수 있습니다 클라이언트 인증과 함께 HTTPS를 설명합니다. 정적 인 IP보다 인증서가 스푸핑하기가 더 어렵고 장래에 다르게 네트워크를 재구성해야하는 경우 더 유연하게 사용할 것을 권장합니다.

몇 가지 다른 생각 :

  • 는 거의 모든 응용 프로그램 서버가 신뢰할 수있는 인증서 저장소 설정하게됩니다 - 응용 프로그램이 HTTPS 클라이언트 인증을 위해 받아 들일 것이다 CA 인증서 목록을. 이 인증서를 내부 회사 CA 또는 인증서 공급자 중 하나 인 클라이언트 인증서를 제공하는 CA로 제한하십시오.
  • 내부 CA 또는 CA 공급자의 선택은 회사의 선택입니다. 내부 CA는 설치 및 유지 보수에 인력이 필요하며 CA 제공 업체는 인증서 당 비용을 부담해야합니다. 인증서를 직접 만드는 것이 더 경제적 인 절충점에 도달하지만, 그 시점에 도달 할 때까지 CA 공급자는 더 저렴할 수 있습니다.
  • 내부 CA가 있으며 "모든 회사 시스템 (인증서가있는)이이 응용 프로그램에 액세스 할 수 있습니다"라는 규칙이있는 경우 회사 CA를 알고 있기 때문에 응용 프로그램 서버의 신뢰할 수있는 CA 목록에서 작업이 수행됩니다 회사의 사람들 외에는 아무에게도 사용되지 않습니다.
  • CA 공급자가있는 경우 액세스 제어를 더 제한하고 제공된 jambjo 코드를 사용하여 인증서를 얻고 그 안의 정보를 볼 필요가있을 수 있습니다. 일반적으로 주체 DN (고유 이름)에는 조직에서이 인증서를 생성 한 조직을 알려주는 조직 (O) 및 조직 구성 단위 (OU) 구성 요소가 있습니다. 회사 컴퓨터를 가지고 있는지 확인해야합니다.
  • CA 공급자가 귀사의 O 및 OU 이름을 회사 구성원이 아닌 다른 사람에게 알려주지 않는다는 것을 알고 있으면 O 및 OU 확인을 수행하는 것이 좋습니다. 그렇지 않은 경우 LDAP 디렉토리와 같은 백엔드 데이터 저장소를 검사하여 사용자 또는 사용자의 시스템이 사용자에게 알려 졌는지 확인해야 할 수 있습니다.
  • 기계의 IP 주소를 인증서에 연결할 수도 있습니다. 종종 인증서를 작성할 때 SubjectAltName (주체 대체 이름)을 사용합니다. 컴퓨터의 IP 주소를 변경하는 경우 새로운 인증서가 필요할 것이므로 권장하지 않습니다. 그것은 당신의 목적을 위해 불필요하게 복잡하게 보인다.
+0

감사합니다. lakshmi. 당신이 말한 바에 따라, 나는 나의 지역에서 이것을위한 poc를 만들고 싶다. 나는 바람둥이와 글래스 피쉬 (넷빈과 함께)를 가지고있다. 이제는 이것에 대해 더 많은 정보가 필요합니다! a) 테스트 목적으로 인증서를 만들려면 어떻게해야합니까? b) 내 개인 랩톱에 설치하는 방법. c) 위에서 언급 한 서버가 HTTPS를 지원하지 않는다고 생각합니다. 따라서 알려진 오픈 소스 솔루션이 있습니까? d) 또한, 서버에 인증서를 추가하는 방법을 찾아야 만 결국이 poc가 종료됩니다. (나중에이 질문을 남겨 둘 것입니다.) – frappuccino

+0

... a) OpenSSL은 자체 서명 된 인증서를 만들 수있는 도구입니다. 테스트 CA를 만들 수도 있습니다. b) 키쌍으로 인증서를 생성하고자 할 것입니다. Open SLL이 PKCS12 형식을 허용한다는 것을 알고 있습니다. 거기에서 대부분의 브라우저에는 인증서 업로드 프로세스가 있습니다. c) tomcat은 절대적으로 HTTPS를 사용합니다. http://tomcat.apache.org/tomcat-4.0-doc/ssl-howto.html. 글래스 피쉬가하지 않으면 놀랄 것입니다. 서버를 시작할 때 "클라이언트 인증"을 설정해야합니다. d) 서버에는 CA 인증서가 필요하지만 최종 엔터티는 필요하지 않습니다. 일반적으로 설정 및 작동을 잊어 버립니다. – bethlakshmi