인증서 공급자를 사용한 자체 관리형 인증서 서명 AWS IoT Core - AWS IoT Core

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

인증서 공급자를 사용한 자체 관리형 인증서 서명 AWS IoT Core

AWS IoT 플릿 프로비저닝에서 AWS IoT Core 인증서 서명 요청 (CSR) 에 서명하는 인증서 공급자를 생성할 수 있습니다. 인증서 제공자는 플릿 프로비저닝을 위해 Lambda 함수와 MQTT CreateCertificateFromCsr API를 참조합니다. Lambda 함수는 CSR을 수락하고 서명된 클라이언트 인증서를 반환합니다.

인증서 공급자가 없는 경우 AWS 계정, 플릿 프로비저닝에서 CreateCertificateFromCsr MQTT API를 호출하여 CSR에서 인증서를 생성합니다. 인증서 제공자를 생성한 후에는 MQTT API의 동작이 변경되며 이 CreateCertificateFromCsr MQTT API에 대한 모든 호출은 인증서 제공자를 호출하여 인증서를 발급합니다.

AWS IoT Core 인증서 제공자를 사용하면 공개적으로 신뢰할 수 있는 다른 CA 또는 자체 공개 키 인프라 (PKI) 와 AWS Private CA같은 사설 인증 기관 (CA) 을 활용하여 CSR에 서명하는 솔루션을 구현할 수 있습니다. 또한 인증서 공급자를 사용하여 유효 기간, 서명 알고리즘, 발급자, 확장자와 같은 클라이언트 인증서 필드를 사용자 지정할 수 있습니다.

중요

인증서 제공자는 하나씩만 생성할 수 있습니다. AWS 계정서명 동작 변경은 인증서 공급자를 에서 삭제할 때까지 CreateCertificateFromCsr MQTT API를 호출하는 전체 플릿에 적용됩니다. AWS 계정

플릿 프로비저닝에서 자체 관리형 인증서 서명이 작동하는 방식

주요 개념

다음 개념은 플릿 프로비저닝에서 AWS IoT 자체 관리형 인증서 서명이 작동하는 방식을 이해하는 데 도움이 되는 세부 정보를 제공합니다. 자세한 내용은 플릿 프로비저닝을 사용하여 디바이스 인증서가 없는 디바이스 프로비저닝을 참조하십시오.

AWS IoT 플릿 프로비저닝

AWS IoT 플릿 프로비저닝 (플릿 프로비저닝의 줄임말) 을 사용하면 디바이스가 처음 연결될 때 디바이스 인증서를 AWS IoT Core 생성하여 AWS IoT Core 디바이스에 안전하게 전달합니다. 플릿 프로비저닝을 사용하여 디바이스 인증서가 없는 디바이스를 연결할 수 있습니다. AWS IoT Core

인증서 서명 요청 (CSR)

플릿 프로비저닝 과정에서 기기는 플릿 프로비저닝 MQTT AWS IoT Core API를 통해 요청을 보냅니다. 이 요청에는 클라이언트 인증서를 생성하기 위해 서명되는 인증서 서명 요청 (CSR) 이 포함됩니다.

AWS 플릿 프로비저닝에서의 관리형 인증서 서명

AWS managed는 플릿 프로비저닝의 인증서 서명을 위한 기본 설정입니다. AWS 관리형 인증서 서명을 사용하면 자체 AWS IoT Core CA를 사용하여 CSR에 서명합니다.

플릿 프로비저닝의 자체 관리형 인증서 서명

자체 관리는 플릿 프로비저닝의 인증서 서명을 위한 또 다른 옵션입니다. 자체 관리형 인증서 서명을 사용하면 AWS IoT Core 인증서 공급자를 만들어 CSR에 서명할 수 있습니다. 자체 관리형 인증서 서명을 사용하면 AWS 사설 CA, 공개적으로 신뢰할 수 있는 다른 CA 또는 자체 PKI (공개 키 인프라) 에서 생성한 CA로 CSR에 서명할 수 있습니다.

AWS IoT Core 인증서 제공업체

AWS IoT Core 인증서 제공자 (인증서 제공자의 줄임말) 는 플릿 프로비저닝의 자체 관리형 인증서 서명에 사용되는 고객 관리 리소스입니다.

다이어그램

다음 다이어그램은 AWS IoT 플릿 프로비저닝에서 셀프 인증서 서명이 작동하는 방식을 간략하게 보여줍니다.

