기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: 신뢰할 수 있는 플랫폼 모듈(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 인스턴스 설정
-
NitroTPM 인스턴스를 설정합니다. 자세한 내용은 NitroTPM을 참조하세요.
-
이전 단계에서 생성한 사용자 지정 AMI를 사용하여 최종 인스턴스를 시작합니다.
중요
SSH에 연결할 때는 대신
ubuntu사용자를 사용합니다root. -
다음 명령을 실행하여 TPM 디바이스가 있고 작동하는지 확인합니다.
ls -la /dev/tpm*/dev/tpm0및/dev/tpmrm0디바이스가 표시되어야 합니다.
2단계: TPM 도구 설치 및 구성
-
다음 명령을 실행하여 필요한 패키지를 설치합니다.
sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0 -
다음 명령을 실행하여 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 공급자 구성
-
OpenSSL 구성 파일을 편집합니다.
sudo vi /etc/ssl/openssl.cnf -
다음 구성을 추가합니다.
[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 -
필요에 따라 모듈 경로를 조정합니다. 다음을 사용하여 올바른 경로를 찾을 수 있습니다.
find /usr -name "tpm2.so"
4단계: 영구 TPM 키 생성
-
다음 명령을 실행하여 기본 키를 생성합니다.
sudo tpm2_createprimary -C o -c primary.ctx -
다음 명령을 실행하여 ECC 키 객체를 생성합니다.
sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub -
다음 명령을 실행하여 키를 로드합니다.
sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx -
다음 명령을 실행하여 키를 영구화합니다.
sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002이렇게 하면 핸들(예: )이 있는 영구 키가 생성됩니다
0x81000002.
5단계: 인증서 서명 요청(CSR) 생성
이 단계에서는 TPM2-protected 프라이빗 키를 사용하여 인증서 서명 요청(CSR)을 생성합니다.
-
TPM 키를 사용하여 CSR을 생성합니다.
openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing" -
0x81000002를 선택한 핸들 값으로 바꾸고TPMThing를 원하는 사물 이름으로 바꿉니다.
6단계: CSR에서 인증서 생성
-
개발 컴퓨터에서 AWS IoT 사물에 대한 인증서를 다운로드한 폴더를 생성합니다.
mkdir greengrass-v2-certs -
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 지원을 활성화하려면 다음과 같이 변경합니다.
-
TPM 액세스를 위해
tss그룹에ggcore사용자를 추가하여 사용자 권한을 구성합니다.sudo usermod -a -G tss ggcore -
다음 단계를 완료하여 자격 증명 디렉터리를 업데이트합니다.
-
자격 증명 디렉터리에서 프라이빗 키 파일을 제거합니다.
-
영구 TPM 키를 사용하므로 프라이빗 키 파일을 복사할 필요가 없습니다.
-
-
새를 해당 자격 증명 디렉터리
device.pem.crt에 복사합니다.
-
-
다음 TPM별 구성
config.yaml으로를 편집합니다.system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ... -
다음 명령을 실행하여 Greengrass Nucleus Lite를 재부팅합니다.
systemctl restart greengrass-lite.target
문제 해결
TPM2-enabled AWS IoT Greengrass 디바이스를 설정하거나 작동하는 동안 문제가 발생하면 다음 문제 해결 단계를 시도하세요.
TPM 디바이스를 찾을 수 없음(NitroTPM 사용 시)
/dev/tpm0이 없는 경우 다음 단계를 수행합니다.
-
NitroTPM 지원 인스턴스 유형을 사용하고 있는지 확인합니다.
-
를 사용하여 AMI가 생성되었는지 확인합니다
--tpm-support v2.0. -
인스턴스가 사용자 지정 AMI에서 시작되었는지 확인합니다.
권한 거부 오류
TPM 액세스 오류가 발생하면 다음을 수행합니다.
-
사용자가
tss그룹에 있는지 확인합니다groups $USER. -
다음 명령을 사용하여 TPM 디바이스의 권한을 확인합니다.
ls -l /dev/tpm* -
tss그룹에를 추가한 후 로그아웃했다가 다시 로그인했는지 확인합니다.
OpenSSL 공급자 문제
TPM 공급자를 찾을 수 없는 경우 다음을 수행합니다.
-
에서
tpm2.so경로를 확인합니다/etc/ssl/openssl.cnf. -
다음 명령을 실행하여 공급자 설치를 확인합니다.
openssl list -providers -
tpm2-openssl패키지가 제대로 설치되었는지 확인합니다.
다음 단계
이제 AWS IoT Greengrass 코어 디바이스를 TPM2와 성공적으로 통합했으므로 다음을 수행할 수 있습니다.
-
보안 AWS IoT Greengrass 디바이스에 구성 요소 배포
-
TPM2 통합을 사용하여 추가 AWS IoT Greengrass 디바이스 설정
AWS IoT Greengrass 디바이스의 보안에 대한 자세한 내용은 섹션을 참조하세요AWS IoT Greengrass의 보안.