# Llaves privada y pública

# Generando las llaves privada y pública

Para el proceso de firma de los mensajes, usaremos un mecanismo estándar de criptografía asimétrica, por medio de llaves privadas y públicas.

A continuación encontrarás una lista paso a paso para generar el par de llaves RSA, y cómo exportar la llave pública.

Los siguientes ejemplos se muestran utilizando herramientas para la línea de comandos de Unix o MacOS

# Unix/Mac command line tools

  1. Generar el par RSA con openssl
openssl genrsa -des3 -out my_rsa_key_pair 2048 Generating RSA private key, 2048 bit long modulus
..........................................................+++
.......................................................+++
e is 65537 (0x10001)
Enter pass phrase for my_rsa_key_pair: ********
Verifying - Enter pass phrase for my_rsa_key_pair: ********

TIP

Utilizando la opción -des3 asegura que el archivo pem generado esté protegido por una frase contraseña.

ls
my_rsa_key_pair
  1. Exportar la llave privada hacia el archivo private_key.pem
openssl pkcs8 -topk8 -inform PEM -in my_rsa_key_pair -outform PEM -out private_key.pem -nocrypt Enter pass phrase for my_rsa_key_pair: ********
ls
my_rsa_key_pair private_key.pem
  1. Exportar la llave pública hacia el archivo public_key.pem
openssl rsa -in my_rsa_key_pair -outform PEM -pubout -out public_key.pem Enter pass phrase for my_rsa_key_pair: ********
writing RSA key
ls
my_rsa_key_pair private_key.pem public_key.pem

# Windows

WARNING

La herramienta PuttyGen no es recomendada ya que el formato por defecto no es PKCS8. Usa el contenedor Docker de Alpine para generar la llave, o instala GitBash, o utiliza OpenSSL para Windows (opens new window).

# Utilizando el contenedor Docker Alpine

$ docker run --name openssl -it pgarrett/openssl-alpine:latest /bin/ash ... in the container, simple executes openssl command sequence 1) - 3) described above.
/ # openssl genrsa -des3 -out my_rsa_key_pair 2048
[Enter pass phrase for my_rsa_key_pair:] ...
/ # openssl pkcs8 -topk8 -inform PEM -in my_rsa_key_pair -outform PEM -out private_key.pem -nocrypt
/ # openssl rsa -in my_rsa_key_pair -outform PEM -pubout -out public_key.pem
/ # cat public_key.pem
-----BEGIN PUBLIC KEY-----
MIIBIjA... / # exit ## Puedes copiar y pegar las llaves o usar el comando COPY para obtener los archivos de llaves.
$ docker cp openssl:/public_key.pem .
$ docker cp openssl:/private_key.pem .

# Utilizando GitBash

Si tu tienes instalado GitBash en tu maquina con MS Windows, puedes usar los pasos y comandos de la sección Unix/MacOS.

Resguarda tus llaves

Guarda tu llave privada en un lugar seguro y solo comparte tu llave pública.

No compartas tu llave privada

NUNCA compartas la llave privada generada en los pasos anteriores. Walmart / Lider nunca solicitará la llave privada.

# Solicita el registro de tu llave pública

Una vez generada las llaves con los pasos anteriores, envía tu llave pública al correo soporteb2b@walmart.com desde tu cuenta de correo registrada en RetailLink con los siguientes datos.

  • Ambiente : Dev o Prod
  • Llave pública : public_key.pem

Las llaves son diferentes por ambiente

Para aumentar la seguridad y evitar errores debes enviar una llave diferentes para los ambientes de prueba o de producción. Para accesos múltiples por favor consulta al correo soporteb2b@walmart.com.

# Confirmación de registro existoso

Si los datos anteriores son correctos, se te enviará un correo de confirmación junto con un conjunto de cabeceras de autentificación únicos y específicos para la llave pública registrada, los cuales deben ser enviados en cada solicitud a la API.