사전 정의된 인증서 템플릿

Certificate Authority Service는 인증서 발급 프로세스를 간소화하고 보호하는 데 도움이 되는 사전 정의된 인증서 템플릿을 제공합니다. 일반적인 사용 사례를 위해 사전 구성된 X.509 매개변수 집합을 제공함으로써 이러한 즉시 사용 가능한 템플릿은 인증서 관리를 간소화하고, 인적 오류의 위험을 줄이며, 보안 권장사항을 적용합니다. 각 템플릿은 특정 사용 사례를 위해 설계되어 인증서가 의도된 목적에 맞는 올바른 매개변수로 발급되는 동시에 발급 인증 기관 (CA)에서 설정한 제한사항을 준수하도록 합니다.

이 문서는 프로젝트 내에서 인증서 수명 주기를 관리하는 애플리케이션 개발자 또는 데이터 과학자와 같은 애플리케이션 운영자 그룹 내의 사용자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서의 대상 그룹을 참고하세요.

인증서 템플릿 적용

템플릿을 적용하려면 CertificateRequest 리소스의 certificateTemplate 필드에 템플릿의 이름을 지정합니다. CA 서비스는 선택한 템플릿의 매개변수를 발급된 인증서에 적용합니다.

CertificateRequest 리소스를 구성하고 certificateTemplate 필드를 포함하는 방법에 대한 자세한 안내는 인증서 요청을 참고하세요.

인증서 템플릿 유형

다음과 같은 사전 정의된 인증서 템플릿을 사용할 수 있습니다. 각 템플릿은 특정 사용 사례를 위해 설계되었으며 템플릿에서 적용하는 X.509 매개변수를 사전 구성합니다.

아래 템플릿 설명에서 템플릿에 의해 명시적으로 설정되지 않은 매개변수는 인증서 서명 요청 (CSR)에 제공되거나 사용자가 정의한 필드에 제공되는지 여부에 관계없이 CertificateRequest 리소스에서 가져옵니다.

기본값

템플릿 이름: default

CertificateRequest 리소스에서 인증서 템플릿을 지정하지 않으면 이 템플릿이 자동으로 사용됩니다. 발급된 인증서는 발급 CA의 프로필에서 Key usage 및 Extended key usage 설정을 상속하고 Basic constraints를 CA:FALSE로 설정하여 인증서가 다른 인증서에 서명하는 데 사용되지 않도록 합니다.

X509 매개변수 값
RawSubject [사용자 정의 SubjectOverride 또는 CSR에서 전달]
기본 제약 조건 CA:FALSE
소유자 대체 이름 [CSR에서 전달]
키 사용 [CA에 설정된 키 사용]
확장된 키 사용 [CA에 설정된 확장 키 사용]

클라이언트 TLS 인증서

템플릿 이름: endEntityClientAuthCertificate

이 템플릿은 클라이언트 측 TLS 인증을 위한 종단 개체 인증서를 발급합니다. 발급된 인증서는 Extended key usage를 TLS web client authentication으로, Basic constraints를 CA:FALSE로 설정하여 인증서가 다른 인증서에 서명하는 데 사용되지 않도록 합니다.

X509 매개변수 값
RawSubject [사용자 정의 SubjectOverride 또는 CSR에서 전달]
기본 제약 조건 CA:FALSE
소유자 대체 이름 [CSR에서 전달]
키 사용 중요, 디지털 서명, 키 암호화
확장된 키 사용 TLS 웹 클라이언트 인증

서버 TLS 인증서

템플릿 이름: endEntityServerAuthCertificate

이 템플릿은 웹 서버와 함께 사용하기에 적합한 서버 측 TLS 인증을 위한 종단 개체 인증서를 발급합니다. 발급된 인증서는 Extended key usage를 TLS web server authentication으로, Basic constraints를 CA:FALSE로 설정하여 인증서가 다른 인증서에 서명하는 데 사용되지 않도록 합니다.

X509 매개변수 값
RawSubject [사용자 정의 SubjectOverride 또는 CSR에서 전달]
기본 제약 조건 CA:FALSE
소유자 대체 이름 [CSR에서 전달]
키 사용 중요, 디지털 서명, 키 암호화
확장된 키 사용 TLS 웹 서버 인증

