CA 풀에 인증서 발급 정책 추가

이 페이지에서는 인증 기관(CA) 풀에 인증서 발급 정책을 추가하는 방법을 설명합니다.

인증서 발급 정책을 사용하면 발급된 인증서에 포함할 수 있는 주체 및 주체 대체 이름(SAN)을 지정할 수 있습니다. CA 풀을 만드는 동안 인증서 발급 정책을 지정하거나 기존 CA 풀을 업데이트하여 발급 정책을 추가할 수 있습니다.

자세한 내용은 템플릿 및 발급 정책 개요를 참조하세요.

시작하기 전에

  • CA Service 작업 관리자(roles/privateca.caManager) 또는 CA Service 관리자(roles/privateca.admin) IAM 역할이 있어야 합니다. 주 구성원에 IAM 부여에 대한 자세한 내용은 단일 역할 부여를 참조하세요.

  • CA 풀을 만듭니다.

인증서 발급 정책 파일 추가

기존 CA 풀에 인증서 발급 정책을 추가하려면 다음을 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 Certificate Authority Service 페이지로 이동합니다.

    Certificate Authority Service로 이동

  2. CA 풀 관리자 페이지에서 인증서 발급 정책을 추가하려는 CA 풀 이름을 클릭합니다.

  3. CA 풀 페이지에서 수정을 클릭합니다.

기준값 구성

CA 풀에서 발급된 인증서에서 기준 값을 구성하려면 다음을 수행합니다.

  1. 전환 버튼을 클릭합니다.
  2. 기준 값 구성을 클릭합니다.
기본 키 사용 정의

이 설정을 사용해서 인증서에 포함된 키를 사용하는 방식을 구성할 수 있습니다. 키 사용 옵션에는 키 암호화, 데이터 암호화, 인증서 서명, CRL 서명 등이 포함됩니다.

자세한 내용은 키 사용을 참조하세요.

기본 키 사용을 정의하려면 다음을 수행합니다.

  1. 선택사항: 인증서의 기본 키 사용을 지정하려면 표시된 창에서 전환 버튼을 클릭합니다.
  2. 원하는 키 사용 방법에 해당하는 체크박스를 선택합니다.
  3. 원하는 대략적인 키 사용 방법을 선택합니다.
  4. 다음을 클릭합니다.
확장 키 사용 정의

이 설정을 사용해서 인증서에 포함된 키를 사용할 수 있는 보다 세부적인 시나리오를 선택할 수 있습니다. 옵션에는 서버 인증, 클라이언트 인증, 코드 서명, 이메일 보호 등이 포함됩니다.

확장 키 사용은 객체 식별자(OID)를 사용해서 정의됩니다. 확장 키 사용을 구성하지 않으면 모든 키 사용 시나리오가 허용됩니다.

자세한 내용은 확장 키 사용을 참조하세요.

확장 키 사용을 정의하려면 다음을 수행합니다.

  1. 선택사항: CA 풀로 발급되는 인증서에 대해 확장 키 사용을 지정하려면 전환 버튼을 클릭합니다.
  2. 확장 키 사용 시나리오에 대한 체크박스를 선택합니다.
  3. 다음을 클릭합니다.
정책 식별자 정의

인증서의 인증서 정책 확장자에는 인증서 발급 CA 풀이 따르는 정책이 표시됩니다. 이러한 확장자에는 인증서 발급 전 ID 검증 방법, 인증서 해지 방법, CA 풀의 무결성 확인 방법에 대한 정보가 포함될 수 있습니다. 이 확장자를 사용하면 CA 풀에서 발급되는 인증서를 확인하고 인증서 사용 방법을 볼 수 있습니다.

자세한 내용은 인증서 정책을 참조하세요.

인증서 사용을 정의하는 정책을 지정하려면 다음을 수행합니다.

  1. 선택사항: 정책 식별자 필드에 정책 식별자를 추가합니다.
  2. 다음을 클릭합니다.
기관 정보 액세스(AIA) OCSP 서버 추가

인증서의 AIA 확장자는 다음 정보를 제공합니다.

  • 인증서의 해지 상태를 확인할 수 있는 OCSP 서버 주소
  • 인증서 발급기관의 액세스 방법

자세한 내용은 기관 정보 액세스를 참조하세요.

인증서의 AIA 확장자 필드에 표시되는 OCSP 서버를 추가하려면 다음을 수행합니다. 다음 절차는 선택사항입니다.

  1. 선택사항: 항목 추가를 클릭합니다.
  2. 서버 URL 필드에 OCSP 서버의 URL을 추가합니다.
  3. 완료를 클릭합니다.
  4. 다음을 클릭합니다.
추가 확장자 구성

