프라이빗 최종 엔터티 인증서 발급 - AWS Private Certificate Authority

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

프라이빗 최종 엔터티 인증서 발급

프라이빗 CA가 있으면 AWS Certificate Manager(ACM) 또는 AWS Private CA 둘 중 하나에서 프라이빗 최종 엔터티 인증서를 요청할 수 있습니다. 두 가지 서비스의 기능은 다음 표에서 비교가 되어 있습니다.

기능

ACM

AWS Private CA

최종 엔터티 인증서 발급

✓(RequestCertificate 또는 콘솔 사용)

✓ (사용 IssueCertificate)

로드 밸런서 및 인터넷 연결 AWS 서비스와의 연결

지원되지 않음

관리형 인증서 갱신 ACM을 통해 간접적으로 지원됩니다.

콘솔 지원

지원되지 않음

API 지원

CLI 지원

AWS Private CA에서 인증서를 생성할 때 인증서 유형과 경로 길이를 지정하는 템플릿을 따릅니다. 인증서를 생성하는 API 또는 CLI 문에 템플릿 ARN이 제공되지 않은 경우 기본적으로 EndEntityCertificate/V1 템플릿이 적용됩니다. 사용 가능한 인증서 템플릿에 대한 자세한 내용은 인증서 템플릿 이해하기 단원을 참조하십시오 .

ACM 인증서는 대중의 신뢰를 중심으로 설계되었지만 AWS Private CA는 프라이빗 PKI의 요구 사항을 충족합니다. 따라서 ACM에서 허용하지 않는 방식으로 AWS Private CA API 및 CLI를 사용하여 인증서를 구성할 수 있습니다. 여기에는 다음이 포함됩니다.

AWS Private CA를 사용하여 프라이빗 TLS 인증서를 생성한 후 ACM으로 가져와 지원되는 AWS 서비스와 함께 사용할 수 있습니다.

참고

아래 절차, issue-certificate 명령 또는 IssueCertificateAPI 작업으로 생성한 인증서는 외부에서 사용하기 위해 직접 내보낼 수 없습니다. AWS 하지만 프라이빗 CA를 사용하여 ACM을 통해 발급된 인증서에 서명할 수 있으며, 이러한 인증서를 해당 비밀 키와 함께 내보낼 수 있습니다. 자세한 내용은 ACM 사용 설명서프라이빗 인증서 요청프라이빗 인증서 내보내기를 참조하세요.

표준 인증서 발급(AWS CLI)

AWS Private CACLI 명령 issue-certificate 또는 API 작업을 IssueCertificate사용하여 최종 엔티티 인증서를 요청할 수 있습니다. 이 명령을 사용하려면 인증서를 발급하는 데 사용할 프라이빗 CA의 Amazon 리소스 이름(ARN)이 필요합니다. 또한 OpenSSL과 같은 프로그램을 사용하여 인증서 서명 요청(CSR)을 생성해야 합니다.

AWS Private CA API 또는 AWS CLI를 사용하여 프라이빗 인증서를 발급하는 경우 인증서는 관리되지 않으므로 ACM 콘솔, ACM CLI 또는 ACM API를 사용하여 인증서를 보거나 내보낼 수 없으며 인증서가 자동으로 갱신되지 않습니다. 하지만 PCA get-certificate 명령을 사용하여 인증서 세부 정보를 검색할 수 있으며 CA를 소유한 경우 감사 보고서를 생성할 수 있습니다.

인증서 생성 시 고려 사항

  • RFC 5280에 따라, 제공하는 도메인 이름(일반 이름)의 길이는 마침표를 포함하여 64 옥텟(자)을 초과할 수 없습니다. 더 긴 도메인 이름을 추가하려면 최대 253옥텟 길이의 이름을 지원하는 보안 주체 대체 이름 필드에 해당 이름을 지정하십시오.

  • AWS CLI버전 1.6.3 이상을 사용하는 경우 CSR과 같은 base64로 인코딩된 입력 파일을 지정할 fileb:// 때 접두사를 사용하십시오. 이렇게 하면 AWS Private CA는 데이터를 올바르게 파싱합니다.

다음 OpenSSL 명령은 인증서에 대한 CSR 및 개인 키를 생성합니다.

$ openssl req -out csr.pem -new -newkey rsa:2048 -nodes -keyout private-key.pem

다음과 같이 CSR의 콘텐츠를 검사할 수 있습니다.

$ openssl req -in csr.pem -text -noout

결과 출력은 다음과 같은 축약된 예제와 비슷해야 합니다.

Certificate Request: Data: Version: 0 (0x0) Subject: C=US, O=Big Org, CN=example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:ca:85:f4:3a:b7:5f:e2:66:be:fc:d8:97:65:3d: a4:3d:30:c6:02:0a:9e:1c:ca:bb:15:63:ca:22:81: 00:e1:a9:c0:69:64:75:57:56:53:a1:99:ee:e1:cd: ... aa:38:73:ff:3d:b7:00:74:82:8e:4a:5d:da:5f:79: 5a:89:52:e7:de:68:95:e0:16:9b:47:2d:57:49:2d: 9b:41:53:e2:7f:e1:bd:95:bf:eb:b3:a3:72:d6:a4: d3:63 Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha256WithRSAEncryption 74:18:26:72:33:be:ef:ae:1d:1e:ff:15:e5:28:db:c1:e0:80: 42:2c:82:5a:34:aa:1a:70:df:fa:4f:19:e2:5a:0e:33:38:af: 21:aa:14:b4:85:35:9c:dd:73:98:1c:b7:ce:f3:ff:43:aa:11: .... 3c:b2:62:94:ad:94:11:55:c2:43:e0:5f:3b:39:d3:a6:4b:47: 09:6b:9d:6b:9b:95:15:10:25:be:8b:5c:cc:f1:ff:7b:26:6b: fa:81:df:e4:92:e5:3c:e5:7f:0e:d8:d9:6f:c5:a6:67:fb:2b: 0b:53:e5:22

