정책 충돌 방지 및 해결

Certificate Authority Service의 정책은 CA 풀의 발급 정책 또는 인증서 템플릿일 수 있습니다. 인증서 발급 정책은 CA 풀에 대한 대략적인 규칙을 설정하는 반면 인증서 템플릿은 다양한 인증서 유형에 관한 보다 구체적인 안내를 제공합니다. 정책 제어에 대한 자세한 내용은 정책 제어 정보를 참고하세요. 정책에는 두 가지 주요 부분이 있습니다.

  • 기준 값: 기준 값 (사전 정의된 값이라고도 함)은 특정 정책에 의해 발급된 모든 인증서에 필수 설정입니다. 예를 들어 '이 정책에 따라 발급된 모든 인증서에는 keyUsage 확장 프로그램에서 digitalSignature 플래그가 사용 설정되어야 합니다.'라는 정책이 있을 수 있습니다. 이렇게 하면 이 정책에 의해 발급된 모든 인증서를 디지털 서명에 사용할 수 있습니다.

  • 확장 프로그램 제약조건: 확장 프로그램 제약조건은 정책 자체 외부에서 인증서에 추가할 수 있는 확장 프로그램을 제한합니다. 예를 들어 정책에 '이 정책 외의 인증서에는 AIA-OCSP 확장만 추가할 수 있습니다.'라고 명시할 수 있습니다. 즉, 다른 정책을 통해 또는 인증서 요청에서 직접 다른 확장 프로그램 (예: 주체 대체 이름)을 추가하려고 하면 이러한 확장 프로그램은 무시됩니다.

인증서를 요청하면 CA 풀이 지정된 템플릿을 사용하여 인증서를 만듭니다. 그러나 CA 풀에 연결된 발급 정책도 자체 규칙에 따라 요청을 평가합니다. 인증서 템플릿의 설정이 CA 풀에 추가된 인증서 발급 정책의 설정과 충돌하는 경우 충돌이 발생합니다. 두 설정 모두 동일한 인증서에 규칙을 적용하려고 하기 때문입니다. 다음과 같은 시나리오가 있을 수 있습니다.

중복 확장 프로그램 정의

두 정책의 기준 값에 동일한 확장자가 정의된 경우 충돌이 발생합니다. 예를 들어 CA 풀의 발급 정책과 인증서 템플릿에 동일한 확장자 keyUsage를 정의하면 각 위치에서 확장자의 다른 부분을 지정해도 Certificate Authority Service에서 이를 충돌로 감지합니다.

예:

  • 발급 정책: keyUsage 확장 프로그램에 digitalSignature: true가 필요합니다.
  • 인증서 템플릿: keyUsage 확장자에 keyEncipherment: true가 필요합니다.

인증 기관 서비스는 전체 확장 프로그램을 단일 단위로 간주하고 확장 프로그램 내의 특정 값이 아닌 두 위치 모두에 확장 프로그램이 정의되어 있는지 확인하기 때문에 여전히 충돌로 간주됩니다.

충돌을 방지하려면 각 확장 프로그램을 CA 풀의 발급 정책 또는 인증서 템플릿 중 하나에서만 한 번 정의해야 합니다. 이렇게 하면 명확성을 유지하고 예상치 못한 인증서 발급 실패를 방지할 수 있습니다.

확장자 제약조건과 기준 값이 충돌함

정책 충돌은 한 정책의 확장자 제약 조건이 다른 정책의 기준 값과 충돌할 때 발생합니다. 다음과 같은 경우에 이 문제가 발생합니다.

  • 하나의 정책이 확장 프로그램을 제한하거나 금지합니다. 이는 모든 확장 프로그램을 일반적으로 제외하거나 문제의 확장 프로그램이 포함되지 않은 허용된 확장 프로그램의 특정 목록을 통해 이루어질 수 있습니다.
  • 다른 정책에 동일한 확장자가 필요합니다. 즉, 두 번째 정책에는 해당 확장자에 대해 정의된 기준 값이 있습니다.

예:

  • 발급 정책: keyUsage 확장 프로그램만 허용하는 확장 프로그램 제약 조건이 있습니다.
  • 인증서 템플릿: 기준 값에 certificatePolicies 확장자가 필요합니다.

발급 정책은 certificatePolicies 확장자를 효과적으로 금지하지만 인증서 템플릿은 이 확장자를 요구하므로 충돌이 발생합니다.

정책을 정의할 때는 기준 값과 확장자 제약조건이 함께 작동하도록 주의 깊게 고려하세요. 한 정책이 다른 정책에 필요한 확장 프로그램을 제한하는 상황을 피합니다. 이렇게 하면 충돌이 방지되고 인증서가 원활하게 발급됩니다.

Common Expression Language (CEL) 표현식 충돌

세분화된 제어를 위해 Common Expression Language (CEL)를 사용하는 경우 인증서 템플릿과 발급 정책의 표현식이 충돌하면 충돌이 발생할 수 있습니다. 이러한 충돌로 인해 CA 풀에서 인증서를 발급할 수 없습니다. 예를 들어 도메인 이름이 .example.com로 끝나야 하는 표현식과 .example.net로 끝나야 하는 표현식이 있을 수 있습니다. 이 두 CEL 표현식은 동일한 필드에 서로 다른 제한을 적용하기 때문에 모든 인증서 발급 요청이 실패합니다.

인증서 발급 정책과 인증서 템플릿을 모두 사용하는 경우 CEL 표현식이 충돌하지 않는지 확인하는 것이 좋습니다.

이러한 모든 시나리오에서 CA Service API는 잘못된 인수 오류를 반환합니다.

정책 충돌 해결

CA Service API에서 정책 충돌을 감지하면 API가 잘못된 인수 오류를 반환하고 인증서 요청이 실패합니다. 정책 충돌을 보고 해결하려면 다음 단계를 따르세요.

  1. 오류 메시지와 함께 표시되는 발급 정책 문제 해결 도구 링크를 클릭합니다. CA 풀의 발급 정책에 있는 기준 값 및 확장자 제약 조건을 인증서 템플릿의 기준 값 및 확장자 제약 조건과 비교할 수 있는 문제 해결 도구 페이지가 표시됩니다. 정책 충돌이 강조 표시됩니다.
  2. CA 풀 또는 인증서 템플릿에 액세스하여 충돌하는 값을 업데이트하고 충돌을 해결합니다.

충돌이 해결된 후 인증서 요청을 다시 제출합니다.

다음 단계