AWS IoT Core 플릿 프로비저닝을 위한 인증서 제공업체
  • 새로운 IoT 디바이스를 제조하거나 플릿에 도입할 때는 자체 인증을 위한 클라이언트 인증서가 필요합니다. AWS IoT Core

  • 플릿 프로비저닝 프로세스의 일환으로 디바이스는 플릿 프로비저닝 MQTT API를 통해 클라이언트 인증서를 요청합니다. AWS IoT Core 이 요청에는 인증서 서명 요청 (CSR) 이 포함됩니다.

  • AWS IoT Core 인증서 제공자를 호출하고 CSR을 입력으로 제공자에게 전달합니다.

  • 인증서 제공자는 CSR을 입력으로 받아 클라이언트 인증서를 발급합니다.

    AWS 관리형 인증서 서명의 경우 AWS IoT Core 자체 CA를 사용하여 CSR에 서명하고 클라이언트 인증서를 발급합니다.

  • 디바이스는 발급된 클라이언트 인증서를 사용하여 플릿 프로비저닝을 계속하고 보안 연결을 설정합니다. AWS IoT Core

인증서 제공자 Lambda 함수 입력

AWS IoT Core 디바이스가 등록되면 Lambda 함수에 다음 객체를 보냅니다. 의 certificateSigningRequest 값은 요청에 제공된 개인 정보 보호 강화 메일 (PEM) 형식의 CSR입니다. CreateCertificateFromCsr 요청 시 연결하는 데 AWS IoT Core 사용된 보안 주체의 principalId ID입니다. CreateCertificateFromCsr clientIdMQTT 연결에 설정된 클라이언트 ID입니다.

{ "certificateSigningRequest": "string", "principalId": "string", "clientId": "string" }

인증서 제공자 Lambda 함수 반환 값

Lambda 함수는 값이 포함된 응답을 반환해야 합니다. certificatePem 다음은 성공적인 응답의 예시입니다. AWS IoT Core 반환 값 (certificatePem) 을 사용하여 인증서를 생성합니다.

{ "certificatePem": "string" }

등록이 CreateCertificateFromCsr 성공하면 certificatePem CreateCertificateFromCsr 응답에 동일한 내용을 반환합니다. 자세한 내용은 의 응답 페이로드 예제를 참조하십시오. CreateCertificateFromCsr

Lambda 함수 예제

인증서 제공자를 생성하기 전에 Lambda 함수를 생성하여 CSR에 서명해야 합니다. 다음은 Python의 Lambda 함수 예제입니다. 이 함수는 사설 CA와 서명 알고리즘을 사용하여 입력 CSR에 AWS Private CA 서명하도록 호출합니다SHA256WITHRSA. 반환된 클라이언트 인증서는 1년 동안 유효합니다. 사설 CA에 대한 자세한 내용 AWS Private CA 및 생성 방법은 사설 CA란 AWS 무엇입니까? 를 참조하십시오. 그리고 사설 CA 만들기.

import os import time import uuid import boto3 def lambda_handler(event, context): ca_arn = os.environ['CA_ARN'] csr = (event['certificateSigningRequest']).encode('utf-8') acmpca = boto3.client('acm-pca') cert_arn = acmpca.issue_certificate( CertificateAuthorityArn=ca_arn, Csr=csr, Validity={"Type": "DAYS", "Value": 365}, SigningAlgorithm='SHA256WITHRSA', IdempotencyToken=str(uuid.uuid4()) )['CertificateArn'] # Wait for certificate to be issued time.sleep(1) cert_pem = acmpca.get_certificate( CertificateAuthorityArn=ca_arn, CertificateArn=cert_arn )['Certificate'] return { 'certificatePem': cert_pem }
중요
  • Lambda 함수에서 반환된 인증서는 인증서 서명 요청 (CSR) 과 동일한 주체 이름 및 공개 키를 가져야 합니다.

  • Lambda 함수는 5초 내에 실행을 완료해야 합니다.

  • Lambda 함수는 인증서 제공자 리소스와 AWS 계정 동일한 리전에 있어야 합니다.

  • AWS IoT 서비스 보안 주체에 Lambda 함수에 대한 호출 권한을 부여해야 합니다. 부정 대리인 문제가 생기지 않도록 하려면 호출 권한을 sourceArn 설정하고 sourceAccount 호출하는 것이 좋습니다. 자세한 설명은 교차 서비스 혼동된 대리자 예방을 참조하세요.

Lambda에 대한 다음 리소스 기반 정책 예제는 Lambda 함수를 호출할 AWS IoT 권한을 부여합니다.