하위 CA 인증서 (PathLen 0)

템플릿 이름: blankSubCACertificate_PathLen0_CSRPassthrough

이 템플릿은 경로 길이 제약 조건이 0인 하위 CA 인증서를 발급합니다. 이를 통해 인증서는 종단 개체 인증서에 서명할 수 있지만 다른 CA 인증서에는 서명할 수 없습니다.

X509 매개변수 값
RawSubject [사용자 정의 SubjectOverride 또는 CSR에서 전달]
기본 제약 조건 CA:TRUE, pathlen: 0
소유자 대체 이름 [CSR에서 전달]
키 사용 [CSR에 설정된 키 사용]
확장된 키 사용 [CSR에 설정된 확장 키 사용]

하위 CA 인증서 (PathLen 1)

템플릿 이름: blankSubCACertificate_PathLen1_CSRPassthrough

이 템플릿은 경로 길이 제약 조건이 1인 하위 CA 인증서를 발급합니다. 이를 통해 인증서는 종단 개체 인증서와 경로 길이가 0인 다른 하위 CA 인증서에 서명할 수 있습니다.

X509 매개변수 값
RawSubject [사용자 정의 SubjectOverride 또는 CSR에서 전달]
기본 제약 조건 CA:TRUE, pathlen: 1
소유자 대체 이름 [CSR에서 전달]
키 사용 [CSR에 설정된 키 사용]
확장된 키 사용 [CSR에 설정된 확장 키 사용]

충돌 감지

각 CA에는 발급할 수 있는 인증서 유형을 정의하는 프로필이 있습니다. 예를 들어 CA는 클라이언트 인증 인증서만 발급하도록 제한될 수 있습니다. CA의 프로필은 CA가 생성될 때 CertificateAuthority 리소스의 certificateProfile 섹션 내에서 구성됩니다. 자세한 내용은 루트 인증 기관 만들기 및 하위 인증 기관 만들기를 참조하세요.

사전 정의된 템플릿을 사용하여 인증서를 요청하면 CA 서비스는 발급 CA의 구성에 대해 템플릿의 매개변수를 검증합니다. 유효하려면 선택한 템플릿에 정의된 X.509 매개변수가 발급 CA의 certificateProfile에 따라 허용되는 매개변수의 하위 집합이어야 합니다. 템플릿이 CA에서 부여할 권한이 없는 속성 또는 권한을 요청하면 충돌이 발생합니다. 예를 들어 발급 CA가 clientAuth만 부여할 권한이 있는 경우 템플릿은 serverAuth의 Extended key usage (EKU)를 요청할 수 없습니다.

CA 서비스에서 이러한 충돌을 감지하면 CertificateRequest가 실패합니다. CertificateRequest 리소스의 상태를 검사하여 실패의 원인을 파악할 수 있습니다.

예

다음 시나리오에서는 client-certs-ca라는 CA가 클라이언트 인증에만 인증서를 발급하도록 구성됩니다. 해당 certificateProfile은 허용되는 유일한 Extended key usage가 TLS web client authentication이라고 지정합니다.

endEntityServerAuthCertificate 템플릿을 사용하여 서버의 인증서를 발급하기 위해 다음 CertificateRequest를 제출합니다.

  apiVersion: pki.security.gdc.goog/v1
  kind: CertificateRequest
  metadata:
    name: server-cert-req
    namespace: my-project
  spec:
    certificateAuthorityRef:
      name: client-certs-ca
      namespace: my-project
    csr: "..."
    certificateTemplate: endEntityServerAuthCertificate
    signedCertificateSecret: server-cert-secret

이 요청은 다음과 같은 이유로 실패합니다.

  • endEntityServerAuthCertificate 템플릿에는 EKU TLS web server authentication이 필요합니다.
  • 발급 CA인 client-certs-ca에는 EKU TLS web client authentication만 허용하는 certificateProfile이 있습니다.

템플릿에 필요한 EKU가 CA의 프로필에서 허용하는 EKU 목록에 포함되어 있지 않으므로 템플릿의 요구사항은 CA의 허용된 매개변수의 하위 집합이 아닙니다. 따라서 요청이 거부됩니다.