CA 풀에서 발급된 인증서에 포함할 추가 커스텀 확장자를 구성하려면 다음을 수행합니다. 다음 절차는 선택사항입니다.

  1. 항목 추가를 클릭합니다.
  2. 객체 식별자 필드에 점으로 구분된 숫자 형식의 유효한 객체 식별자를 추가합니다.
  3. 필드에 base64로 인코딩된 식별자 값을 추가합니다.
  4. 확장자가 중요한 경우 중요한 확장자를 선택합니다.

모든 기준 값 구성을 저장하려면 완료를 클릭합니다.

확장자 제약조건 구성

인증서 요청의 모든 확장자가 발급된 인증서에 포함되지 않도록 하려면 전환 버튼을 클릭합니다.

전환 버튼을 클릭하면 인증서 확장자를 선택하는 데 사용할 수 있는 알려진 인증서 확장자 필드가 표시됩니다. 인증서 확장자를 선택하려면 다음 단계를 따르세요.

  1. 선택사항: 알려진 인증서 확장자 필드를 클릭하고 메뉴에서 불필요한 확장자를 삭제합니다.
  2. 선택사항: 커스텀 확장자 필드에서 CA 풀이 발급하는 인증서에 포함하려는 확장자의 객체 식별자를 추가합니다.
ID 제약조건 구성

CA 풀이 발급하는 인증서에서 주체 및 SAN에 대한 제약조건을 구성하려면 다음을 수행합니다.

  1. 선택사항: 인증서 요청의 주체가 전달되지 않도록 하려면 전환 버튼을 클릭합니다.
  2. 선택사항: 인증서 요청의 주체 대체 이름이 전달되지 않도록 하려면 전환 버튼을 클릭합니다.
  3. 선택사항: 인증서 주체에 대한 제한사항을 설정하려면 Common Expression Language(CEL) 표현식을 추가합니다. 자세한 내용은 CEL 사용을 참조하세요.
  4. 다음을 클릭합니다.

인증서 발급 정책에서 추가 매개변수를 구성하는 방법은 IssuancePolicy를 참조하세요.

gcloud

Google Cloud CLI를 사용해서 CA 풀에 인증서 발급 정책을 추가하려면 CA 풀이 발급할 수 있는 인증서에 대한 제한사항을 기술하는 YAML 파일을 만들어야 합니다. 콘텐츠는 IssuancePolicy에 해당합니다.

  1. Cloud Shell 편집기를 사용해서 다음 콘텐츠로 policy.yaml 파일을 만듭니다.

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    각 항목의 의미는 다음과 같습니다.

    • allowSubjectPassthrough 필드는 필수 입력란입니다. allowSubjectPassthrough 필드가 true로 설정된 경우 주체 필드가 인증서 요청에서 서명된 인증서로 복사됩니다. 그렇지 않으면 요청된 주체가 삭제됩니다.
    • allowSubjectAltNamesPassthrough 필드가 true로 설정된 경우 SubjectAltNames 확장이 인증서 요청에서 서명된 인증서로 복사됩니다. 그렇지 않으면 요청된 SubjectAltNames가 삭제됩니다.
  2. 이전 단계에서 만든 파일을 사용해서 CA 풀의 인증서 발급 정책을 업데이트하려면 다음 명령어를 실행합니다.

    gcloud privateca pools update POOL_NAME \
      --issuance-policy FILE_PATH
    

    다음을 바꿉니다.

    • POOL_NAME: CA 풀의 이름입니다.
    • FILE_PATH: policy.yaml 파일의 경로입니다.

    gcloud privateca pools update 명령어에 대한 자세한 내용은 gcloud privateca pools update를 참조하세요.

지원되는 제한사항

CA 서비스는 다음과 같은 발급 정책 제한사항을 지원합니다. 필요에 따라 다음 제한사항을 조합하여 커스텀 인증서 발급 정책을 만들 수 있습니다.

허용되는 X.509 값 제한 또는 적용

CA 풀은 passthrough_extensions 필드를 구성하여 인증서 요청에서 허용되는 X.509 값을 제한할 수 있습니다.

CA 풀은 또한 baseline_values 필드를 사용해서 모든 발급된 인증서에 추가할 X.509 값을 명시적으로 지정하고, 모든 요청된 값을 덮어쓸 수 있습니다.

CA 풀의 baseline_values 값은 다음 속성을 지정하도록 허용합니다.

또한 이러한 옵션을 함께 사용할 수 있습니다.

baseline_values 필드를 업데이트하면 baseline_values 필드의 전체 값 집합이 업데이트됩니다.

  • : 상호 TLS(mTLS)를 위해 X.509 값을 갖는 종단 개체 인증서만 발급하도록 CA를 제한합니다.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • : 기준 AIA OCSP URL을 갖는 종단 개체 코드 서명 인증서만 발급하도록 CA를 제한합니다.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
        extendedKeyUsage:
          codeSigning: true
      aiaOcspServers:
        - "http://foo.bar/revocation"
      additionalExtensions:
      - objectId:
          objectIdPath:
            - 1
            - 2
            - 3
        critical: false
        value: "base64 encoded extension value"
    

