자습서: 신뢰할 수 있는 플랫폼 모듈(TPM)을 사용하여 AWS IoT Greengrass Nucleus Lite 보호 - AWS IoT Greengrass

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

자습서: 신뢰할 수 있는 플랫폼 모듈(TPM)을 사용하여 AWS IoT Greengrass Nucleus Lite 보호

이 자습서에서는 AWS IoT Greengrass nucleus lite에 대한 신뢰할 수 있는 플랫폼 모듈(TPM) 지원을 활성화하고 구성하는 방법을 설명합니다. TPM은 보안 키 스토리지를 위한 하드웨어 기반 신뢰 루트를 제공합니다. 이 보안 기능은 암호화 작업과 민감한 자격 증명을 보호하여 디바이스 보안 및 무결성을 향상시킵니다.

이 통합을 완료하면 AWS IoT Greengrass 코어 디바이스는 ID 및 AWS IoT 서비스와의 통신에 TPM 보호 프라이빗 키를 사용합니다.

AWS IoT Greengrass 디바이스의 보안에 대한 자세한 내용은 섹션을 참조하세요AWS IoT Greengrass의 보안.

중요

이 메커니즘은 수동 리소스 프로비저닝을 사용하여 AWS IoT Greengrass nucleus lite를 설치하는 경우에만 지원됩니다.

사전 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • TPM 2.0 하드웨어 또는 NitroTPM이 있는 Linux 호환 디바이스

  • Greengrass Nucleus Lite가 설치된 개발자 시스템입니다. 자세한 내용은 AWS IoT Greengrass 코어 소프트웨어 설치(콘솔)를 참조하세요.

  • 이 자습서의 지침은 Ubuntu 24.04 LTS를 기준으로 정의됩니다.

  • Linux TPM2 소프트웨어 스택을 지원하는 모든 Linux 배포판에서 이 메커니즘 지원이 가능합니다.

  • AWS CLI가 설치되고 다음 권한으로 구성된 개발용 머신:

    • AWS IoT 리소스 생성 및 관리

    • IAM 역할 및 정책 생성 및 관리

  • 디바이스에서 루트 권한 또는 sudo 권한.

이 자습서에는 TPM2 칩을 하드웨어 보안 모듈(HSM)로 사용하여 프라이빗 키를 생성하는 방법과 AWS IoT 사물 인증서를 생성하는 데 사용되는 CSR에 대한 지침이 포함되어 있습니다.

1단계: NitroTPM 인스턴스 설정

  1. NitroTPM 인스턴스를 설정합니다. 자세한 내용은 NitroTPM을 참조하세요.

  2. 이전 단계에서 생성한 사용자 지정 AMI를 사용하여 최종 인스턴스를 시작합니다.

    중요

    SSH에 연결할 때는 대신 ubuntu 사용자를 사용합니다root.

  3. 다음 명령을 실행하여 TPM 디바이스가 있고 작동하는지 확인합니다.

    ls -la /dev/tpm*

    /dev/tpm0/dev/tpmrm0 디바이스가 표시되어야 합니다.

2단계: TPM 도구 설치 및 구성

  1. 다음 명령을 실행하여 필요한 패키지를 설치합니다.

    sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
  2. 다음 명령을 실행하여 TPM 디바이스의 권한을 확인합니다.

    ls -l /dev/tpm0 # Should be owned by tss:root with permissions 0660 ls -l /dev/tpmrm0 # Should be owned by tss:tss with permissions 0660

3단계: OpenSSL TPM2 공급자 구성

  1. OpenSSL 구성 파일을 편집합니다.

    sudo vi /etc/ssl/openssl.cnf
  2. 다음 구성을 추가합니다.

    [openssl_init] providers = provider_sect [provider_sect] default = default_sect tpm2 = tpm2_sect [default_sect] activate = 1 [tpm2_sect] identity = tpm2 module = /usr/local/lib64/tpm2.so activate = 1
  3. 필요에 따라 모듈 경로를 조정합니다. 다음을 사용하여 올바른 경로를 찾을 수 있습니다.

    find /usr -name "tpm2.so"