다음 명령은 인증서를 생성합니다. 템플릿이 지정되지 않았으므로 기본적으로 기본 최종 엔터티 인증서가 발급됩니다.

$ aws acm-pca issue-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \ --csr fileb://csr.pem \ --signing-algorithm "SHA256WITHRSA" \ --validity Value=365,Type="DAYS"

발급된 인증서의 ARN이 반환됩니다.

{ "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID" }
참고

AWS Private CA는 issue-certificate 명령을 수신하면 즉시 일련 번호가 포함된 ARN을 반환합니다. 하지만 인증서 처리는 비동기적으로 이루어지므로 여전히 실패할 수 있습니다. 이 경우 새 ARN을 사용하는 get-certificate 명령도 실패합니다.

APIPassThrough 템플릿을 사용하여 사용자 지정 보안 주체 이름이 포함된 인증서를 발급합니다.

이 예제에서는 사용자 지정된 보안 주체 이름 요소가 포함된 인증서가 발급됩니다. 표준 인증서 발급(AWS CLI)와 같은 CSR을 제공하는 것 외에도 issue-certificate 명령에 두 개의 추가 인수, 즉 APIPassThrough 템플릿의 ARN과 사용자 지정 속성 및 해당 객체 식별자(OID)를 지정하는 JSON 구성 파일을 전달합니다. CustomAttributes와 함께 StandardAttributes를 사용할 수는 없지만 표준 OID를 CustomAttributes의 일부로 전달할 수는 있습니다. 기본 보안 주체 이름 OID는 다음 표에 나열되어 있습니다(RFC 4519글로벌 OID 참조 데이터베이스의 정보).

보안 주체 이름

약어

객체 ID

countryName

c

2.5.4.6

commonName

cn

2.5.4.3

dnQualifier[고유 이름 한정자]

2.5.4.46

generationQualifier

2.5.4.44

givenName

2.5.4.42

initials

2.5.4.43

locality

l

2.5.4.7

organizationName

o

2.5.4.10

organizationalUnitName

ou

2.5.4.11

pseudonym

2.5.4.65

serialNumber

2.5.4.5

st [state]

2.5.4.8

surname

sn

2.5.4.4

title

2.5.4.12

domainComponent

dc

0.9.2342.19200300.100.1.25

userid

0.9.2342.19200300.100.1.1

샘플 구성 파일 api_passthrough_config.txt에는 다음 코드가 들어 있습니다.

{ "Subject": { "CustomAttributes": [ { "ObjectIdentifier": "2.5.4.6", "Value": "US" }, { "ObjectIdentifier": "1.3.6.1.4.1.37244.1.1", "Value": "BCDABCDA12341234" }, { "ObjectIdentifier": "1.3.6.1.4.1.37244.1.5", "Value": "CDABCDAB12341234" } ] } }

인증서를 발급하려면 다음 명령을 사용합니다.

$ aws acm-pca issue-certificate \ --validity Type=DAYS,Value=10 --signing-algorithm "SHA256WITHRSA" \ --csr fileb://csr.pem \ --api-passthrough file://api_passthrough_config.txt \ --template-arn arn:aws:acm-pca:::template/BlankEndEntityCertificate_APIPassthrough/V1 \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566

발급된 인증서의 ARN이 반환됩니다.

{ "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID" }

다음과 같이 로컬에서 인증서를 검색합니다.

$ aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \ --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID | \ jq -r .'Certificate' > cert.pem

OpenSSL을 사용하여 인증서의 내용을 검사할 수 있습니다.

$ openssl x509 -in cert.pem -text -noout
참고

발급한 각 인증서에 사용자 지정 특성을 전달하는 프라이빗 CA를 만들 수도 있습니다.

APIPassThrough 템플릿을 사용하여 사용자 지정 확장이 포함된 인증서를 발급합니다.

이 예제에서는 사용자 지정 확장이 포함된 인증서가 발급됩니다. 이를 위해서는 APIPassThrough 템플릿의 ARN, 사용자 지정 확장을 지정하는 JSON 구성 파일, 표준 인증서 발급(AWS CLI)에 표시된 것과 같은 CSR이라는 세 가지 인수를 issue-certificate 명령에 전달해야 합니다.

샘플 구성 파일 api_passthrough_config.txt에는 다음 코드가 들어 있습니다.

{ "Extensions": { "CustomExtensions": [ { "ObjectIdentifier": "2.5.29.30", "Value": "MBWgEzARgg8ucGVybWl0dGVkLnRlc3Q=", "Critical": true } ] } }

사용자 지정 인증서는 다음과 같이 발급됩니다.

$ aws acm-pca issue-certificate \ --validity Type=DAYS,Value=10 --signing-algorithm "SHA256WITHRSA" \ --csr fileb://csr.pem \ --api-passthrough file://api_passthrough_config.txt \ --template-arn arn:aws:acm-pca:::template/EndEntityCertificate_APIPassthrough/V1 \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566

발급된 인증서의 ARN이 반환됩니다.

{ "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID" }

다음과 같이 로컬에서 인증서를 검색합니다.

$ aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \ --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID | \ jq -r .'Certificate' > cert.pem

OpenSSL을 사용하여 인증서의 내용을 검사할 수 있습니다.

$ openssl x509 -in cert.pem -text -noout