종단 개체 mTLS의 인증서 프로필에 대한 자세한 내용은 종단 개체 mTLS를 참조하세요.

허용되는 ID 필드 제한

CA 풀을 통해 발급된 인증서 ID를 제한하려면 Common Expression Language(CEL) 표현식을 발급 정책의 identity_constraints 필드에 추가하면 됩니다. CEL 표현식을 사용하면 주체 도메인 이름(공통 이름 포함) 및 인증서의 SAN에 대해 임의 제한을 만들 수 있습니다.

CEL 표현식을 사용하여 주체 및 SAN을 제한하는 방법은 CEL 사용을 참조하세요.

  • CA가 지정된 주체와 일치하는 인증서만 발급하도록 허용합니다.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: false
      celExpression:
        expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
    

    celExpression 필드는 선택사항입니다. 인증서를 서명하기 전 Common Expression Language(CEL) 표현식을 사용해서 확인된 X.509 주체 및 SAN을 검증합니다. CEL 표현식 사용에 대한 자세한 내용은 CEL 사용을 참조하세요.

  • : DNS 이름이 us.google.org이거나 .google.com으로 끝나는 SAN만 허용합니다.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
    
  • : URI가 https://google.com/webhp이거나 spiffe://example-trust-domain-1/ns/namespace1/sa/로 시작하는 SAN만 허용합니다.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
    
  • : 이메일 주소가 example@google.com이거나 @google.org로 끝나는 SAN만 허용합니다.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
    
  • : 특정 OID 및 커스텀 값을 포함하는 커스텀 SAN만 허용합니다.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
    

발급된 인증서의 최대 수명 제한

발급된 인증서의 수명을 제한하려면 maximum_lifetime 필드를 사용합니다. 인증서의 요청 수명이 최대 수명보다 길면 인증서 수명이 명시적으로 잘립니다.

최대 30일 수명을 허용하려면 다음 policy.yaml 파일을 사용합니다.

policy.yaml

maximumLifetime: 2592000s

허용되는 인증서 발급 모드 제한

인증서 서명 요청(CSR) 또는 요청된 값에 대한 인라인 설명을 통해 인증서를 요청할 수 있습니다. 일부 조직은 사용 가능한 옵션에 대해 제한을 추가하는 방식을 선호할 수 있습니다. 이렇게 하면 연결된 비공개 키에 대한 소유 증명이 필요하지 않기 때문입니다. 이러한 제한은 allowedIssuanceModes 필드를 사용해서 설정할 수 있습니다.

CA 풀에서 인증서를 요청할 수 있는 방식을 지정하는 방법은 IssuanceModes를 참조하세요.

인증서 요청에 대한 자세한 내용은 인증서 요청 만들기를 참조하세요.

  • : CSR 발급만 허용합니다.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

인증서 요청의 공개 키 알고리즘 제한

인증서에 사용할 수 있는 최대 키 길이 및 공개 키 알고리즘을 제한하려면 인증서 발급 정책 YAML 파일에서 allowedKeyTypes 필드를 사용하면 됩니다. 이 필드를 지정하면 인증서 요청의 공개 키가 YAML 파일에 나열된 키 유형 중 하나와 일치해야 합니다. 이 필드를 지정하지 않으면 모듈 크기가 2,048비트 미만인 RSA 키를 제외하고, 모든 키를 사용할 수 있습니다. 모듈 크기가 2,048비트 미만인 RSA 키를 사용하려면 인증서 발급 정책을 사용해서 이를 명시적으로 허용해야 합니다.

: 모듈 크기가 3,072비트에서 4,096비트(포함) 사이인 RSA 키 또는 NIST P-256 곡선에 대한 타원 곡선 디지털 서명 알고리즘(ECDSA) 키를 허용합니다.

policy.yaml

allowedKeyTypes:
- rsa:
    minModulusSize: 3072
    maxModulusSize: 4096
- ellipticCurve:
    signatureAlgorithm: ECDSA_P256

다음 타원 곡선 서명 알고리즘 중 하나를 선택할 수 있습니다.

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED - 모든 서명 알고리즘을 사용할 수 있습니다.
  • ECDSA_P256 - NIST P-256 곡선에 대한 타원 곡선 디지털 서명입니다.
  • ECDSA_P384 - NIST P-384 곡선에 대한 타원 곡선 디지털 서명입니다.
  • EDDSA_25519 - RFC 8410에 설명된 대로 25519 곡선에 대한 Edwards 곡선 디지털 서명 알고리즘입니다.

다음 단계