1

내 네트워크의 모든 x509 인증서를 발급하는 단일 CA가있는 PKI가 있습니다. 그래서 내 네트워크에서 모든 서버와 클라이언트는 개인 키와 함께 해당 키 저장소에 저장된 CA의 인증서를 가지고 있습니다. 각 서버와 클라이언트는 TLS 상호 인증이 진행 중일 때 피어 x509 인증서의 트러스트 체인을 확인하는 데 사용할 수있는 체인 파일에 CA 인증서를 가지고 있습니다. 괜찮아. 이제 네트워크에 서버 2 대와 클라이언트 2 대가 있다고 가정하고 Client_B와 Server_B가해야하는 것처럼 Client_A와 Server_A가 x509 인증서를 사용하여 TLS 상호 인증에 성공했는지 확인하려고합니다. 동시에 Client_A와 Server_B 간의 TLS 상호 인증이 성공하지 못하도록하고 싶습니다. (Client_B와 Server_A 사이에서도 유효합니다).TLS 상호 인증을 특정 TLS 인증서로 제한

내 네트워크의 서버와 클라이언트가 트러스트 체인을 검증 할뿐만 아니라 일종의 화이트리스트를 존중하도록하려면 어떻게해야합니까?

TLS 레이어에서 이것이 가능하지 않을 수도 있습니다. 그 점을 분명히하고 싶습니다.

답변

2

당신은 TLS 계층에서 클라이언트 인증서 확인이 approaches-

  1. 아래 중 하나를 사용하여이를 수행 할 수 있습니다 각 클라이언트 그룹에 대한 별도의 중간 발급 CA를 만듭니다. 예를 들어 Server_A의 모든 클라이언트에 대해 Ca_Client_A라는 CA를 만듭니다. 따라서 체인은 rootCA -> Ca_Client_A -> 클라이언트 인증서처럼 보일 것입니다. 이 Ca_Client_A를 서버 A의 신뢰 저장소에 가져옵니다. 이제 Server_A는 ca Ca_Client_A를 발행 한 클라이언트에 대한 연결을 허용합니다. 마찬가지로, 응용 프로그램 계층에서 클라이언트 인증서 확인 서버 B

  2. 하여 클라이언트 그룹 B를 제공하기위한 Ca_Client_B 중간 CA를 만들 수 있습니다이를 위해, 당신은 당신이 제약을 둘 필요가 어디에 응용 프로그램 서버에 인증 로직을 작성해야 성공적인 인증을 위해 허용 된 클라이언트 인증서 - 일련 번호 또는 키워드와 일치하는 CN 이름.

희망이 있습니다.

1

TLS 계층에서 이렇게하는 방법은 없습니다.

대부분의 TLS 라이브러리는 인증서 교환 중에 콜백 옵션을 제공하며 목록에서 인증서를 확인할 수있는 적절한 장소입니다. 라이브러리의 특정 버전의 실패/용납 불가를 반환하면 일반적으로 TLS 핸드 셰이크 실패가 발생하며 데이터가 전송되지 않습니다.

0

이 내용은 TLS 표준 자체가 아닌 사용중인 서버 소프트웨어에 따라 다릅니다. 일부 소프트웨어 패키지는 특정 CA 인증서에서 발급 한 인증서를 신뢰하도록 구성 할 수 있습니다. 시나리오에서 CA가 발급 한 모든 인증서를 CA 인증서를 신뢰하도록 구성된 모든 서버에 연결할 수 있습니다. 다른 서버 소프트웨어는 특정 인증서 또는 주어진 주체 (인증서의 고유 이름, subjectAltName 등)가있는 인증서를 신뢰하도록 구성 할 수 있습니다. 따라서 연결하려는 특정 "서버"에 따라 다릅니다. 이것은 Apache 웹 서버입니까? IIS? 수코양이? 응답은 우리가 말하는 서버 플랫폼에 따라 다릅니다.