翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: 信頼できるプラットフォームモジュール (TPM) で AWS IoT Greengrass Nucleus Lite を保護する
このチュートリアルでは、 AWS IoT Greengrass nucleus lite のトラステッドプラットフォームモジュール (TPM) サポートを有効にして設定する方法について説明します。TPM は、安全なキーストレージのためのハードウェアベースの信頼のルートを提供します。このセキュリティ機能は、暗号化オペレーションと機密認証情報を保護し、デバイスのセキュリティと整合性を強化します。
この統合を完了すると、 AWS IoT Greengrass コアデバイスは TPM で保護されたプライベートキーをアイデンティティと AWS IoT サービスとの通信に使用します。
AWS IoT Greengrass デバイスのセキュリティの詳細については、「」を参照してください「AWS IoT Greengrass」 のセキュリティ。
重要
このメカニズムは、手動リソースプロビジョニングを使用した AWS IoT Greengrass nucleus lite のインストールでのみサポートされます。
前提条件
このチュートリアルを完了するには、以下が必要です。
-
TPM 2.0 ハードウェアまたは NitroTPM を搭載した Linux 互換デバイス
-
Greengrass Nucleus Lite がインストールされたデベロッパーマシン。詳細については、AWS IoT Greengrass 「 Core ソフトウェアのインストール (コンソール)」を参照してください。
-
このチュートリアルの手順は、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プライベートキーを使用して Certificate Signing Request (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」 のセキュリティ。