

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ハードウェアセキュリティ統合
<a name="hardware-security"></a>

この機能は AWS IoT Greengrass Core v1.7 以降で使用できます。

AWS IoT Greengrass は、[PKCS\$111 インターフェイス](#hardware-security-see-also)を介したハードウェアセキュリティモジュール (HSM) を使用して、プライベートキーの安全なストレージとオフロードをサポートします。これにより、ソフトウェアでキーが漏洩したり複製されたりするのを防ぎます。プライベートキーは、HSM、Trusted Platform Modules (TPM)、その他の暗号化要素などのハードウェアモジュールに安全に保存できます。

[AWS Partner Device Catalog](https://devices.amazonaws.com/search?kw=%22HSI%22&page=1) で、この機能に適合するデバイスを検索します。

次の図は、 AWS IoT Greengrass コアのハードウェアセキュリティアーキテクチャを示しています。

![\[AWS IoT Greengrass Core architecture with hardware security and message routing to AWS IoT Core and local devices.\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/hardware-security-arch.png)


標準インストールでは、 は 2 つのプライベートキー AWS IoT Greengrass を使用します。1 つのキーは、Greengrass コアが接続するときに Transport Layer Security (TLS) ハンドシェイク中に AWS IoT クライアント (IoT クライアント) コンポーネントによって使用されます AWS IoT Core。(このキーは Core プライベートキーとも呼ばれます)。もう 1 つのキーは、Greengrass デバイスと Greengrass Core との通信を可能にするために、ローカル MQTT サーバーが使用します。両方のコンポーネントにハードウェアセキュリティを使用する場合は、共有のプライベートキーを使用しても、個別のプライベートキーを使用してもかまいません。詳細については、「[AWS IoT Greengrass ハードウェアセキュリティのプロビジョニングプラクティス](#optional-provisioning)」を参照してください。

**注記**  
標準インストールでは、ローカルシームレットマネージャは暗号化目的で IoT クライアントキーも使用しますが、独自のプライベートキーを使用することもできます。この場合、最小長 の 2048 ビットの RSA キーを使用する必要があります。詳細については、「[シークレット暗号化用のプライベートキーを指定する](secrets.md#secrets-config-private-key)」を参照してください。

## 要件
<a name="hardware-security-reqs"></a>

Greengrass Core のハードウェアセキュリティを設定する前に、以下のものが必要です。
+ IoT クライアント、ローカル MQTT サーバー、およびローカルサービスマネージャコンポーネント用のターゲットプライベートキー設定をサポートするハードウェアセキュリティモジュール (HSM)。この設定には、コンポーネントでキーを共有するかどうかの設定に応じて、1 つ、2 つ、あるいは3 つのハードウェアベースのプライベートキーを含めることができます。プライベートキーのサポートの詳細については、「[AWS IoT Greengrass コアセキュリティプリンシパル](gg-sec.md#gg-principals)」を参照してください。
  + RSA キーでは: RSA-2048 キーサイズ (またはそれ以上) および [PKCS\$11 v1.5](#hardware-security-see-also) 署名スキーム。
  + EC キーでは: NIST P-256 または NIST P-384 curve。
**注記**  
[AWS Partner Device Catalog](https://devices.amazonaws.com/search?kw=%22HSI%22&page=1) で、この機能に適合するデバイスを検索します。
+ 実行時に (libdl を使用して) ロード可能であり、[PKCS\$111](#hardware-security-see-also) 関数を提供する PKCS\$111 プロバイダーライブラリ。
+ ハードウェアモジュールは、「PKCS\$111 仕様」で定義されているスロットラベルで解決できる必要があります。
+ ベンダー提供のプロビジョニングツールを使用して、プライベートキーを生成して HSM にロードする必要があります。
+ プライベートキーはオブジェクトラベルで解決できる必要があります。
+ Core デバイス証明書。これは、プライベートキーに対応する IoT クライアント証明書です。
+ Greengrass OTA Update Agent を使用している場合は、[OpenSSL libp11 PKCS\$111](https://github.com/OpenSC/libp11) ラッパーライブラリをインストールする必要があります。詳細については、「[無線通信経由更新のサポートを設定する](#hardware-security-ota-updates)」を参照してください。

また、以下の条件が満たされていることを確認してください。
+ プライベートキーに関連付けられている IoT クライアント証明書は に登録 AWS IoT され、アクティブ化されます。これは、 AWS IoT コンソールの**「すべてのデバイスの****管理**」、「展開」、**「モノ**」、「コアモノの**証明書**」タブで確認できます。
+  AWS IoT Greengrass Core ソフトウェア v1.7 以降は、入門チュートリアルの[モジュール 2 ](module2.md)で説明されているように、コアデバイスにインストールされます。バージョン 1.9 以降は、MQTT サーバー用に EC キーを使用するために必要です。
+ 証明書は Greengrass Core にアタッチされています。これは、 AWS IoT コンソールのコアモノ**の管理**ページから確認できます。

**注記**  
現在、 AWS IoT Greengrass は、HSM からの CA 証明書または IoT クライアント証明書の直接ロードをサポートしていません。証明書は、ファイルシステムの Greengrass で読み取り可能な場所に、プレーンテキストファイルとしてロードする必要があります。

## AWS IoT Greengrass コアのハードウェアセキュリティ設定
<a name="configure-hardware-security"></a>

ハードウェアセキュリティは、Greengrass 設定ファイルで設定します。これは、`/greengrass-root/config` ディレクトリにある [`config.json`](gg-core.md#config-json) ファイルです。

**注記**  
純粋なソフトウェア実装を使用して HSM 設定をセットアップするプロセスについては、「[モジュール 7: ハードウェアセキュリティ統合のシミュレーション](console-mod7.md)」を参照してください。  
この例のシミュレートされた設定では、セキュリティ上の利点は得られません。例の目的は、ハードウェアベースの HSM を今後使用する場合に備えて、PKCS\$111 の仕様について学習し、ソフトウェアの初期テストを行うことです。

でハードウェアセキュリティを設定するには AWS IoT Greengrass、 で `crypto` オブジェクトを編集します`config.json`。

ハードウェアセキュリティを使用する場合は、以下の例に示すように、`crypto` オブジェクトを使用して、Core 上の PKCS\$111 プロバイダーライブラリの証明書、プライベートキー、アセットへのパスを指定します。

```
"crypto": {
  "PKCS11" : {
    "OpenSSLEngine" : "/path-to-p11-openssl-engine",
    "P11Provider" : "/path-to-pkcs11-provider-so",
    "slotLabel" : "crypto-token-name",
    "slotUserPin" : "crypto-token-user-pin"
  },
  "principals" : {
    "IoTCertificate" : {
      "privateKeyPath" : "pkcs11:object=core-private-key-label;type=private",
      "certificatePath" : "file:///path-to-core-device-certificate"
    },
    "MQTTServerCertificate" : {
      "privateKeyPath" : "pkcs11:object=server-private-key-label;type=private"
    },
    "SecretsManager" : {
      "privateKeyPath": "pkcs11:object=core-private-key-label;type=private"
    }
  },    
  "caPath" : "file:///path-to-root-ca"
```

`crypto` オブジェクトには、以下のプロパティが含まれています。


| フィールド | 説明 | 注意事項 | 
| --- |--- |--- |
| caPath |   AWS IoT ルート CA への絶対パス。  |  `file:///absolute/path/to/file` という形式のファイル URI である必要があります。  [エンドポイントが証明書タイプに対応している](gg-core.md#certificate-endpoints)ことを確認してください。   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  オプション。OpenSSL での PKCS\$111 のサポートを有効にするための、OpenSSL エンジン `.so` ファイルへの絶対パス。  |  ファイルシステム上のファイルへのパスであることが必要です。 ハードウェアセキュリティで Greengrass OTA Update Agent を使用している場合、このプロパティは必須です。詳細については、「[無線通信経由更新のサポートを設定する](#hardware-security-ota-updates)」を参照してください。  | 
| P11Provider |  PKCS\$111 実装の libdl-loadable ライブラリへの絶対パス。  |  ファイルシステム上のファイルへのパスであることが必要です。  | 
| slotLabel |  ハードウェアモジュールを識別するために使用されるスロットラベル。  |  PKCS\$111 ラベル仕様に準拠していることが必要です。  | 
| slotUserPin |  Greengrass Core をモジュールに対して認証するために使用されるユーザー PIN。  |  設定されたプライベートキーで C\$1Sign を実行するのに十分なアクセス許可があることが必要です。  | 
| `principals` | 
| --- |
| IoTCertificate | The certificate and private key that the core uses to make requests to AWS IoT. | 
| IoTCertificate  .privateKeyPath  |  Core プライベートキーへのパス。  |  ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。  | 
| IoTCertificate  .certificatePath |  コアデバイス証明書への絶対パス。  |  `file:///absolute/path/to/file` という形式のファイル URI である必要があります。  | 
| MQTTServerCertificate |  オプション。Core が MQTT サーバーまたはゲートウェイとして機能するために証明書と組み合わせて使用するプライベートキー。  | 
| MQTTServerCertificate  .privateKeyPath |  ローカル MQTT サーバーのプライベートキーへのパス。  |  この値を使用して、ローカル MQTT サーバーの独自のプライベートキーを指定します。 ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。 このプロパティを省略すると、 はローテーション設定に基づいてキーを AWS IoT Greengrass ローテーションします。指定した場合は、お客様がキーを更新する必要があります。  | 
| SecretsManager | The private key that secures the data key used for encryption. For more information, see [シークレットを AWS IoT Greengrass コアにデプロイする](secrets.md). | 
| SecretsManager  .privateKeyPath |  ローカル Secrets Manager のプライベートキーへのパス。  |  RSA キーのみがサポートされています。 ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。[PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313) パディング方式を使用してプライベートキーを生成する必要があります。  | 


| フィールド | 説明 | 注意事項 | 
| --- |--- |--- |
| caPath |   AWS IoT ルート CA への絶対パス。  |  `file:///absolute/path/to/file` という形式のファイル URI である必要があります。  [エンドポイントが証明書タイプに対応している](gg-core.md#certificate-endpoints)ことを確認してください。   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  オプション。OpenSSL での PKCS\$111 のサポートを有効にするための、OpenSSL エンジン `.so` ファイルへの絶対パス。  |  ファイルシステム上のファイルへのパスであることが必要です。 ハードウェアセキュリティで Greengrass OTA Update Agent を使用している場合、このプロパティは必須です。詳細については、「[無線通信経由更新のサポートを設定する](#hardware-security-ota-updates)」を参照してください。  | 
| P11Provider |  PKCS\$111 実装の libdl-loadable ライブラリへの絶対パス。  |  ファイルシステム上のファイルへのパスであることが必要です。  | 
| slotLabel |  ハードウェアモジュールを識別するために使用されるスロットラベル。  |  PKCS\$111 ラベル仕様に準拠していることが必要です。  | 
| slotUserPin |  Greengrass Core をモジュールに対して認証するために使用されるユーザー PIN。  |  設定されたプライベートキーで C\$1Sign を実行するのに十分なアクセス許可があることが必要です。  | 
| `principals` | 
| --- |
| IoTCertificate | The certificate and private key that the core uses to make requests to AWS IoT. | 
| IoTCertificate  .privateKeyPath  |  Core プライベートキーへのパス。  |  ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。  | 
| IoTCertificate  .certificatePath |  コアデバイス証明書への絶対パス。  |  `file:///absolute/path/to/file` という形式のファイル URI である必要があります。  | 
| MQTTServerCertificate |  オプション。Core が MQTT サーバーまたはゲートウェイとして機能するために証明書と組み合わせて使用するプライベートキー。  | 
| MQTTServerCertificate  .privateKeyPath |  ローカル MQTT サーバーのプライベートキーへのパス。  |  この値を使用して、ローカル MQTT サーバーの独自のプライベートキーを指定します。 ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。 このプロパティを省略すると、 はローテーション設定に基づいてキーを AWS IoT Greengrass ローテーションします。指定した場合は、お客様がキーを更新する必要があります。  | 
| SecretsManager | The private key that secures the data key used for encryption. For more information, see [シークレットを AWS IoT Greengrass コアにデプロイする](secrets.md). | 
| SecretsManager  .privateKeyPath |  ローカル Secrets Manager のプライベートキーへのパス。  |  RSA キーのみがサポートされています。 ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。[PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313) パディング方式を使用してプライベートキーを生成する必要があります。  | 


| フィールド | 説明 | 注意事項 | 
| --- |--- |--- |
| caPath |   AWS IoT ルート CA への絶対パス。  |  `file:///absolute/path/to/file` という形式のファイル URI である必要があります。  [エンドポイントが証明書タイプに対応している](gg-core.md#certificate-endpoints)ことを確認してください。   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  オプション。OpenSSL での PKCS\$111 のサポートを有効にするための、OpenSSL エンジン `.so` ファイルへの絶対パス。  |  ファイルシステム上のファイルへのパスであることが必要です。 ハードウェアセキュリティで Greengrass OTA Update Agent を使用している場合、このプロパティは必須です。詳細については、「[無線通信経由更新のサポートを設定する](#hardware-security-ota-updates)」を参照してください。  | 
| P11Provider |  PKCS\$111 実装の libdl-loadable ライブラリへの絶対パス。  |  ファイルシステム上のファイルへのパスであることが必要です。  | 
| slotLabel |  ハードウェアモジュールを識別するために使用されるスロットラベル。  |  PKCS\$111 ラベル仕様に準拠していることが必要です。  | 
| slotUserPin |  Greengrass Core をモジュールに対して認証するために使用されるユーザー PIN。  |  設定されたプライベートキーで C\$1Sign を実行するのに十分なアクセス許可があることが必要です。  | 
| `principals` | 
| --- |
| IoTCertificate | The certificate and private key that the core uses to make requests to AWS IoT. | 
| IoTCertificate  .privateKeyPath  |  Core プライベートキーへのパス。  |  ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。  | 
| IoTCertificate  .certificatePath |  コアデバイス証明書への絶対パス。  |  `file:///absolute/path/to/file` という形式のファイル URI である必要があります。  | 
| MQTTServerCertificate |  オプション。Core が MQTT サーバーまたはゲートウェイとして機能するために証明書と組み合わせて使用するプライベートキー。  | 
| MQTTServerCertificate  .privateKeyPath |  ローカル MQTT サーバーのプライベートキーへのパス。  |  この値を使用して、ローカル MQTT サーバーの独自のプライベートキーを指定します。 ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。 このプロパティを省略すると、 はローテーション設定に基づいてキーを AWS IoT Greengrass ローテーションします。指定した場合は、お客様がキーを更新する必要があります。  | 
| SecretsManager | The private key that secures the data key used for encryption. For more information, see [シークレットを AWS IoT Greengrass コアにデプロイする](secrets.md). | 
| SecretsManager  .privateKeyPath |  ローカル Secrets Manager のプライベートキーへのパス。  |  RSA キーのみがサポートされています。 ファイルシステムストレージの場合、`file:///absolute/path/to/file` という形式のファイル URI である必要があります。 HSM ストレージの場合、オブジェクトラベルを指定する [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) パスである必要があります。[PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313) パディング方式を使用してプライベートキーを生成する必要があります。  | 

## AWS IoT Greengrass ハードウェアセキュリティのプロビジョニングプラクティス
<a name="optional-provisioning"></a>

以下に示しているのは、セキュリティおよびパフォーマンス関連のプロビジョニング慣行です。

**セキュリティ**  
  
+ 内部ハードウェア乱数ジェネレーターを使用して、HSM に直接プライベートキーを生成します。
**注記**  
この機能で使用するようにプライベートキーを設定する場合 (ハードウェアベンダーの指示に従う）、 AWS IoT Greengrass は現在、[ローカルシークレット](secrets.md)の暗号化と復号のための PKCS1 v1.5 パディングメカニズムのみをサポートしていることに注意してください。 AWS IoT Greengrass は、Optimal Asymmetric Encryption Padding (OAEP) をサポートしていません。
+ エクスポートを禁止するようにプライベートキーを設定します。
+ ハードウェアベンダーが提供するプロビジョニングツールを使用して、ハードウェアで保護されたプライベートキーを使用して証明書署名リクエスト (CSR) を生成し、 AWS IoT コンソールを使用してクライアント証明書を生成します。
HSM でプライベートキーが生成されている場合、キーの更新は適用されません。

パフォーマンス  <a name="hsm-performance"></a>
次の図は、 AWS IoT Greengrass コア上の IoT クライアントコンポーネントとローカル MQTT サーバーを示しています。両方のコンポーネントに HSM 設定を使用する場合は、同じプライベートキーを使用しても、個別のプライベートキーを使用してもかまいません。別のキーを使用する場合は、同じスロットに保存されている必要があります。  
AWS IoT Greengrass は、HSM に保存するキーの数に制限を課さないため、IoT クライアント、MQTT サーバー、シークレットマネージャーコンポーネントのプライベートキーを保存できます。ただし、一部の HSM のベンダーでは 1 つのスロットに保存できるキーの数に制限を設けていることがあります。

![\[IoT client and MQTT server interacting with AWS IoT Greengrass Core and AWS IoT Core.\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/multi-key-diagram.png)

一般的に、 AWS IoT Greengrass Core ソフトウェアはクラウドへの存続期間の長い接続を維持するため、IoT クライアントキーはあまり頻繁に使用されません。ただし、MQTT サーバーキーは、Greengrass デバイスが Core に接続するたびに使用されます。これらのやり取りはパフォーマンスに直接影響します。  
MQTT サーバーキーが HSM に保存されていると、デバイスが接続できる速度は、HSM が実行できる 1 秒あたりの RSA 署名オペレーションの数によって決まります。例えば、HSM が RSA-2048 プライベートキーで RSASSA-PKCS1-v1.5 署名を実行するのに 300 ミリ秒かかる場合、1 秒あたり 3 台のデバイスしか Greengrass Core に接続できません。接続後、HSM は使用されなくなり、標準の [AWS IoT Greengrassのクォータ](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#limits_greengrass)が適用されます。  
パフォーマンスのボトルネックを軽減するために、MQTT サーバーのプライベートキーを HSM ではなくファイルシステムに保存できます。この設定では、MQTT サーバーは、ハードウェアセキュリティが有効でないかのように動作します。  
AWS IoT Greengrass は IoT クライアントと MQTT サーバーコンポーネントの複数のキーストレージ設定をサポートしているため、セキュリティとパフォーマンスの要件に合わせて最適化できます。次の表では設定例を示しています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/hardware-security.html)
MQTT サーバーのファイルシステムベースのキーを使用するように Greengrass コアを設定するには、 から `principals.MQTTServerCertificate`セクションを省略します `config.json` (または、 によって生成されたデフォルトキーを使用しない場合は、キーへのファイルベースのパスを指定します AWS IoT Greengrass)。生成される `crypto` オブジェクトは以下のようになります。  

```
"crypto": {
  "PKCS11": {
    "OpenSSLEngine": "...",
    "P11Provider": "...",
    "slotLabel": "...",
    "slotUserPin": "..."
  },
  "principals": {
    "IoTCertificate": {
      "privateKeyPath": "...",
      "certificatePath": "..."
    },      
    "SecretsManager": {
      "privateKeyPath": "..."
    }
  },    
  "caPath" : "..."
}
```

## ハードウェアセキュリティ統合用にサポートされている暗号スイート
<a name="cipher-suites-for-hsm"></a>

AWS IoT Greengrass コアがハードウェアセキュリティ用に設定されている場合、 は一連の暗号スイートをサポートします。これは、Core がファイルベースのセキュリティを使用するように設定されている場合にサポートされる暗号スイートのサブセットです。詳細については、「[TLS 暗号スイートのサポート](gg-sec.md#gg-cipher-suites)」を参照してください。

**注記**  
ローカルネットワークを介して Greengrass デバイスから Greengrass コアに接続する場合、TLS 接続を行うためにサポートされた暗号化スイートのいずれかを使用していることを確認してください。

## 無線通信経由更新のサポートを設定する
<a name="hardware-security-ota-updates"></a>

ハードウェアセキュリティを使用するときに AWS IoT Greengrass Core ソフトウェアのover-the-air (OTA) 更新を有効にするには、OpenSC libp11 [PKCS\$111 ラッパーライブラリ](https://github.com/OpenSC/libp11)をインストールし、Greengrass 設定ファイルを編集する必要があります。OTA 更新の詳細については、「[AWS IoT Greengrass Core ソフトウェアの OTA 更新](core-ota-update.md)」を参照してください。

1. Greengrass デーモンを停止します。

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```
**注記**  
*greengrass-root* は、デバイスに AWS IoT Greengrass Core ソフトウェアがインストールされているパスを表します。通常、これは `/greengrass` ディレクトリです。

1. OpenSSL エンジンをインストールします。OpenSSL 1.0 または 1.1 がサポートされています。

   ```
   sudo apt-get install libengine-pkcs11-openssl
   ```

1. システム上の OpenSSL エンジン (`libpkcs11.so`) へのパスを見つけます。

   1. インストールされているライブラリのパッケージのリストを取得します。

      ```
      sudo dpkg -L libengine-pkcs11-openssl
      ```

      `libpkcs11.so` ファイルは `engines` ディレクトリにあります。

   1. このファイルへの完全パス (`/usr/lib/ssl/engines/libpkcs11.so` など) をコピーします。

1. Greengrass 設定ファイルを開きます。これは、`/greengrass-root/config` ディレクトリにある [`config.json`](gg-core.md#config-json) ファイルです。

1. `OpenSSLEngine` プロパティには、`libpkcs11.so` ファイルへのパスを入力します。

   ```
   {
    "crypto": {
      "caPath" : "file:///path-to-root-ca",
      "PKCS11" : {
        "OpenSSLEngine" : "/path-to-p11-openssl-engine",
        "P11Provider" : "/path-to-pkcs11-provider-so",
        "slotLabel" : "crypto-token-name",
        "slotUserPin" : "crypto-token-user-pin"
       },
       ...
     }
     ...
   }
   ```
**注記**  
`OpenSSLEngine` プロパティが `PKCS11` オブジェクトに存在しない場合は、追加します。

1. Greengrass デーモンを開始します。

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

## 以前のバージョンの AWS IoT Greengrass コアソフトウェアとの下位互換性
<a name="hardware-security-backward-compatibiity"></a>

ハードウェアセキュリティをサポートする AWS IoT Greengrass Core ソフトウェアは、v1.6 以前で生成された`config.json`ファイルと完全に下位互換性があります。`crypto` オブジェクトが`config.json`設定ファイルに存在しない場合、 はファイルベースの `coreThing.certPath`、`coreThing.keyPath`、および `coreThing.caPath`プロパティ AWS IoT Greengrass を使用します。この下位互換性は、`config.json` で指定されたファイルベースの設定を上書きしない Greengrass OTA 更新に適用されます。

## PKCS\$111 をサポートしないハードウェア
<a name="hardware-without-pkcs11"></a>

PKCS\$111 ライブラリは通常、ハードウェアベンダーによって提供されるか、オープンソースです。例えば、標準準拠のハードウェア (TPM1.2 など) では、既存のオープンソースソフトウェアを使用できます。ただし、ハードウェアに対応する PKCS\$111 ライブラリ実装がない場合、またはカスタム PKCS\$111 プロバイダーを作成する場合は、統合関連の質問について AWS エンタープライズサポート担当者にお問い合わせください。

## 関連情報
<a name="hardware-security-see-also"></a>
+ *PKCS \$111 Cryptographic Token Interface Usage Guide Version 2.40* John Leiseboer および Robert Griffin 編集。2014 年 11 月 16 日。「OASIS Committee Note 02」[ http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html) 最新バージョン: [ http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html)
+ [RFC 7512](https://tools.ietf.org/html/rfc7512)
+ [PKCS \$11: RSA Encryption Version 1.5](https://tools.ietf.org/html/rfc2313)