

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configure a autenticação de quórum para AWS CloudHSM usuários de criptografia usando o CloudHSM CLI
<a name="key-quorum-auth-chsm-cli-first-time"></a>

Estes tópicos descrevem como configurar seu CloudHSM para autenticação de quórum por [usuários de criptografia](understanding-users.md#crypto-user-chsm-cli). Execute estas etapas uma vez durante a configuração inicial. Para gerenciamento e uso subsequentes de chaves, consulte [Gerenciamento e uso de chaves com autenticação de quorum habilitada para usar a CLI do AWS CloudHSM CloudHSM](key-quorum-auth-chsm-cli-crypto-user.md).

**Topics**
+ [Pré-requisitos](#key-quorum-crypto-user-prerequisites)
+ [Etapa 1. Criar e registrar uma chave para assinatura](#key-quorum-crypto-user-create-and-register-key)
+ [Etapa 2. Definir os principais valores do quórum durante a geração da chave](#key-quorum-admin-set-quorum-minimum-value-chsm-cli)

## Pré-requisitos
<a name="key-quorum-crypto-user-prerequisites"></a>
+ Familiaridade com a [CloudHSM CLI](cloudhsm_cli.md)

## Etapa 1. Criar e registrar uma chave para assinatura
<a name="key-quorum-crypto-user-create-and-register-key"></a>

Para usar a autenticação de quórum, cada usuário de criptografia deve concluir *todas* as etapas a seguir: 

**Topics**
+ [Criar um par de chaves RSA](#key-mofn-key-pair-create-chsm-cli)
+ [Criar um token de registro](#key-mofn-registration-token-chsm-cli)
+ [Assinar o token de registro não assinado](#key-mofn-sign-registration-token-chsm-cli)
+ [Registrar uma chave pública no HSM](#key-mofn-register-key-chsm-cli)

### Criar um par de chaves RSA
<a name="key-mofn-key-pair-create-chsm-cli"></a>

Existem muitas maneiras diferentes de criar e proteger um par de chaves. O exemplo a seguir mostra como fazer isso com o [OpenSSL](https://www.openssl.org/).

**Example Crie uma chave privada com o OpenSSL**  
O exemplo a seguir demonstra como usar o OpenSSL para criar uma chave RSA de 2048 bits. Para usar esse exemplo, *<crypto\$1user1.key>* substitua pelo nome do arquivo em que você deseja armazenar a chave.  

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

Em seguida, gere a chave pública usando a chave privada que você acabou de criar.

**Example Crie uma chave pública com o OpenSSL**  
O exemplo a seguir demonstra como usar o OpenSSL para criar uma chave pública a partir da chave privada que você acabou de criar.  

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

### Criar um token de registro
<a name="key-mofn-registration-token-chsm-cli"></a>

Você cria um token e o assina com a chave privada que acabou de gerar na etapa anterior.

**Criar um token de registro**

1. Use o comando a seguir para iniciar CloudHSM CLI:

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

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

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

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

------

1. Crie um token de registro executando o comando [quorum token-sign generate](cloudhsm_cli-qm-token-gen.md):

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

1. O comando [quorum token-sign generate](cloudhsm_cli-qm-token-gen.md) gera um token de registro no caminho de arquivo especificado. Inspecione o arquivo de token:

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

   O caminho do arquivo consiste no seguinte:
   + **approval\$1data**: um token de dados aleatório codificado em base64 cujos dados brutos não excedem o máximo de 245 bytes.
   + **unsigned**: um token codificado em base64 e com SHA256 hash do approval\$1data.
   + **signed**: um token assinado codificado em base64 (assinatura) do token não assinado, usando a chave privada RSA de 2048 bits gerada anteriormente com o OpenSSL.

   Você assina o token não assinado com a chave privada para demonstrar que tem acesso à chave privada. Você precisará do arquivo do token de registro totalmente preenchido com uma assinatura e a chave pública para registrar o usuário criptográfico como usuário de quórum no cluster. AWS CloudHSM 

### Assinar o token de registro não assinado
<a name="key-mofn-sign-registration-token-chsm-cli"></a>

1. Decodifique o token não assinado codificado em base64 e coloque-o em um arquivo binário:

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

1. Use OpenSSL e a chave privada para assinar o token de registro não assinado, agora binário, e criar um arquivo de assinatura binária:

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

1. Codifique a assinatura binária em base64:

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

1. Copie e cole a assinatura codificada em base64 no arquivo de token:

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

### Registrar uma chave pública no HSM
<a name="key-mofn-register-key-chsm-cli"></a>

Depois de criar uma chave, o usuário criptográfico deve registrar a chave pública no AWS CloudHSM cluster.

1. Inicie a CloudHSM CLI:

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

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

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

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

------

1. Faça login como o usuário de criptografia cuja chave pública você deseja registrar.

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

1. Registre uma chave pública no **[Registrar a estratégia de quórum de assinatura de token de um usuário usando a CLI do CloudHSM](cloudhsm_cli-user-chqm-token-reg.md)**. Para obter mais informações, consulte o exemplo a seguir ou use o comando **help user change-quorum token-sign register**.  
**Example — Registrar uma chave pública com o AWS CloudHSM cluster**  

   O exemplo a seguir mostra como usar o comando **user change-quorum token-sign register** na CloudHSM CLI para registrar a chave pública de um administrador no HSM. Para usar esse comando, o usuário de criptografia deve estar conectado no HSM. Substitua estes valores pelos seus próprios:

   ```
   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"
     }
   }
   ```
**nota**  
**/path/crypto\$1user.pub**: o caminho do arquivo PEM de chave pública  
**Obrigatório**: sim  
**/path/token-file**: o caminho do arquivo com token assinado pela chave privada do usuário  
**Obrigatório**: sim

1. Depois que todos os usuários de criptografia registrarem suas chaves públicas, a saída do comando **user list** mostra essa informação no campo de quórum, informando a estratégia de quórum ativada em uso.

    Neste exemplo, o AWS CloudHSM cluster tem dois HSMs, cada um com os mesmos usuários de criptografia, conforme mostrado na saída a seguir do **user list** comando. Para obter mais informações sobre como criar usuários, consulte [Gerenciamento de usuários com a CLI do CloudHSM](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"
         }
       ]
     }
   }
   ```

## Etapa 2. Definir os principais valores do quórum durante a geração da chave
<a name="key-quorum-admin-set-quorum-minimum-value-chsm-cli"></a>

Para usar a autenticação de quórum, é preciso que um usuário de criptografia faça login no HSM e, em seguida, defina os *valores de quórum chave* associados. Esse é o número mínimo de aprovações de usuários de criptomoedas necessárias para realizar as principais operações do HSM. management/usage Para saber mais sobre os comandos de teclas associados ao gerenciamento ou ao uso de chaves, consulte [Serviços e tipos compatíveis](key-quorum-auth-chsm-cli-service-names.md).

**Gerar um par de chaves com valores de quórum chave definidos**

1. Use o comando a seguir para iniciar a CloudHSM CLI:

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

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

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

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

------

1. Usando a CloudHSM CLI, faça login como um usuário de criptografia.

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

Este exemplo gera um par de chaves RSA com os valores de quórum de chaves dois (2) definidos para operações de gerenciamento e uso de chaves. Você pode escolher qualquer valor de zero (0) até oito (8), até o número total de usuários de criptografia no HSM. Neste exemplo, o HSM tem três (3) usuários de criptografia, então o valor máximo possível é três (3). Observe que, neste exemplo, estamos compartilhando a chave *<crypto\$1user2>* durante a geração da chave. Observe também que as chaves públicas não têm valores de quórum.

```
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
      }
    }
  }
}
```

Ao gerar uma chave com controles de quórum, a chave deve estar associada a um número mínimo de usuários igual ao maior valor de quórum da chave. Os usuários associados incluem o proprietário da chave e os usuários de criptografia com quem essa chave é compartilhada. Para definir o número mínimo de usuários com quem compartilhar a chave, obtenha o maior valor de quórum entre o valor do quórum de uso da chave e o valor do quórum de gerenciamento de chaves e subtraia 1 para contabilizar o proprietário da chave, que, por padrão, está associado à chave. Para compartilhar a chave com mais usuários, use o comando **[Compartilhar uma chave usando a CloudHSM CLI](cloudhsm_cli-key-share.md)**.

A falha em compartilhar a chave com usuários suficientes na geração da chave resultará em falha, conforme mostrado abaixo.

```
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."
}
```