PKI 시크릿 엔진 설정 및 사용하기
PKI 시크릿 엔진 설정 및 사용하기
PKI 시크릿 엔진(Secrets Engine)을 어떻게 설정하고 사용하는지 간단히 알아볼게요. Vault에서 인증서를 발급·관리하고 싶다면 이 문서가 출발점이 됩니다.
출처: 문서
본문
설정 (Setup)
대부분의 시크릿 엔진은 본래 기능을 수행하기 전에 미리 설정을 해 둬야 합니다. 이 단계는 보통 운영자나 설정 관리 도구가 수행해요.
1. PKI 시크릿 엔진을 활성화합니다.
$ vault secrets enable pki
Success! Enabled the pki secrets engine at: pki/
기본적으로 시크릿 엔진은 엔진 이름과 같은 경로에 마운트돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.
2. TTL을 늘리기 위해 시크릿 엔진을 튜닝합니다. 기본값 30일은 너무 짧을 수 있으니 1년으로 늘려줄게요.
$ vault secrets tune -max-lease-ttl=8760h pki
Success! Tuned the secrets engine at: pki/
개별 역할(Role)은 이 값을 인증서 단위로 더 짧게 제한할 수 있다는 점을 기억해 두세요. 이 설정은 이 시크릿 엔진의 전역 최댓값을 정하는 것뿐이에요.
3. CA 인증서와 개인 키를 구성합니다. Vault는 기존 키 쌍을 받아들이거나, 자체 서명된 루트를 직접 생성할 수 있어요. 일반적으로는 루트 CA를 Vault 외부에서 유지하고, Vault에는 서명된 중간 CA(Intermediate CA)를 제공할 것을 권장해요.
$ vault write pki/root/generate/internal \
common_name=my-website.com \
ttl=8760h
Key Value
--- -----
certificate -----BEGIN CERTIFICATE-----...
expiration 1536807433
issuing_ca -----BEGIN CERTIFICATE-----...
serial_number 7c:f1:fb:2c:6e:4d:99:0e:82:1b:08:0a:81:ed:61:3e:1d:fa:f5:29
반환된 인증서는 정보 확인용일 뿐이에요. 개인 키는 Vault 내부에 안전하게 저장됩니다.
4. CRL 위치와 발급 인증서를 갱신합니다. 이 값들은 나중에도 갱신할 수 있어요.
$ vault write pki/config/urls \
issuing_certificates="http://127.0.0.1:8200/v1/pki/ca" \
crl_distribution_points="http://127.0.0.1:8200/v1/pki/crl"
Success! Data written to: pki/config/urls
5. Vault 안의 이름을 인증서 생성 절차에 매핑하는 역할(Role)을 구성합니다. 사용자나 머신이 크레덴셜을 생성할 때는 이 역할을 기준으로 생성돼요.
$ vault write pki/roles/example-dot-com \
allowed_domains=my-website.com \
allow_subdomains=true \
max_ttl=72h
Success! Data written to: pki/roles/example-dot-com
사용법 (Usage)
시크릿 엔진이 설정되고, 사용자나 머신이 적절한 권한을 가진 Vault 토큰을 갖게 되면 크레덴셜을 생성할 수 있어요.
1. 역할 이름으로 /issue 엔드포인트에 쓰기(write)를 해서 새 크레덴셜을 생성합니다.
$ vault write pki/issue/example-dot-com \
common_name=www.my-website.com
Key Value
--- -----
certificate -----BEGIN CERTIFICATE-----...
issuing_ca -----BEGIN CERTIFICATE-----...
private_key -----BEGIN RSA PRIVATE KEY-----...
private_key_type rsa
serial_number 1d:2e:c6:06:45:18:60:0e:23:d6:c5:17:43:c0:fe:46:ed:d1:50:be
출력에는 동적으로 생성된 개인 키와 인증서가 포함되는데, 이 인증서는 주어진 역할에 대응하며 (역할 정의대로) 72시간 안에 만료돼요. 자동화를 단순화하기 위해 발급 CA와 신뢰 체인(trust chain)도 함께 반환됩니다.
튜토리얼 (Tutorial)
나만의 인증 기관(CA) 구축하기 가이드를 참고하면 단계별 튜토리얼을 볼 수 있어요.
PKI에 외부 관리 키를 사용하는 방법이 궁금하다면 관리 키를 사용한 PKI 시크릿 엔진 문서도 함께 살펴보세요.
API
PKI 시크릿 엔진은 완전한 HTTP API를 제공해요. 자세한 내용은 PKI 시크릿 엔진 API 문서를 참고해 주세요.
더 알아보기 (Learn more)
- Vault PKI 시크릿 엔진의 전체 API 목록은 PKI API 문서에서 확인하세요.
- 실제 인증 기관 구축 실습은 Build Your Own CA 튜토리얼을 참고하세요.