

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cree usuarios con la 2FA habilitada para los usuarios de la utilidad de administración AWS CloudHSM
<a name="create-2fa"></a>

Utilice AWS CloudHSM la utilidad de administración CMU (CMU) y el key pair para crear un nuevo usuario de Crypto Office (CO) con la autenticación de dos factores (2FA) habilitada.

**Cómo crear usuarios con rol de CO con la 2FA habilitada**

1. En una terminal, lleve a cabo uno de los siguientes pasos:

   1. Acceda a su HSM e inicie sesión en la utilidad de administración de CloudHSM:

      ```
      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
      ```

   1. Inicie sesión como CO y use el siguiente comando para crear un nuevo usuario de MFA con 2FA:

      ```
      aws-cloudhsm > createUser CO MFA <CO USER PASSWORD> -2fa /home/ec2-user/authdata
      *************************CAUTION********************************
      This is a CRITICAL operation, should be done on all nodes in the
      cluster. AWS does NOT synchronize these changes automatically with the 
      nodes on which this operation is not executed or failed, please 
      ensure this operation is executed on all nodes in the cluster.  
      ****************************************************************
      
      Do you want to continue(y/n)? y
      
      Creating User exampleuser3(CO) on 1 nodesAuthentication data written to: "/home/ec2-user/authdata"Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. 
      To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide 
      the file path below.Leave this field blank to use the path initially provided.Enter filename:
      ```

   1. Deje la terminal anterior en este estado. No presione enter ni introduzca ningún nombre de archivo.

1. En otra terminal, realice los siguientes pasos:

   1. Acceda a su HSM e inicie sesión en la utilidad de administración de CloudHSM:

      ```
      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
      ```

   1. Genere un par de claves público-privadas con los siguientes comandos:

      ```
      openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
      ```

      ```
      openssl rsa -pubout -in private_key.pem -out public_key.pem
      ```

   1. Ejecute el siguiente comando para instalar una característica de consulta de json para extraer el resumen del archivo authdata:

      ```
      sudo yum install jq
      ```

   1. Para extraer el valor de resumen, busque primero los siguientes datos en el archivo authdata:

      ```
      {
        "Version":"1.0",
        "PublicKey":"",
        "Data":[
          {
            "HsmId": <"HSM ID">,
            "Digest": <"DIGEST">,
            "Signature": ""
          }
        ]
      }
      ```
**nota**  
El resumen obtenido está codificado en base64; sin embargo, para firmarlo, es necesario decodificar primero el archivo y, a continuación, firmarlo. El siguiente comando decodificará el resumen y almacenará el contenido decodificado en 'digest1.bin'  

      ```
      cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
      ```

   1. Convierta el contenido de la clave pública, añada "\$1n" y elimine los espacios, tal como se muestra a continuación:

      ```
      -----BEGIN PUBLIC KEY-----\n<PUBLIC KEY>\n-----END PUBLIC KEY----- 
      ```
**importante**  
El comando anterior muestra cómo se agrega «\$1n» inmediatamente después de **BEGIN PUBLIC KEY-----**, se eliminan los espacios entre «\$1n» y el primer carácter de la clave pública, se agrega «\$1n» antes de **-----END PUBLIC KEY** y se eliminan los espacios entre «\$1n» y la terminación de la clave pública.

      Este es el formato PEM para la clave pública que se admite en el archivo authdata.

   1. Pegue el contenido del formato PEM de clave pública en la sección de clave pública del archivo authdata.

      ```
      vi authdata
      ```

      ```
      {
        "Version":"1.0",
        "PublicKey":"-----BEGIN PUBLIC KEY-----\n<"PUBLIC KEY">\n-----END PUBLIC KEY-----",
        "Data":[    
          {      
            "HsmId":<"HSM ID">,
            "Digest":<"DIGEST">,      
            "Signature": ""   
          }  
        ]
      }
      ```

   1. Firme el archivo de token con el siguiente comando:

      ```
      openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64
      Output Expected:
      <"THE SIGNATURE">
      ```
**nota**  
Como se muestra en el comando anterior, utilice **openssl pkeyutl** en lugar de **openssl dgst** para firmar.

   1. Agregue el resumen firmado en el archivo de datos de autenticación en el campo "Firma".

      ```
      vi authdata
      ```

      ```
      {
          "Version": "1.0",
          "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----",
          "Data": [
              {
                  "HsmId": <"HSM ID">,
                  "Digest": <"DIGEST">,
                  "Signature": <"Kkdl ... rkrvJ6Q==">
              },
              {
                  "HsmId": <"HSM ID">,
                  "Digest": <"DIGEST">,
                  "Signature": <"K1hxy ... Q261Q==">
              }
          ]
      }
      ```

1. Regrese a la primera terminal y pulse **Enter**:

   ```
   Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, 
   which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below. Leave this field blank to use the path initially provided. 
   Enter filename: >>>>> Press Enter here
   
   createUser success on server 0(10.0.1.11)
   ```