내부 서버 인증서, 외부 클라이언트 인증서 및 HTTPS 인증서에 별도의 루트 CA를 사용해야 합니까?

내부 서버 인증서, 외부 클라이언트 인증서 및 HTTPS 인증서에 별도의 루트 CA를 사용해야 합니까?

다음 상황에 대해 3개의 루트 CA, 1개의 루트 CA + 3개의 중간 CA 또는 기타 PKI 설정이 있어야 합니까?

세 가지 사용 사례가 있습니다.

  1. HTTPS(서버 인증서)를 통해 웹 API 노출
  2. 클라이언트가 사용자 이름/비밀번호 대신 클라이언트 인증서로 인증하도록 허용(외부 클라이언트 인증서)
  3. 내부 서버를 클라이언트로 확인(내부 클라이언트 인증서)

모든 키 쌍은 정확히 하나의 사용 사례에 사용됩니다.

제3자 CA가 필요하지 않고 대신 폐쇄형 시스템에서 사용자 지정 PKI를 사용하여 작업한다고 가정해 보겠습니다. 이를 지원하는 두 가지 주요 방법을 볼 수 있습니다.

  1. 3개의 중간 CA가 있는 1개의 루트 CA(각 사례마다 하나의 중간 CA)
  2. 루트 CA 3개(사용 사례당 루트 1개)

#1을 시작하려고 시도했지만 openssl s_clientnode.js HTTPS 서버에 대한 테스트 클라이언트 인증서를 가지려면 중급뿐만 아니라 루트까지 유효성을 검사해야 한다는 사실을 발견했습니다. 이는 루트가 트러스트 앵커이므로 사용 사례 2와 3 사이의 클라이언트 인증서가 교환될 수 있음을 의미합니다. 둘러봤지만 중간 CA를 node.js HTTPS 서버의 트러스트 앵커로 만드는 방법을 찾을 수 없습니다.

그래서 저는 뭔가 크게 오해하고 있습니다. 구현 # 2 또는 여러 가지를 혼합하여 이동해야 합니다.

답변1

X.509 인증서는 기밀성과 인증을 제공할 수 있습니다. 즉, 링크 암호화에 사용될 수 있으며 선택적으로 사용자나 서버를 인증하는 데에도 사용될 수 있습니다.

그들은 승인을 제공하지 않습니다. 대신 X.509 인증서로 인증된 엔터티가 리소스에 액세스할 수 있는지 여부를 판단하는 것은 애플리케이션에 달려 있습니다.

즉, 위의 (1)은 괜찮습니다. 하나의 루트를 사용하고 인증이 다른 수단으로 수행되는지 확인하십시오.

그러나 X.509 인증서도 인증을 제공해야 한다고 주장하는 경우 다음 중 하나를 수행해야 합니다.

  • 애플리케이션이 특정 인증서만 신뢰하는지 확인하려면 인증서 정책을 사용하세요. 정책을 확인하는 자체 애플리케이션을 코딩해야 할 수도 있으므로 행운을 빕니다.
  • 각 애플리케이션마다 다른 루트 인증서를 사용하십시오. 위의 (2)와 같습니다.

관련 정보