고객 관리형 도메인 생성 및 구성
도메인 구성을 사용하면 AWS IoT Core에 연결할 사용자 지정 FQDN(정규화된 도메인 이름)을 지정할 수 있습니다. 고객 관리형 도메인(사용자 지정 도메인이라고도 함)을 사용하면 다음과 같은 많은 이점이 있습니다. 브랜딩 목적으로 고객에게 자체 도메인 또는 회사 자체 도메인을 노출할 수 있습니다. 새 브로커를 가리키도록 자체 도메인을 쉽게 변경할 수 있습니다. 다중 테넌시를 지원하여 동일한 AWS 계정 내에서 서로 다른 도메인을 가진 고객에게 서비스를 제공할 수 있습니다. 자체 서버 인증서 세부 정보를 관리할 수 있습니다. 예를 들어 인증서에 서명하는 데 사용되는 루트 인증 기관(CA) 서명 알고리즘, 인증서 체인 깊이, 및 인증서의 수명 주기입니다.
사용자 지정 도메인으로 도메인 구성을 설정하는 워크플로우는 다음 세 단계로 구성됩니다.
AWS Certificate Manager에 서버 인증서 등록
사용자 지정 도메인으로 도메인 구성을 생성하기 전에 AWS Certificate Manager(ACM)에 서버 인증서 체인을 등록해야 합니다. 다음 세 가지 유형의 서버 인증서를 사용할 수 있습니다.
참고
AWS IoT Core는 인증서가 Mozilla의 신뢰할 수 있는 CA 번들
인증서 요구 사항
인증서를 가져오기 위한 사전 조건에서 인증서를 ACM으로 가져오기 위한 요구 사항을 확인하세요. 이러한 요구 사항 외에도 AWS IoT Core는 다음과 같은 요구 사항을 추가합니다.
리프 인증서에는 값이 serverAuth(TLS 웹 서버 인증)인 확장 키 사용 x509 v3 확장을 반드시 포함해야 합니다. ACM에서 인증서를 요청하면 이 확장이 자동으로 추가됩니다.
최대 인증서 체인 깊이는 5개의 인증서입니다.
최대 인증서 체인 크기는 16KB입니다.
지원되는 암호화 알고리즘 및 키 크기에는 RSA 2,048비트(RSA_2048) 및 ECDSA 256비트(EC_prime256v1)가 포함됩니다.
여러 도메인에 인증서 한 개 사용
하나의 인증서를 사용하여 여러 하위 도메인을 처리하려는 경우 CN(일반 이름) 또는 SAN(주체 대체 이름) 필드에 와일드카드 도메인을 사용합니다. 예를 들어, *.iot.example.com
을 사용하여 dev.iot.example.com, qa.iot.example.com 및 prod.iot.example.com을 처리합니다. 각 FQDN에는 자체 도메인 구성이 필요하지만 둘 이상의 도메인 구성에서 동일한 와일드카드 값을 사용할 수 있습니다. CN 또는 SAN은 사용자 지정 도메인으로 사용할 FQDN을 처리해야 합니다. SAN이 있는 경우 CN은 무시되고 SAN은 사용자 정의 도메인으로 사용하려는 FQDN을 포함해야 합니다. 이러한 처리는 정확히 일치 또는 와일드카드 일치를 통해 가능할 수 있습니다. 와일드카드 인증서가 검증되고 계정에 등록되면 해당 지역의 다른 계정은 인증서와 겹치는 사용자 지정 도메인을 만들 수 없습니다.
다음 단원에서는 각 유형의 인증서를 가져오는 방법에 대해 설명합니다. 모든 인증서 리소스에는 도메인 구성을 생성할 때 사용하는 ACM에 등록된 Amazon 리소스 이름(ARN)이 필요합니다.
ACM에서 생성된 공인 인증서
RequestCertificate API를 사용하여 사용자 지정 도메인의 공인 인증서를 생성할 수 있습니다. 이 방법으로 인증서를 생성하면 ACM에서 사용자 지정 도메인의 소유권을 확인합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서의 공인 인증서 요청을 참조하세요.
퍼블릭 CA에서 서명한 외부 인증서
퍼블릭 CA(Mozilla의 신뢰할 수 있는 CA-번들에 포함된 CA)로 서명한 서버 인증서가 이미 있는 경우 ImportCertificate API를 사용하여 인증서를 ACM으로 직접 가져올 수 있습니다. 이 작업 및 필수 구성 요소 및 인증서 형식 요구 사항에 대한 자세한 내용은 인증서 가져오기를 참조하세요.
프라이빗 CA에서 서명한 외부 인증서
프라이빗 CA에서 서명하거나 자체 서명된 서버 인증서가 이미 있는 경우 해당 인증서를 사용하여 도메인 구성을 생성할 수 있지만 도메인 소유권을 확인하기 위해서 ACM에서 추가 공인 인증서를 생성하기도 해야 합니다. 이렇게 하려면 ImportCertificate API를 사용하여 ACM에 서버 인증서 체인을 등록하세요. 이 작업 및 필수 구성 요소 및 인증서 형식 요구 사항에 대한 자세한 내용은 인증서 가져오기를 참조하세요.
검증 인증서 생성
인증서를 ACM으로 가져온 후 RequestCertificate API를 사용하여 사용자 지정 도메인의 공인 인증서를 생성합니다. 이 방법으로 인증서를 생성하면 ACM에서 사용자 지정 도메인의 소유권을 확인합니다. 자세한 내용은 공인 인증서 요청을 참조하세요. 도메인 구성을 생성할 때 이 공인 인증서를 검증 인증서로 사용합니다.
도메인 구성 생성
CreateDomainConfiguration API를 사용하여 사용자 지정 도메인의 구성 가능한 엔드포인트를 생성합니다. 사용자 지정 도메인의 도메인 구성은 다음으로 구성됩니다.
-
domainConfigurationName
도메인 구성을 식별하는 사용자 정의 이름입니다.
IoT:
로 시작하는 도메인 구성 이름은 기본 엔드포인트용으로 예약되어 있으므로 사용할 수 없습니다. 또한 이 값은 AWS 리전별로 고유해야 합니다. -
domainName
디바이스가 AWS IoT Core에 연결하는 데 사용하는 FQDN입니다. AWS IoT Core는 도메인 구성을 적용하기 위해 서버 이름 표시(SNI)를 활용합니다. 디바이스는 연결할 때 이 확장을 사용하고 도메인 구성에 지정된 도메인 이름과 동일한 서버 이름을 전달해야 합니다.
-
serverCertificateArns
ACM에 등록한 서버 인증서 체인의 ARN입니다. AWS IoT Core는 현재 하나의 서버 인증서만 지원합니다.
-
validationCertificateArn
사용자 지정 도메인의 소유권을 확인하기 위해 ACM에서 생성한 퍼블릭 인증서의 ARN입니다. 공개적으로 서명되거나 ACM에서 생성된 서버 인증서를 사용하는 경우에는 이 인수가 필요하지 않습니다.
-
defaultAuthorizerName (optional)
엔드포인트에서 사용할 사용자 지정 권한 부여자의 이름입니다.
-
allowAuthorizerOverride
요청의 HTTP 헤더에 다른 권한 부여자를 지정하여 디바이스가 기본 권한 부여자를 재정의할 수 있는지 여부를 지정하는 부울 값입니다.
defaultAuthorizerName
에 값이 지정된 경우 이 값이 필요합니다. -
serviceType
AWS IoT Core는 현재
DATA
서비스 유형만 지원합니다.DATA
을(를) 지정할 때 AWS IoT은(는) 엔드포인트 유형iot:Data-ATS
의 엔드포인트를 반환합니다. -
TlsConfig
(선택 사항)도메인의 TLS 구성을 지정하는 객체입니다. 자세한 내용은 도메인 구성에서 TLS 설정 구성 단원을 참조하십시오.
-
serverCertificateConfig
(선택 사항)도메인의 서버 인증서 구성을 지정하는 객체입니다. 자세한 내용은 OCSP 스테이플링을 위한 서버 인증서 구성 단원을 참조하십시오.
다음 AWS CLI 명령은 iot.example.com의 도메인 구성을 생성합니다.
aws iot create-domain-configuration --domain-configuration-name "
myDomainConfigurationName
" --service-type "DATA" --domain-name "iot.example.com" --server-certificate-arnsserverCertARN
--validation-certificate-arnvalidationCertArn
참고
도메인 구성을 생성한 후 AWS IoT Core에서 사용자 지정 서버 인증서를 제공할 때까지 최대 60분이 소요될 수 있습니다.
자세한 내용은 도메인 구성 관리 단원을 참조하십시오.
DNS 레코드 생성
서버 인증서 체인을 등록하고 도메인 구성을 생성한 후 사용자 지정 도메인이 AWS IoT 도메인을 가리키도록 DNS 레코드를 생성합니다. 이 레코드는 iot:Data-ATS
유형의 AWS IoT 엔드포인트를 가리켜야 합니다. DescribeEndpoint API를 사용하여 엔드포인트를 얻을 수 있습니다.
다음 AWS CLI 명령은 엔드포인트를 얻는 방법을 보여줍니다.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
iot:Data-ATS
엔드포인트를 얻은 후 사용자 지정 도메인에서 이 AWS IoT 엔드포인트로의 CNAME
레코드를 생성합니다. 동일한 AWS 계정으로 여러 사용자 정의 도메인을 생성하는 경우 이 도메인의 별칭을 이 동일한 iot:Data-ATS
엔드포인트로 지정합니다.
문제 해결
디바이스를 사용자 지정 도메인에 연결하는 데 문제가 있는 경우 AWS IoT Core가 서버 인증서를 수락하고 적용했는지 확인합니다. AWS IoT Core가 AWS IoT Core 콘솔 또는 AWS CLI 중 하나를 사용하여 인증서를 수락했는지 확인할 수 있습니다.
AWS IoT Core 콘솔에서 설정 페이지로 이동하여 도메인 구성 이름을 선택합니다. 서버 인증서 세부 정보 섹션에서 상태 및 상태 세부 정보를 확인합니다. 인증서가 유효하지 않은 경우 ACM에서 이전 섹션에 나열된 인증서 요구 사항에 부합하는 인증서로 바꿉니다. 인증서에 동일한 ARN이 있는 경우 AWS IoT Core는 해당 ARN을 선택하여 자동으로 적용합니다.
AWS CLI를 사용하여 인증서 상태를 확인하려면 DescribeDomainConfiguration API를 호출하고 도메인 구성 이름을 지정합니다.
참고
인증서가 유효하지 않은 경우 AWS IoT Core는 유효한 최신 인증서를 계속 제공합니다.
다음 openssl 명령을 사용하여 엔드포인트에서 제공되는 인증서를 확인할 수 있습니다.
openssl s_client -connect
custom-domain-name
:8883 -showcerts
-servername custom-domain-name