문제

Java 웹 앱이 HTTP 요청을 통해 컴퓨터에 설치된 보안 인증서에 대한 정보를 얻고 특정 Certifiate가 시스템에 설치된 경우 선택적으로 액세스를 부여 할 수있는 방법이 있습니까?

기본적으로 요구 사항은 웹 애플리케이션이 회사 랩탑에서만 요청을 받아야한다는 것입니다. 그렇지 않으면 적절한 오류 텍스트로 액세스를 거부해야합니다.

(이들은 시스템에 설치된 특정 인증서가있는 랩탑이 될 수 있거나 특정 정적 IP 세트에서 나올 수 있습니다.)

도움이 되었습니까?

해결책

예, HTTPS 클라이언트 인증서를 사용하여 가능합니다. 정확한 설정 및 구성은 응용 프로그램 서버 및 특정 요구 사항에 따라 다르지만 특정 시나리오는 특정 클라이언트 IP 주소로 제한 될 수있는 클라이언트 인증서를 발행하고 응용 프로그램 서버의 구성을 구성 할 수있는 회사 내부 CA (Certification Authority)를 작성하는 것이 좋습니다. HTTPS 커넥터는 클라이언트 인증서를 요구하고 귀하의 CA에서 발행 한 인증서를 신뢰합니다.

올바른 구성이 완료된 후 클라이언트 인증서는 서블릿 요청 속성을 통해 웹 응용 프로그램에 제공됩니다.

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

다른 팁

Jambjo가 말했듯이 - 자신이 설명한대로 클라이언트 인증을 통해 HTTPS를 통해 클라이언트 인증서를 절대적으로 얻을 수 있습니다. 정적 IP보다 인증서를 스푸핑하기가 더 어렵고 향후 네트워크를 다르게 재구성 해야하는 경우 더 많은 유연성을 허용하는 것이 좋습니다.

다른 몇 가지 생각 :

  • 거의 모든 애플리케이션 서버를 사용하면 신뢰할 수있는 인증서 저장소를 설정할 수 있습니다. Application은 HTTPS Client Auth에 대한 CA 인증서 목록입니다. 이를 내부 회사 CA 또는 인증서 제공 업체 인 클라이언트 인증서를 제공하는 CA로 제한하십시오.
  • 내부 CA 또는 CA 제공 업체의 선택은 회사입니다. 내부 CA는 인력을 설정하고 유지 관리하기 위해 인력이 필요합니다. CA 제공 업체는 인증서 당 비용이 소요됩니다. 인증서를 직접 만드는 것이 저렴한 트레이드 오프 지점에 도달하지만, 그 시점에 도달 할 때까지 CA 제공 업체는 더 저렴할 수 있습니다.
  • 내부 CA가 있고 규칙이 "모든 회사 시스템 (인증서 포함) 이이 애플리케이션에 액세스 할 수있는 경우"라는 규칙이 있으면 Application Server의 신뢰할 수있는 CA 목록에서 작업이 수행됩니다. 회사 CA가 회사의 사람들 외에는 누구에게나 사용됩니다.
  • CA 제공 업체가있는 경우 액세스 컨트롤을 추가로 제한하고 제공된 코드를 사용하여 인증서를 얻고 정보 내부의 정보를 살펴 봐야 할 수도 있습니다. 일반적으로 주제 DN (Distinguished Name) 내에 조직 (O) 및 조직 단위 (OU) 구성 요소가 있어이 인증서를 생성 한 조직이 어떤 조직에서 생성했는지 알려줍니다. 회사 컴퓨터가 있는지 확인할 수 있어야합니다.
  • CA 제공 업체가 회사의 O 및 OU 이름을 회사의 구성원 외에는 회사의 O 및 OU 이름을 전혀 제공하지 않을 경우 O 및 OU 점검을 수행하는 것이 가능합니다. 그렇지 않은 경우 사용자 나 사용자의 컴퓨터가 귀하에게 알려져 있는지 확인하려면 백엔드 데이터 저장소 (LDAP 디렉토리와 같은)에 대해 확인해야 할 수도 있습니다.
  • 기계의 IP 주소를 인증서에 링크 할 수도 있습니다. 종종 인증서를 구성 할 때 주제 (주제 대체 이름)가 사용됩니다. 기계의 IP 주소를 변경하면 새 인증서가 필요하기 때문에 권장하지 않습니다. 당신의 목적을 위해 불필요하게 복잡해 보입니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top