

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Siapkan otentikasi kuorum untuk pengguna kripto menggunakan CloudHSM AWS CloudHSM CLI
<a name="key-quorum-auth-chsm-cli-first-time"></a>

[Topik ini menjelaskan cara mengonfigurasi CloudHSM Anda untuk otentikasi kuorum oleh pengguna kripto.](understanding-users.md#crypto-user-chsm-cli) Lakukan langkah-langkah ini sekali selama pengaturan awal. Untuk manajemen dan penggunaan kunci selanjutnya, lihat[Manajemen kunci dan penggunaan dengan otentikasi kuorum diaktifkan untuk menggunakan AWS CloudHSM CloudHSM CLI](key-quorum-auth-chsm-cli-crypto-user.md).

**Topics**
+ [Prasyarat](#key-quorum-crypto-user-prerequisites)
+ [Langkah 1. Buat dan daftarkan kunci untuk penandatanganan](#key-quorum-crypto-user-create-and-register-key)
+ [Langkah 2. Tetapkan nilai kuorum kunci selama pembuatan kunci](#key-quorum-admin-set-quorum-minimum-value-chsm-cli)

## Prasyarat
<a name="key-quorum-crypto-user-prerequisites"></a>
+ Keakraban dengan [CloudHSM CLI](cloudhsm_cli.md)

## Langkah 1. Buat dan daftarkan kunci untuk penandatanganan
<a name="key-quorum-crypto-user-create-and-register-key"></a>

Untuk menggunakan otentikasi kuorum, setiap pengguna kripto harus menyelesaikan *semua* langkah berikut: 

**Topics**
+ [Buat key pair RSA](#key-mofn-key-pair-create-chsm-cli)
+ [Buat token pendaftaran](#key-mofn-registration-token-chsm-cli)
+ [Tanda tangani token pendaftaran yang belum ditandatangani](#key-mofn-sign-registration-token-chsm-cli)
+ [Daftarkan kunci publik dengan HSM](#key-mofn-register-key-chsm-cli)

### Buat key pair RSA
<a name="key-mofn-key-pair-create-chsm-cli"></a>

Ada banyak cara berbeda untuk membuat dan melindungi pasangan kunci. Contoh berikut menunjukkan cara melakukannya dengan [OpenSSL](https://www.openssl.org/).

**Example — Membuat kunci privat dengan OpenSSL**  
Contoh berikut menunjukkan bagaimana menggunakan OpenSSL untuk membuat kunci RSA 2048-bit. Untuk menggunakan contoh ini, ganti *<crypto\$1user1.key>* dengan nama file tempat Anda ingin menyimpan kunci.  

```
$ openssl genrsa -out <crypto_user1.key>
Generating RSA private key, 2048 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
```

Berikutnya, hasilkan kunci publik menggunakan kunci privat yang baru saja Anda buat.

**Example — Membuat kunci privat dengan OpenSSL**  
Contoh berikut menunjukkan bagaimana menggunakan OpenSSL untuk membuat kunci publik dari kunci privat yang baru saja Anda buat.  

```
$ openssl rsa -in crypto_user1.key -outform PEM -pubout -out crypto_user1.pub
writing RSA key
```

### Buat token pendaftaran
<a name="key-mofn-registration-token-chsm-cli"></a>

Anda membuat token dan menandatanganinya dengan kunci privat yang baru saja Anda hasilkan pada langkah sebelumnya.

**Buat token pendaftaran**

1. Gunakan perintah berikut untuk memulai CloudHSM CLI:

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. Buat token registrasi dengan menjalankan perintah [quorum token-sign](cloudhsm_cli-qm-token-gen.md) generate:

   ```
   aws-cloudhsm > quorum token-sign generate --service registration --token /path/tokenfile
   {
     "error_code": 0,
     "data": {
       "path": "/path/tokenfile"
     }
   }
   ```

1. Perintah [quorum token-sign generate menghasilkan](cloudhsm_cli-qm-token-gen.md) token registrasi di jalur file yang ditentukan. Periksa file token:

   ```
   $ cat /path/tokenfile
   {
     "version": "2.0",
     "tokens": [
       {
         "approval_data": <approval data in base64 encoding>,
         "unsigned": <unsigned token in base64 encoding>,
         "signed": ""
       }
     ]
   }
   ```

   File token terdiri dari yang berikut:
   + **approval \$1data**: Token data acak yang dikodekan base64 yang data mentahnya tidak melebihi maksimum 245 byte.
   + **unsigned: Token** base64 yang dikodekan dan SHA256 di-hash dari approval \$1data.
   + **ditandatangani**: Token bertanda tangan (tanda tangan) yang disandikan base64 dari token yang tidak ditandatangani, menggunakan kunci pribadi RSA 2048-bit yang sebelumnya dibuat dengan OpenSSL.

   Anda menandatangani token yang tidak ditandatangani dengan kunci pribadi untuk menunjukkan bahwa Anda memiliki akses ke kunci pribadi. Anda akan memerlukan file token pendaftaran yang diisi penuh dengan tanda tangan dan kunci publik untuk mendaftarkan pengguna kripto sebagai pengguna kuorum dengan cluster. AWS CloudHSM 

### Tanda tangani token pendaftaran yang belum ditandatangani
<a name="key-mofn-sign-registration-token-chsm-cli"></a>

1. Dekode token unsigned base64 yang dikodekan dan letakkan ke dalam file biner:

   ```
   $ echo -n '6BMUj6mUjjko6ZLCEdzGlWpR5sILhFJfqhW1ej3Oq1g=' | base64 -d > crypto_user.bin
   ```

1. Gunakan OpenSSL dan kunci pribadi untuk menandatangani token pendaftaran biner yang sekarang tidak ditandatangani dan membuat file tanda tangan biner:

   ```
   $ openssl pkeyutl -sign \
   -inkey crypto_user1.key \
   -pkeyopt digest:sha256 \
   -keyform PEM \
   -in crypto_user.bin \
   -out crypto_user.sig.bin
   ```

1. Mengkodekan tanda tangan biner ke base64:

   ```
   $ base64 -w0 crypto_user.sig.bin > crypto_user.sig.b64
   ```

1. Salin dan tempel tanda tangan yang dikodekan base64 ke dalam file token:

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "approval_data": <approval data in base64 encoding>,
         "unsigned": <unsigned token in base64 encoding>,
         "signed": <signed token in base64 encoding>
       }
     ]
   }
   ```

### Daftarkan kunci publik dengan HSM
<a name="key-mofn-register-key-chsm-cli"></a>

Setelah membuat kunci, pengguna kripto harus mendaftarkan kunci publik dengan cluster. AWS CloudHSM 

1. Mulai CloudHSM CLI:

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. Masuk sebagai pengguna kripto yang kunci publiknya ingin Anda daftarkan.

   ```
   aws-cloudhsm > login --username crypto_user1 --role crypto-user
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "crypto_user1",
       "role": "crypto-user"
     }
   }
   ```

1. Daftarkan kunci publik dengan**[Daftarkan strategi kuorum tanda token pengguna menggunakan CloudHSM CLI](cloudhsm_cli-user-chqm-token-reg.md)**. Untuk informasi selengkapnya, lihat contoh berikut atau gunakan perintah **help user change-quorum token-sign register**.  
**Example — Daftarkan kunci publik dengan AWS CloudHSM cluster**  

   Contoh berikut menunjukkan cara menggunakan **user change-quorum token-sign register** perintah di CloudHSM CLI untuk mendaftarkan kunci publik crypto-user dengan HSM. Untuk menggunakan perintah ini, pengguna kripto harus masuk ke HSM. Ganti nilai-nilai ini dengan nilai Anda sendiri:

   ```
   aws-cloudhsm > user change-quorum token-sign register --public-key </path/crypto_user.pub> --signed-token </path/tokenfile>
   {
     "error_code": 0,
     "data": {
       "username": "crypto_user1",
       "role": "crypto-user"
     }
   }
   ```
**catatan**  
**/path/crypto\$1user.pub**: Jalur file ke file PEM kunci publik  
**Wajib**: Ya  
**/path/token\$1file**: Filepath dengan token yang ditandatangani oleh kunci pribadi pengguna  
**Wajib**: Ya

1. Setelah semua pengguna kripto mendaftarkan kunci publik mereka, output dari **user list** perintah menunjukkan ini di bidang kuorum, yang menyatakan strategi kuorum yang diaktifkan yang digunakan.

    Dalam contoh ini, AWS CloudHSM cluster memiliki dua HSMs, masing-masing dengan pengguna kripto yang sama, seperti yang ditunjukkan pada output berikut dari perintah. **user list** Untuk informasi selengkapnya tentang membuat pengguna, lihat [Manajemen pengguna dengan CloudHSM CLI](manage-hsm-users-chsm-cli.md).

   ```
   aws-cloudhsm > user list
   {
     "error_code": 0,
     "data": {
       "users": [
         {
           "username": "admin",
           "role": "admin",
           "locked": "false",
           "mfa": [],
           "quorum": [],
           "cluster-coverage": "full"
         },
         {
           "username": "crypto_user1",
           "role": "crypto-user",
           "locked": "false",
           "mfa": [],
           "quorum": [
             {
               "strategy": "token-sign",
               "status": "enabled"
             }
           ],
           "cluster-coverage": "full"
         },
         {
           "username": "crypto_user2",
           "role": "crypto-user",
           "locked": "false",
           "mfa": [],
           "quorum": [
             {
               "strategy": "token-sign",
               "status": "enabled"
             }
           ],
           "cluster-coverage": "full"
         },
         {
           "username": "crypto_user3",
           "role": "crypto-user",
           "locked": "false",
           "mfa": [],
           "quorum": [
             {
               "strategy": "token-sign",
               "status": "enabled"
             }
           ],
           "cluster-coverage": "full"
         },
         {
           "username": "app_user",
           "role": "internal(APPLIANCE_USER)",
           "locked": "false",
           "mfa": [],
           "quorum": [],
           "cluster-coverage": "full"
         }
       ]
     }
   }
   ```

## Langkah 2. Tetapkan nilai kuorum kunci selama pembuatan kunci
<a name="key-quorum-admin-set-quorum-minimum-value-chsm-cli"></a>

*Untuk menggunakan otentikasi kuorum, pengguna kripto harus masuk ke HSM dan kemudian menetapkan nilai kuorum kunci terkait.* Ini adalah jumlah minimum persetujuan pengguna kripto yang diperlukan untuk melakukan operasi kunci HSM. management/usage Untuk informasi selengkapnya tentang perintah kunci terkait yang terkait dengan manajemen kunci atau penggunaan kunci, lihat[Layanan dan tipe yang didukung](key-quorum-auth-chsm-cli-service-names.md).

**Hasilkan key pair dengan nilai kuorum kunci yang ditetapkan**

1. Gunakan perintah berikut untuk memulai CloudHSM CLI:

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. Menggunakan CloudHSM CLI, masuk sebagai pengguna kripto.

   ```
   aws-cloudhsm > login --username crypto_user1 --role crypto-user
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "crypto_user1",
       "role": "crypto-user"
     }
   }
   ```

Contoh ini menghasilkan key pair RSA yang memiliki nilai kuorum kunci dua (2) yang ditetapkan untuk operasi manajemen kunci dan penggunaan kunci. Anda dapat memilih nilai dari nol (0) hingga delapan (8), hingga jumlah total pengguna kripto di HSM. Dalam contoh ini, HSM memiliki tiga (3) pengguna kripto, sehingga nilai maksimum yang mungkin adalah tiga (3). Perhatikan bahwa dalam contoh ini kita berbagi kunci dengan *<crypto\$1user2>* selama pembuatan kunci. Perhatikan juga bahwa kunci publik tidak memiliki nilai kuorum.

```
aws-cloudhsm > key generate-asymmetric-pair rsa \
--public-exponent 65537 \
--modulus-size-bits 2048 \
--public-label rsa-public-key-example \
--private-label rsa-private-key-example \
--public-attributes verify=true \
--private-attributes sign=true
--share-crypto-users crypto_user2 \
--manage-private-key-quorum-value 2 \
--use-private-key-quorum-value 2
{
  "error_code": 0,
  "data": {
    "public_key": {
      "key-reference": "0x0000000000640006",
      "key-info": {
        "key-owners": [
          {
            "username": "crypto_user",
            "key-coverage": "full"
          }
        ],
        "shared-users": [],
        "key-quorum-values": {
          "manage-key-quorum-value": 0,
          "use-key-quorum-value": 0
        },
        "cluster-coverage": "full"
      },
      "attributes": {
        "key-type": "rsa",
        "label": "rsa-public-key-example",
        "id": "0x",
        "check-value": "0x218f50",
        "class": "public-key",
        "encrypt": false,
        "decrypt": false,
        "token": true,
        "always-sensitive": false,
        "derive": false,
        "destroyable": true,
        "extractable": true,
        "local": true,
        "modifiable": true,
        "never-extractable": false,
        "private": true,
        "sensitive": false,
        "sign": false,
        "trusted": false,
        "unwrap": false,
        "verify": true,
        "wrap": false,
        "wrap-with-trusted": false,
        "key-length-bytes": 512,
        "public-exponent": "0x010001",
        "modulus": "0xbdf471a3d2a869492f51c767bece8780730ae6479a9a75efffe7cea3594fb28ca518630e7b1d988b45d2fedc830b7ab848448c24c476cacb73d1523278aed289551e07af0fbfabe4811cc4601678bd097b5c0a578249ed1eb0e4878a80ba1ed85ac46eb1fee60d2a8bdd322075196dec4b57fa2cd82af44ad068115ac219bc073ec65c19c97bd883cf26931408d7bc51e237626b8b9b8f2485425907a0eb42f2f4c40018c8dac7ceeb1b646305a2e537ab904346883e41d568264abee0137048e4657d2cf72801810f3212f662b7a7ae134848b922771f6a30aa76718008d9cc74ff8ddcd8d867b05c3d40020d1514999af96889911467191b9f390d8de07f83",
        "modulus-size-bits": 2048
      }
    },
    "private_key": {
      "key-reference": "0x0000000000640007",
      "key-info": {
        "key-owners": [
          {
            "username": "crypto_user",
            "key-coverage": "full"
          }
        ],
        "shared-users": [
          {
            "username": "crypto_user2",
            "key-coverage": "full"
          }
        ],
        "key-quorum-values": {
          "manage-key-quorum-value": 2,
          "use-key-quorum-value": 2
        },
        "cluster-coverage": "full"
      },
      "attributes": {
        "key-type": "rsa",
        "label": "rsa-private-key-example",
        "id": "0x",
        "check-value": "0x218f50",
        "class": "private-key",
        "encrypt": false,
        "decrypt": false,
        "token": true,
        "always-sensitive": true,
        "derive": false,
        "destroyable": true,
        "extractable": true,
        "local": true,
        "modifiable": true,
        "never-extractable": false,
        "private": true,
        "sensitive": true,
        "sign": true,
        "trusted": false,
        "unwrap": false,
        "verify": false,
        "wrap": false,
        "wrap-with-trusted": false,
        "key-length-bytes": 1216,
        "public-exponent": "0x010001",
        "modulus": "0xbdf471a3d2a869492f51c767bece8780730ae6479a9a75efffe7cea3594fb28ca518630e7b1d988b45d2fedc830b7ab848448c24c476cacb73d1523278aed289551e07af0fbfabe4811cc4601678bd097b5c0a578249ed1eb0e4878a80ba1ed85ac46eb1fee60d2a8bdd322075196dec4b57fa2cd82af44ad068115ac219bc073ec65c19c97bd883cf26931408d7bc51e237626b8b9b8f2485425907a0eb42f2f4c40018c8dac7ceeb1b646305a2e537ab904346883e41d568264abee0137048e4657d2cf72801810f3212f662b7a7ae134848b922771f6a30aa76718008d9cc74ff8ddcd8d867b05c3d40020d1514999af96889911467191b9f390d8de07f83",
        "modulus-size-bits": 2048
      }
    }
  }
}
```

Saat membuat kunci dengan kontrol kuorum, kunci harus dikaitkan dengan jumlah minimum pengguna yang sama dengan nilai kuorum kunci terbesar. Pengguna terkait termasuk pemilik kunci dan Pengguna Crypto dengan siapa kunci tersebut dibagikan. Untuk menentukan jumlah pengguna minimum untuk berbagi kunci, dapatkan nilai kuorum terbesar antara nilai kuorum penggunaan kunci dan nilai kuorum manajemen kunci dan kurangi 1 untuk memperhitungkan pemilik kunci, yang secara default dikaitkan dengan kunci. Untuk berbagi kunci dengan lebih banyak pengguna, gunakan **[Bagikan kunci menggunakan CloudHSM CLI](cloudhsm_cli-key-share.md)** perintah.

Kegagalan untuk berbagi kunci dengan pengguna yang cukup pada pembuatan kunci akan mengakibatkan kegagalan, seperti yang ditunjukkan di bawah ini.

```
aws-cloudhsm > key generate-asymmetric-pair rsa \
--public-exponent 65537 \
--modulus-size-bits 2048 \
--public-label rsa-public-key-example \
--private-label rsa-private-key-example \
--public-attributes verify=true \
--private-attributes sign=true
--share-crypto-users crypto_user2 crypto_user3 \
--manage-private-key-quorum-value 3 \
--use-private-key-quorum-value 4
{
  "error_code": 1,
  "data": "Invalid quorum value provided."
}
```