{ "Version": "2012-10-17", "Id": "InvokePermission", "Statement": [ { "Sid": "LambdaAllowIotProvider", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnLike": { "AWS:SourceArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" } } } ] }

플릿 프로비저닝을 위한 자체 관리형 인증서 서명

또는 를 사용하여 플릿 프로비저닝용 자체 관리형 인증서 서명을 선택할 수 있습니다. AWS CLI AWS Management Console

자체 관리형 인증서 서명을 선택하려면 플릿 프로비저닝에서 CSR에 서명할 AWS IoT Core 인증서 공급자를 만들어야 합니다. AWS IoT Core 인증서 제공자를 호출하여 CSR을 입력으로 받아 클라이언트 인증서를 반환합니다. 인증서 제공자를 생성하려면 CreateCertificateProvider API 작업 또는 create-certificate-provider CLI 명령을 사용합니다.

참고

인증서 제공자를 생성한 후에는 플릿 프로비저닝을 위한 CreateCertificateFromCsr API의 동작이 변경되어 에 대한 모든 CreateCertificateFromCsr 호출이 인증서 제공자를 호출하여 인증서를 생성합니다. 인증서 제공자가 생성된 후 이 동작이 변경되는 데 몇 분 정도 걸릴 수 있습니다.

aws iot create-certificate-provider \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \ --accountDefaultForOperations CreateCertificateFromCsr

다음은 이 명령의 예제 출력입니다.

{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }

자세한 내용은 AWS IoTAPI CreateCertificateProvider 참조를 참조하십시오.

자체 관리형 인증서 서명을 사용하여 AWS Management Console선택하려면 다음 단계를 따르세요.

  1. AWS IoT 콘솔로 이동합니다.

  2. 왼쪽 탐색의 보안에서 인증서 서명을 선택합니다.

  3. 인증서 서명 페이지의 인증서 서명 세부 정보에서 인증서 서명 방법 편집을 선택합니다.

  4. 인증서 서명 방법 편집 페이지의 인증서 서명 방법에서 자체 관리를 선택합니다.

  5. 자체 관리형 설정 섹션에서 인증서 제공자의 이름을 입력한 다음 Lambda 함수를 생성하거나 선택합니다.

  6. 인증서 서명 업데이트를 선택합니다.

AWS CLI 인증서 제공자를 위한 명령

인증서 제공자 생성

인증서 제공자를 생성하려면 CreateCertificateProvider API 작업 또는 create-certificate-provider CLI 명령을 사용합니다.

참고

인증서 제공자를 생성한 후에는 플릿 프로비저닝을 위한 CreateCertificateFromCsr API의 동작이 변경되어 에 대한 모든 CreateCertificateFromCsr 호출이 인증서 제공자를 호출하여 인증서를 생성합니다. 인증서 제공자가 생성된 후 이 동작이 변경되는 데 몇 분 정도 걸릴 수 있습니다.

aws iot create-certificate-provider \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \ --accountDefaultForOperations CreateCertificateFromCsr

다음은 이 명령의 예제 출력입니다.

{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }

자세한 내용은 AWS IoTAPI CreateCertificateProvider 참조를 참조하십시오.

인증서 제공자 업데이트

인증서 제공자를 업데이트하려면 UpdateCertificateProvider API 작업 또는 update-certificate-provider CLI 명령을 사용합니다.

aws iot update-certificate-provider \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-2 \ --accountDefaultForOperations CreateCertificateFromCsr

다음은 이 명령의 예제 출력입니다.

{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }

자세한 내용은 AWS IoTAPI UpdateCertificateProvider 참조를 참조하십시오.

인증서 제공자 설명

인증서 제공자를 설명하려면 DescribeCertificateProvider API 작업 또는 describe-certificate-provider CLI 명령을 사용합니다.

aws iot describe-certificate-provider --certificateProviderName my-certificate-provider

다음은 이 명령의 예제 출력입니다.

{ "certificateProviderName": "my-certificate-provider", "lambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "accountDefaultForOperations": [ "CreateCertificateFromCsr" ], "creationDate": "2022-11-03T00:15", "lastModifiedDate": "2022-11-18T00:15" }

자세한 내용은 AWS IoTAPI DescribeCertificateProvider 참조를 참조하십시오.

인증서 제공자 삭제

인증서 제공자를 삭제하려면 DeleteCertificateProvider API 작업 또는 delete-certificate-provider CLI 명령을 사용합니다. 인증서 제공자 리소스를 CreateCertificateFromCsr 삭제하면 의 동작이 재개되고 AWS IoT AWS IoT CSR에서 서명한 인증서가 생성됩니다.

aws iot delete-certificate-provider --certificateProviderName my-certificate-provider

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 AWS IoTAPI DeleteCertificateProvider 참조를 참조하십시오.

인증서 제공자 목록

내 인증서 제공자를 나열하려면 ListCertificateProviders API 작업 또는 list-certificate-providers CLI 명령을 사용합니다. AWS 계정

aws iot list-certificate-providers

다음은 이 명령의 예제 출력입니다.

{ "certificateProviders": [ { "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" } ] }

자세한 내용은 AWS IoTAPI ListCertificateProvider참조를 참조하십시오.