인증서 템플릿 만들기
이 페이지에서는 인증서 템플릿의 속성과 인증서 템플릿을 만드는 방법을 설명합니다. 인증서 템플릿에 대해 자세히 알아보려면 인증서 템플릿 정보를 참고하세요.
필요한 역할
인증서 템플릿을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트, 폴더 또는 조직에 대한 CA 서비스 작업 관리자 (roles/privateca.caManager
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
인증서 템플릿 만들기
인증서 템플릿을 만들려면 다음 방법 중 하나를 사용하세요.
콘솔
Google Cloud 콘솔에서 Certificate Authority Service 페이지로 이동합니다.
템플릿 관리자 탭을 클릭한 다음 템플릿 만들기를 클릭합니다.
리전 목록을 사용하여 인증서 템플릿의 위치를 선택합니다. 인증서 템플릿과 함께 사용하려는 CA 풀과 동일한 위치여야 합니다.
인증서 템플릿 ID 필드에 인증서 템플릿의 고유 식별자를 입력합니다. 원하는 경우 인증서 템플릿에 대한 설명을 제공합니다.
다음을 클릭합니다.
이 템플릿을 사용하는 인증서의 기본 x.509 값을 구성하려면 이 인증서 템플릿을 사용하여 발급된 인증서에 사전 정의된 값 포함 전환 버튼을 클릭합니다. 그런 다음 사전 정의된 값 구성을 클릭합니다.
다음 정보를 사용하여 사전 정의된 값을 설정합니다.
기본 키 사용 정의
이 설정은 디지털 인증서 내의
Key Usage
필드를 나타냅니다. 인증서의 비공개 키를 키 암호화, 데이터 암호화, 인증서 서명, CRL 서명 등과 같은 용도로 사용할 수 있는 방법을 지정합니다. 자세한 내용은 키 사용을 참고하세요.- 기본 키 사용을 선택하려면 이 CA 풀에서 발급한 인증서에 기본 키 사용 지정 전환 버튼을 클릭한 후 나열된 옵션 중에서 선택합니다.
- 다음을 클릭합니다.
확장 키 사용 정의
이 설정은 디지털 인증서의
Extended Key Usage (EKU)
필드를 나타냅니다. 서버 인증, 클라이언트 인증, 코드 서명, 이메일 보호 등 키를 사용할 수 있는 방법에 관한 더 구체적이고 세련된 제한을 제공합니다. 자세한 내용은 확장 키 사용을 참고하세요.확장 키 사용은 객체 식별자(OID)를 사용해서 정의됩니다. 확장 키 사용을 구성하지 않으면 모든 키 사용 시나리오가 허용됩니다.
- 확장 키 사용을 선택하려면 이 CA 풀에서 발급한 인증서에 확장 키 사용 쓰기 전환 버튼을 클릭한 후 나열된 옵션 중에서 선택합니다.
- 다음을 클릭합니다.
정책 식별자 정의
인증서의 인증서 정책 확장자에는 인증서 발급 CA 풀이 따르는 정책이 표시됩니다. 이 확장자에는 인증서 발급 전 ID 검증 방법, 인증서 해지 방법, CA 풀의 무결성 확인 방법에 대한 정보가 포함될 수 있습니다. 이 확장자를 사용하면 CA 풀에서 발급되는 인증서를 확인하고 인증서 사용 방법을 볼 수 있습니다.
자세한 내용은 인증서 정책을 참조하세요.
인증서 사용을 정의하는 정책을 지정하려면 다음을 수행합니다.
- 선택사항: 정책 식별자 필드에 정책 식별자를 추가합니다.
- 다음을 클릭합니다.
기관 정보 액세스 (AIA) OCSP 서버 추가
인증서의 AIA 확장자는 다음 정보를 제공합니다.
- 인증서의 해지 상태를 확인할 수 있는 OCSP 서버 주소
- 인증서 발급기관의 액세스 방법
자세한 내용은 기관 정보 액세스를 참조하세요.
OCSP 서버 추가는 선택사항입니다. 인증서의 AIA 확장자 필드에 표시되는 OCSP 서버를 추가하려면 다음을 수행합니다.
- 항목 추가를 클릭합니다.
- 서버 URL 필드에 OCSP 서버의 URL을 추가합니다.
- 완료를 클릭합니다.
- 다음을 클릭합니다.
CA 옵션
인증서 템플릿 내의 CA 옵션 필드는 결과 인증서가 인증 기관 (CA) 계층 구조에서 사용될 수 있는 방법을 정의합니다. 기본적으로 인증서를 사용하여 다른 인증서에 서명할 수 있는지 여부와 서명할 수 있는 경우 발급하는 인증서에 대한 제한사항을 결정합니다.
다음 옵션 중에서 선택합니다.
CA X.509 확장자를 설명하는 구성 포함: 인증서 템플릿 내에서 X.509 확장자를 제어하는 설정을 지정합니다.
발급된 인증서가 CA에만 사용되도록 제한: 이 옵션은 이전 단계에서 언급한 체크박스를 선택한 경우에만 표시됩니다. 이 불리언 값은 인증서가 CA 인증서인지 여부를 나타냅니다.
true
로 설정된 경우 인증서를 사용하여 다른 인증서에 서명할 수 있습니다.false
인 경우 종단 개체 인증서이며 다른 인증서에 서명할 수 없습니다. 이 전환 버튼을 클릭하면 CA 인증서의 확장자에 대한 이름 제약조건을 정의하라는 메시지가 추가로 표시됩니다.경로 길이 제한 X.509 확장자를 설명하는 구성 포함: 특정 인증서에서 시작되는 인증서 체인의 길이를 제어하는 설정을 지정합니다.이 CA 인증서에 연결할 수 있는 최대 CA 수를 지정합니다. 최대 발급기관 경로 길이가
0
로 설정되면 CA는 종단 개체 인증서만 발급할 수 있습니다.1
로 설정하면 이 CA 인증서 아래에 있는 체인에는 하위 CA가 하나만 포함될 수 있습니다. 값이 선언되지 않으면 이 CA 아래 체인에 있는 하위 CA의 수는 제한되지 않습니다.- 다음을 클릭합니다.
추가 확장자 구성
선택사항: CA 풀에서 발급한 인증서에 포함할 추가 맞춤 확장자를 구성할 수 있습니다. 다음 단계를 따르세요.
- 항목 추가를 클릭합니다.
- 객체 식별자 필드에 점으로 구분된 숫자 형식의 유효한 객체 식별자를 추가합니다.
- 값 필드에 base64로 인코딩된 식별자 값을 추가합니다.
- 확장자가 중요한 경우 중요한 확장자를 선택합니다.
모든 사전 정의된 값을 저장하려면 완료를 클릭합니다.
그런 다음 확장 프로그램 제약 조건 구성 섹션으로 이동합니다. 다음 옵션 중 하나를 선택합니다.
- 인증서 요청의 모든 확장자를 인증서로 복사
- 인증서 요청에서 모든 확장자 삭제
- 인증서 요청의 특정 확장자를 인증서로 복사
- 특정 확장 프로그램을 복사하려면 다음 단계를 따르세요.
- 알려진 인증서 확장자 필드를 클릭하고 목록에서 불필요한 확장자를 삭제합니다.
- 커스텀 확장자 필드에서 CA 풀이 발급하는 인증서에 포함하려는 확장자의 객체 식별자를 추가합니다.
다음을 클릭하고 ID 제약 조건 구성 섹션으로 이동합니다. CA 풀이 발급하는 인증서에서 주체 및 SAN에 대한 제약조건을 구성하려면 다음 옵션 중 하나 또는 둘 다를 선택합니다.
- 인증서 요청의 주체를 인증서로 복사
- 인증서 요청의 주체 대체 이름 (SAN)을 인증서로 복사
다음을 클릭한 후 완료를 클릭합니다.
gcloud
gcloud privateca templates create TEMPLATE_ID \
--copy-subject \
--copy-sans \
--identity-cel-expression <expr> \
--predefined-values-file FILE_PATH \
--copy-all-requested-extensions \
--copy-extensions-by-oid <1.2.3.4,5.6.7.8> \
--copy-known-extensions <ext1,ext2>
다음을 바꿉니다.
- TEMPLATE_ID: 인증서 템플릿의 고유 식별자입니다.
- FILE_PATH: 인증서 템플릿에서 설정된 X.509 값을 설명하는 YAML 파일입니다.
--copy-sans
플래그를 사용하면 인증서 요청의 주체 대체 이름(SAN) 확장을 서명된 인증서에 복사할 수 있습니다. 또는 --no-copy-sans
를 지정하여 인증서 요청에서 호출자가 지정한 SAN을 삭제할 수 있습니다.
--copy-subject
플래그를 사용하면 인증서 요청의 주체를 서명된 인증서에 복사할 수 있습니다. 또는 --no-copy-subject
를 지정하여 인증서 요청에서 호출자가 지정한 주체를 삭제할 수 있습니다.
--identity-cel-expression
플래그는 발급되기 전에 인증서의 주체 및 주체 대체 이름에 대해 평가되는 CEL 표현식을 사용하고 요청을 허용해야 하는지 여부를 나타내는 불리언을 반환합니다. 인증서 템플릿에 Common Expression Language(CEL) 표현식을 사용하는 방법에 대한 자세한 내용은 인증서 템플릿에 CEL 사용을 참조하세요.
--predefined-values-file
플래그는 이 템플릿에서 설정한 사전 정의된 X.509 값을 설명하는 YAML 파일의 경로를 지정합니다. 제공된 확장 프로그램은 이 템플릿을 사용하는 모든 인증서 요청에 복사되며, 인증서 요청에서 허용되는 확장 프로그램보다 우선 적용됩니다. 사전 정의된 X.509 값의 일부를 업데이트하면 사전 정의된 X.509 값 집합 전체를 대체합니다.
--copy-all-requested-extensions
플래그를 설정하면 인증서 요청에 지정된 모든 확장 프로그램이 서명된 인증서에 복사됩니다.
--copy-extensions-by-oid
플래그를 설정하면 특정 OID가 인증서 요청에서 서명된 인증서로 복사됩니다.
--copy-known-extensions
플래그를 설정하면 특정 확장 프로그램이 인증서 요청에서 서명된 인증서로 복사됩니다. 이러한 알려진 확장자는 base-key-usage
, extended-key-usage
, ca-options
, policy-ids
또는 aia-ocsp-servers
중 하나일 수 있습니다.
인증서 요청에서 모든 X.509 확장 프로그램을 무시하도록 --copy-all-requested-extensions
플래그를 삭제하되 이 템플릿에 정의된 사전 정의 값은 유지합니다.
다음은 샘플 인증서 템플릿 구성입니다.
keyUsage:
baseKeyUsage:
digitalSignature: true
keyEncipherment: true
contentCommitment: false
dataEncipherment: false
keyAgreement: false
certSign: false
crlSign: false
encipherOnly: false
decipherOnly: false
extendedKeyUsage:
serverAuth: true
clientAuth: false
codeSigning: false
emailProtection: false
timeStamping: false
ocspSigning: false
caOptions:
isCa: true
maxIssuerPathLength: 1
policyIds:
- objectIdPath:
- 1
- 2
- 3
additionalExtensions:
- objectId:
objectIdPath:
- 1
- 2
- 3
critical: false
value: "base64 encoded extension value"
YAML에 지정되지 않은 값은 생략되거나 기본값이 false
로 설정됩니다.
값이 지정되지 않은 경우 다음 확장 프로그램이 생략됩니다.
keyUsage
policyIds
additionalExtensions
caOptions
확장 프로그램의maxIssuerPathLength
필드
값이 지정되지 않은 경우 다음 확장 프로그램은 기본값이 false
로 설정됩니다.
caOptions
확장 프로그램의isCa
필드
일반적인 시나리오의 인증서 템플릿 만들기
이 섹션에서는 일반적인 사용 사례의 인증서 템플릿을 만들기 위한 gcloud
명령어를 제공합니다.
모든 도메인의 DNS 서버 TLS 인증서
모든 도메인을 허용하는 서버 TLS 인증서를 발급하기 위한 인증서 템플릿을 만들려면 다음 안내를 따르세요.
이름이
leaf_server_tls_values.yaml
인 파일을 만들고 다음 최종 항목 서버 TLS 구성을 추가합니다.leaf_server_tls_values.yaml
keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true caOptions: isCa: false
DNS
유형의 SAN이 있는 인증서만 허용하려면 다음gcloud
명령어를 실행합니다.gcloud
gcloud privateca templates create server-tls \ --predefined-values-file leaf_server_tls_values.yaml \ --copy-sans --no-copy-subject \ --identity-cel-expression "subject_alt_names.all(san, san.type == DNS)"
gcloud privateca templates create
명령어에 대한 자세한 내용은 gcloud privateca templates create를 참조하세요.
테스트 도메인만 있는 DNS 서버 TLS 인증서
테스트 도메인으로 제한된 DNS SAN으로 서버 TLS 인증서를 발급하는 인증서 템플릿을 만들려면 다음 gcloud
명령어를 사용합니다.
gcloud
gcloud privateca templates create server-tls \
--predefined-values-file leaf_server_tls_values.yaml \
--copy-sans --no-copy-subject \
--identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"
leaf_server_tls_values.yaml
파일의 콘텐츠는 이전 예시와 동일해야 합니다.
CEL 표현식을 사용하여 DNS 이름이 특정 문자열로 시작하거나 끝나는지 확인하는 방법에 대한 자세한 내용은 CEL 표현식 예시를 참조하세요.
워크로드 아이덴티티 인증서
상호 TLS(mTLS) 인증서를 발급하기 위한 인증서 템플릿을 만들려면 다음 안내를 따르세요.
이름이
leaf_mtls_values.yaml
인 파일을 만들고 다음 최종 항목 상호 TLS 구성을 추가합니다.leaf_mtls_values.yaml
keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true clientAuth: true caOptions: isCa: false
SPIFFE URI SAN이 있는 인증서만 허용하려면 다음
gcloud
명령어를 사용합니다.gcloud
gcloud privateca templates create workload-spiffe \ --predefined-values-file leaf_mtls_values.yaml \ --copy-sans --no-copy-subject \ --identity-cel-expression "subject_alt_names.all(san, san.type == URI && san.value.startsWith('spiffe://'))"
gcloud privateca templates create
명령어에 대한 자세한 내용은 gcloud privateca templates create를 참조하세요.
CEL 표현식을 사용하여 DNS 이름이 특정 문자열로 시작하거나 끝나는지 확인하는 방법에 대한 자세한 내용은 CEL 표현식 예시를 참조하세요.
인증서 템플릿에 대한 액세스 권한 부여
CA Service 인증서 템플릿 사용자(roles/privateca.templateUser
) 역할이 있는 경우 인증서 템플릿을 사용할 수 있습니다. 인증서 템플릿 작성자는 해당 인증서 템플릿을 사용할 수 있는 조직의 구성원에게 CA Service 인증서 템플릿 사용자 역할을 부여하는 것이 좋습니다.
example.com
도메인의 모든 사용자에게 CA Service 인증서 템플릿 사용자(roles/privateca.templateUser
) 역할을 부여하려면 다음 gcloud
명령어를 사용합니다.
gcloud
gcloud privateca templates add-iam-policy-binding TEMPLATE_ID \
--member "domain:example.com" \
--role "roles/privateca.templateUser"
다음을 바꿉니다.
- TEMPLATE_ID: 인증서 템플릿의 고유 식별자입니다.
gcloud privateca templates add-iam-policy-binding
명령어에 대한 자세한 내용은 gcloud privateca templates add-iam-policy-binding을 참조하세요.
CA Service의 IAM 역할 및 관련 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
다음 단계
- Common Expression Language 알아보기
- Common Expression Language 사용 방법 알아보기
- 인증서 프로필 알아보기