4단계: 영구 TPM 키 생성

  1. 다음 명령을 실행하여 기본 키를 생성합니다.

    sudo tpm2_createprimary -C o -c primary.ctx
  2. 다음 명령을 실행하여 ECC 키 객체를 생성합니다.

    sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
  3. 다음 명령을 실행하여 키를 로드합니다.

    sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
  4. 다음 명령을 실행하여 키를 영구화합니다.

    sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002

    이렇게 하면 핸들(예: )이 있는 영구 키가 생성됩니다0x81000002.

5단계: 인증서 서명 요청(CSR) 생성

이 단계에서는 TPM2-protected 프라이빗 키를 사용하여 인증서 서명 요청(CSR)을 생성합니다.

  1. TPM 키를 사용하여 CSR을 생성합니다.

    openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing"
  2. 0x81000002를 선택한 핸들 값으로 바꾸고 TPMThing를 원하는 사물 이름으로 바꿉니다.

6단계: CSR에서 인증서 생성

  1. 개발 컴퓨터에서 AWS IoT 사물에 대한 인증서를 다운로드한 폴더를 생성합니다.

    mkdir greengrass-v2-certs
  2. CSR 파일을 사용하여 AWS IoT 사물에 대한 인증서를 생성하고 개발 컴퓨터에 다운로드합니다.

    aws iot create-certificate-from-csr \ --set-as-active \ --certificate-signing-request file://path_to_device.csr \ --certificate-pem-outfile greengrass-v2-certs/device.pem.crt

    요청에 성공하는 경우 응답은 다음 예제와 비슷하게 보입니다.

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----" }

7단계: TPM 지원으로 Greengrass Nucleus Lite 설정

Greengrass Nucleus Lite에서 TPM 지원을 활성화하려면 다음과 같이 변경합니다.

  1. TPM 액세스를 위해 tss 그룹에 ggcore 사용자를 추가하여 사용자 권한을 구성합니다.

    sudo usermod -a -G tss ggcore
  2. 다음 단계를 완료하여 자격 증명 디렉터리를 업데이트합니다.

    • 자격 증명 디렉터리에서 프라이빗 키 파일을 제거합니다.

      • 영구 TPM 키를 사용하므로 프라이빗 키 파일을 복사할 필요가 없습니다.

    • 새를 해당 자격 증명 디렉터리device.pem.crt에 복사합니다.

  3. 다음 TPM별 구성config.yaml으로를 편집합니다.

    system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ...
  4. 다음 명령을 실행하여 Greengrass Nucleus Lite를 재부팅합니다.

    systemctl restart greengrass-lite.target

문제 해결

TPM2-enabled AWS IoT Greengrass 디바이스를 설정하거나 작동하는 동안 문제가 발생하면 다음 문제 해결 단계를 시도하세요.

TPM 디바이스를 찾을 수 없음(NitroTPM 사용 시)

/dev/tpm0이 없는 경우 다음 단계를 수행합니다.

  1. NitroTPM 지원 인스턴스 유형을 사용하고 있는지 확인합니다.

  2. 를 사용하여 AMI가 생성되었는지 확인합니다--tpm-support v2.0.

  3. 인스턴스가 사용자 지정 AMI에서 시작되었는지 확인합니다.

권한 거부 오류

TPM 액세스 오류가 발생하면 다음을 수행합니다.

  1. 사용자가 tss 그룹에 있는지 확인합니다groups $USER.

  2. 다음 명령을 사용하여 TPM 디바이스의 권한을 확인합니다.

    ls -l /dev/tpm*
  3. tss 그룹에를 추가한 후 로그아웃했다가 다시 로그인했는지 확인합니다.

OpenSSL 공급자 문제

TPM 공급자를 찾을 수 없는 경우 다음을 수행합니다.

  1. 에서 tpm2.so 경로를 확인합니다/etc/ssl/openssl.cnf.

  2. 다음 명령을 실행하여 공급자 설치를 확인합니다.

    openssl list -providers
  3. tpm2-openssl 패키지가 제대로 설치되었는지 확인합니다.

다음 단계

이제 AWS IoT Greengrass 코어 디바이스를 TPM2와 성공적으로 통합했으므로 다음을 수행할 수 있습니다.

  • 보안 AWS IoT Greengrass 디바이스에 구성 요소 배포

  • TPM2 통합을 사용하여 추가 AWS IoT Greengrass 디바이스 설정

AWS IoT Greengrass 디바이스의 보안에 대한 자세한 내용은 섹션을 참조하세요AWS IoT Greengrass의 보안.