์ธ๋ถ CA์์ ํ์ CA ๋ง๋ค๊ธฐ
์ด ํ์ด์ง์์๋ ์ธ๋ถ ๋ฃจํธ CA์ ์ฐ๊ฒฐ๋๋ ํ์ ์ธ์ฆ ๊ธฐ๊ด(CA)์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋ฃจํธ CA์ ํ์ CA๊ฐ ํฌํจ๋ ๊ธฐ์กด ๊ณต๊ฐ ํค ์ธํ๋ผ(PKI) ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋์ผํ ๋ฃจํธ CA๋ฅผ ์ ์งํ๊ณ ์ธ๋ถ ๋ฃจํธ CA์ ์ฐ๊ฒฐ๋ CA Service์ ํ์ CA๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ธ๋ถ ๋ฃจํธ CA์ ํค ๋ฐ ์์ ์ Google Cloud ์ธ๋ถ์ ์ ์ง๋ฉ๋๋ค. ์ธ๋ถ ๋ฃจํธ CA๋ฅผ ํตํด์๋ง ํ์ CA ์ธ์ฆ์๋ฅผ Google Cloud์ ๋ฐ๊ธํ ์ ์์ต๋๋ค. ์ธ๋ถ ๋ฃจํธ CA๋ฅผ ์ ๋ขฐํ๋ ๋ชจ๋ ์ํฌ๋ก๋์์ ํ์ CA๋ฅผ ์ฆ์ ์ ๋ขฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ CA๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์ ์ ์ธ๋ถ ๋ฃจํธ CA์ ๋ค์ ๋ฌธ์ํ ํ์ ์์ด ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ์ ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
- CA Service ์์
๊ด๋ฆฌ์(
roles/privateca.caManager
) ๋๋ CA Service ๊ด๋ฆฌ์(roles/privateca.admin
) IAM ์ญํ ์ด ์์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ IAM ์ ์ฑ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์. - ์ธ๋ถ ๋ฃจํธ CA๋ฅผ ์๋ณํฉ๋๋ค.
- ํ์ CA์ ์ด๋ฆ, ์ ๋ชฉ, ์ ํจ ๊ธฐ๊ฐ, ํค ํฌ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ CA ์ค์ ํ์ธ์ ์ฐธ์กฐํ์ธ์.
์ธ๋ถ CA์์ ํ์ CA ๋ง๋ค๊ธฐ
์ธ๋ถ CA์์ ํ์ CA๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
ํ์ CA ์ธ์ฆ์ ์๋ช ์์ฒญ(CSR) ์์ฑ: ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ํ์ CA์ CSR์ ์์ฑํ ๋ค์ CSR์ ๋ค์ด๋ก๋ํ๋ ๊ฒ์ ๋๋ค.
์ธ๋ถ ๋ฃจํธ CA์์ ์๋ช ํ ํ์ CA ์ธ์ฆ์ ๊ฐ์ ธ์ค๊ธฐ: ๋ ๋ฒ์งธ ๋จ๊ณ๋ ์๋ช ์ ์ํด CSR์ ์ธ๋ถ ๋ฃจํธ CA์ ์ ์ถํ๋ ๊ฒ์ ๋๋ค. CSR์ ์ ์ถํ๊ณ ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ป๊ธฐ ์ํ ์ธ๋ถ ๋ฃจํธ CA์ ํด๋น ์๋ด๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
์๋ช ๋ ํ์ CA ์ธ์ฆ์๋ฅผ CA Service๋ก ๊ฐ์ ธ์ค๊ธฐ: ๋ง์ง๋ง ๋จ๊ณ๋ Google Cloud CLI ๋๋ Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ์๋ช ๋ PEM ์ธ์ฆ์ ์ฒด์ธ์ ์ ๋ก๋ํ๋ ๊ฒ์ ๋๋ค.
๋ค์ ์น์ ์์๋ ์ธ๋ถ ๋ฃจํธ CA์์ ํ์ CA๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
CSR ๋ง๋ค๊ธฐ
์ฝ์
Google Cloud ์ฝ์์์ ๋ณด์ > Certificate Authority Service ๋ฉ๋ด๋ก ์ด๋ํฉ๋๋ค.
CA ๊ด๋ฆฌ์ ํญ์ ํด๋ฆญํฉ๋๋ค.
CA ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
CA ์ ํ ์ ํ:
- ํ์ CA๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ ํจ ๊ธฐ๊ฐ ํ๋์ CA ์ธ์ฆ์์์ ๋ฐ๊ธํ ์ธ์ฆ์๊ฐ ์ ํจํด์ผ ํ ๊ธฐ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
- ๋ฃจํธ CA๊ฐ ์ธ๋ถ์ ์์ต๋๋ค๋ฅผ ํด๋ฆญํฉ๋๋ค.
- CA ๋ฑ๊ธ์์ ์ฌ์ฉํ ์ ์๋ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ ๋ฑ๊ธ ์ ํ์ ์ฐธ์กฐํ์ธ์.
- ๋ฆฌ์ ํ์ ๋ชฉ๋ก์์ CA ์์น๋ฅผ ์ ํํฉ๋๋ค.
- ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ์กฐ์ง(O) ํ๋์ ํ์ฌ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ์ ํ์ฌํญ: ์กฐ์ง ๋จ์(OU) ํ๋์ ํ์ฌ ๋ถ์ ๋๋ ์ฌ์ ๋ถ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์ ํ์ฌํญ: ๊ตญ๊ฐ ์ด๋ฆ ํ๋์ 2์๋ฆฌ ๊ตญ๊ฐ ์ฝ๋๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์ ํ์ฌํญ: ์ฃผ/๋ ์ด๋ฆ ํ๋์ ์ฃผ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ์ ํ์ฌํญ: ์ง์ญ ์ด๋ฆ ํ๋์ ๋์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- CA ์ผ๋ฐ ์ด๋ฆ(CN) ํ๋์ CA ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ํ ID ํ๋์ CA ํ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. CA๋ฅผ ๋ง๋ ํ์๋ CA ํ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ์๊ตฌ์ฌํญ์ ๊ฐ์ฅ ๋ถํฉํ๋ ํค ์๊ณ ๋ฆฌ์ฆ์ ์ ํํฉ๋๋ค. ์ ์ ํ ํค ์๊ณ ๋ฆฌ์ฆ ๊ฒฐ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํค ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ฐธ์กฐํ์ธ์.
- ๋ค์์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ๋จ๊ณ๋ ์ ํ์ฌํญ์ ๋๋ค. ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๋ฉด ๊ธฐ๋ณธ ์ค์ ์ด ์ ์ฉ๋ฉ๋๋ค.
- Google ๊ด๋ฆฌํ ๋๋ ์์ฒด ๊ด๋ฆฌํ Cloud Storage ๋ฒํท ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
- ํด์ง ์ธ์ฆ์ ๋ชฉ๋ก(CRL) ๋ฐ CA ์ธ์ฆ์์ Cloud Storage ๋ฒํท ๊ฒ์๋ฅผ ์ค์งํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
- ๋ค์์ ํด๋ฆญํฉ๋๋ค.
์์ฒด ๊ด๋ฆฌํ Cloud Storage ๋ฒํท์ ์ ํํ์ง ์์ผ๋ฉด CA Service๋ CA์ ๋์ผํ ์์น์ Google ๊ด๋ฆฌ ๋ฒํท์ ๋ง๋ญ๋๋ค.
CRL ๋ฐ CA ์ธ์ฆ์์ Cloud Storage ๋ฒํท ๊ฒ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ ๋์ด ์์ต๋๋ค. ์ด ์ค์ ์ ์ค์งํ๋ ค๋ฉด ์ ํ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ๋จ๊ณ๋ ์ ํ์ฌํญ์ ๋๋ค.
CA์ ๋ผ๋ฒจ์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ํญ๋ชฉ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํค 1 ํ๋์ ๋ผ๋ฒจ ํค๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ๊ฐ 1 ํ๋์ ๋ผ๋ฒจ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
- ๋ค๋ฅธ ๋ผ๋ฒจ์ ์ถ๊ฐํ๋ ค๋ฉด ํญ๋ชฉ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ 2๋จ๊ณ์ 3๋จ๊ณ์ ์ค๋ช ๋ ๋๋ก ๋ผ๋ฒจ ํค์ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
- ๋ค์์ ํด๋ฆญํฉ๋๋ค.
๋ชจ๋ ์ค์ ์ ์ ์คํ๊ฒ ๊ฒํ ํ ๋ค์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ CA๋ฅผ ๋ง๋ญ๋๋ค.
CSR ๋ค์ด๋ก๋
- ์ธ์ฆ ๊ธฐ๊ด ํ์ด์ง์์ ํ์ฑํํ๋ ค๋ CA๋ฅผ ์ ํํฉ๋๋ค.
- ํ์ฑํ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ํ์์๊ฐ ์ด๋ฆฌ๋ฉด
CSR ๋ค์ด๋ก๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
ํ์ CA์ CA ํ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ CA ํ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
gcloud privateca pools create SUBORDINATE_POOL_ID
SUBORDINATE_POOL_ID๋ฅผ CA ํ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์์ฑ๋ CA ํ์์ ํ์ CA๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์
gcloud
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ๋ํgcloud
๋ช ๋ น์ด๋ CSR์ ๋ง๋ค๊ณ ์ด๋ฅผ FILE_NAME ํ์ผ์ ์ ์ฅํฉ๋๋ค.gcloud privateca subordinates create SUBORDINATE_CA_ID \ --pool=SUBORDINATE_POOL_ID \ --create-csr --csr-output-file=FILE_NAME \ --key-algorithm="ec-p256-sha256" \ --subject="CN=Example Server TLS CA, O=Example LLC"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SUBORDINATE_CA_ID: ํ์ CA์ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- SUBORDINATE_POOL_ID: CA ํ ์ด๋ฆ์ ๋๋ค.
- FILE_NAME: PEM์ผ๋ก ์ธ์ฝ๋ฉ๋ CSR์ด ์์ฑ๋๋ ํ์ผ์ ์ด๋ฆ์ ๋๋ค.
--key-algorithm
ํ๋๊ทธ๋ CA์ ๊ด๋ฆฌํ Cloud HSM ํค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ธ์ต๋๋ค.--subject
ํ๋๊ทธ๋ ์ธ์ฆ์ ์ฃผ์ฒด์ X.501 ์ด๋ฆ์ ๊ฐ์ ธ์ต๋๋ค.gcloud privateca subordinates create
๋ช ๋ น์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ gcloud privateca subordinates create๋ฅผ ์ฐธ์กฐํ์ธ์.
CSR์ด ์์ฑ๋๋ฉด ๋ค์ ๋ฌธ์ด ๋ฐํ๋ฉ๋๋ค.
Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.
์ฌ์ฉ ๊ฐ๋ฅํ ์ ์ฒด ์ค์ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud privateca subordinates create --help
CSR์ ๋ถ์คํ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
--pool=SUBORDINATE_POOL_ID
Terraform
ํด๋น CA ํ์ CA ํ๊ณผ ํ์ CA๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
resource "google_privateca_ca_pool" "default" { name = "test-ca-pool" location = "us-central1" tier = "ENTERPRISE" } resource "google_privateca_certificate_authority" "sub-ca" { pool = google_privateca_ca_pool.default.name certificate_authority_id = "my-certificate-authority-sub" location = "us-central1" config { subject_config { subject { organization = "HashiCorp" common_name = "my-subordinate-authority" } subject_alt_name { dns_names = ["hashicorp.com"] } } x509_config { ca_options { is_ca = true # Force the sub CA to only issue leaf certs max_issuer_path_length = 0 } key_usage { base_key_usage { cert_sign = true crl_sign = true } extended_key_usage { } } } } lifetime = "86400s" key_spec { algorithm = "RSA_PKCS1_4096_SHA256" } type = "SUBORDINATE" }
CSR์ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์ ๊ตฌ์ฑ์ ์ถ๊ฐํฉ๋๋ค.
data "google_privateca_certificate_authority" "sub-ca-csr" { location = "us-central1" pool = google_privateca_ca_pool.default.name certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id } output "csr" { value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr }
terraform apply
๋ฅผ ์คํํฉ๋๋ค.
CSR์ ์๋ช ํ๊ธฐ
์์ฑ๋ CSR ํ์ผ์ ์ธ์ฆ์ ๋ฐ๊ธ ์ฑ ์์ด ์๋ ์กฐ์ง ๊ตฌ์ฑ์์๊ฒ ์ ๋ฌํ๊ณ ์๋ช ์ ์์ฒญํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋จ๊ณ๋ ์กฐ์ง์ ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋ค์ openssl
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ฃจํธ CA๋ฅผ ์คํํด ๋ณผ ์ ์์ต๋๋ค.
Shell
์ ๋ฃจํธ CA์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM
์ ๋ฃจํธ CA๋ฅผ ๋ง๋ญ๋๋ค.
openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
-days 3000 -out rootCA.crt -batch
์ ํ์ CA ์ธ์ฆ์์ ์ถ๊ฐํด์ผ ํ๋ ํ์ฅ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM
์ด ๋ฃจํธ๋ก ํ์ CA์ CSR์ ์๋ช ํฉ๋๋ค.
openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
-CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf
์ ์ฒด ์ธ์ฆ์ ์ฒด์ธ์ ๋จ์ผ ํ์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt
์๋ช ๋ ์ธ์ฆ์ ์ ๋ก๋
์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ CA๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Certificate Authority Service ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
CA ๊ด๋ฆฌ์ ํญ์ ํด๋ฆญํฉ๋๋ค.
์ธ์ฆ ๊ธฐ๊ด์์ ๋ง๋ ํ์ CA๋ฅผ ์ ํํฉ๋๋ค.
ํ์ฑํ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ํ์์๊ฐ ์ด๋ฆฌ๋ฉด CSR ๋ค์ด๋ก๋๋ฅผ ํด๋ฆญํ์ฌ ๋ฐ๊ธ CA๊ฐ ์๋ช ํ ์ ์๋ PEM ์ธ์ฝ๋ฉ CSR ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
๋ค์์ ํด๋ฆญํฉ๋๋ค.
์ธ์ฆ์ ์ฒด์ธ ์ ๋ก๋ ํ๋์์ ์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ์ฅ์๊ฐ
.crt
์ธ ์๋ช ๋ ์ธ์ฆ์ ํ์ผ์ ์ ๋ก๋ํฉ๋๋ค.ํ์ฑํ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud privateca subordinates activate SUBORDINATE_CA_ID \
--pool=SUBORDINATE_POOL_ID \
--pem-chain ./chain.crt
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SUBORDINATE_CA_ID: ํ์ฑํํ๋ ค๋ ํ์ CA์ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- SUBORDINATE_POOL_ID: ํ์ CA๊ฐ ํฌํจ๋ CA ํ์ ์ด๋ฆ์ ๋๋ค.
--pem-chain
ํ๋๊ทธ๋ ํ์์ฌํญ์
๋๋ค. ์ด ํ๋๊ทธ๋ PEM ์ธ์ฝ๋ฉ ์ธ์ฆ์ ๋ชฉ๋ก์ด ํฌํจ๋ ํ์ผ์ ๊ฐ์ ธ์ต๋๋ค. ์ธ์ฆ์ ๋ชฉ๋ก์ ํ์ฌ CA ์ธ์ฆ์๋ก ์์ํ๊ณ ๋ฃจํธ CA ์ธ์ฆ์๋ก ๋๋ฉ๋๋ค.
gcloud privateca subordinates activate
๋ช
๋ น์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ gcloud privateca subordinates activate๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ช ๋ ์ธ์ฆ์๊ฐ ์ ๋ก๋๋๋ฉด ๋ค์ ๋ฌธ์ด ๋ฐํ๋ฉ๋๋ค.
Activated certificate authority [SUBORDINATE_CA_ID].
Terraform
- ์๋ช
๋ CA ์ธ์ฆ์๋ฅผ
subordinate.crt
๋ก ๋ก์ปฌ์ ์ ์ฅํฉ๋๋ค. - ์๋ช
์ CA ์ธ์ฆ์๋ฅผ
rootCA.crt
๋ก ๋ก์ปฌ์ ์ ์ฅํฉ๋๋ค. - CA ํ์ฑํ ํ ํ์ฉ๋์ง ์๋ CSR์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฏ๋ก ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ์ธ๊ธ๋ CSR์ ๊ฐ์ ธ์ค๋ ๊ตฌ์ฑ์ ์ญ์ ํฉ๋๋ค.
๋ค์ ํ๋๋ก ํ์ CA ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธํ๊ณ
terraform apply
๋ฅผ ์คํํฉ๋๋ค.pem_ca_certificate = file("subordinate.crt") subordinate_config { pem_issuer_chain { pem_certificates = [file("rootCA.crt")] } }
๋ฐ๊ธ๊ธฐ๊ด ์ฒด์ธ์ CA๊ฐ ๋ ๊ฐ ์ด์ ํฌํจ๋ ๊ฒฝ์ฐ ๊ฐ์
[file("intermediateCA.cert"), file("rootCA.crt")]
๋ก ์ง์ ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
- ์ธ์ฆ์ ์์ฒญ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ํ ํ๋ฆฟ ๋ฐ ๋ฐ๊ธ ์ ์ฑ ์์๋ณด๊ธฐ