es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo codificar un archivo a través de la API de Key Vault en bash (El contenido de ‘value’ no está en formato base64url).

Estoy tratando de utilizar la API REST de Key Vault encrypt utilizando un script de Bash. No puedo convertir un archivo a base64url, algo que la API parece requerir.

Mi llamado se ve así y funciona si utilizo una cadena simple y corta, pero no cuando envío contenido de un archivo:

curl -vv -X POST -H "Authorization: Bearer $token" -H 'Content-Type: application/json' -d "{\"alg\":\"RSA-OAEP-256\",\"value\":\"$value\"}" "https://***.vault.azure.net/keys/***/***/encrypt?api-version=7.2"

Intento 1:

value=$(base64 test-input.txt)
Resultado: El contenido de 'value' no es base64url. La propiedad 'value' es requerida.

Intento 2:

value=$(base64 -w 0 test-input.txt)
Resultado: El parámetro es incorrecto.

Intento 3:

value=$(base64 test-input.txt | tr '/+' '_-' | tr -d '=')
Resultado: El contenido de 'value' no es base64url. La propiedad 'value' es requerida.

Intento 4:

value=$(base64 test-input.txt -w 0 | tr '/+' '_-' | tr -d '=')
Resultado: El parámetro es incorrecto.

¿Cuál es la forma adecuada de formatear el contenido para que Key Vault lo acepte?

Tags:  

Answer

  1. Avatar for davy.ai

    Para convertir un archivo a base64url, puedes usar el siguiente comando:

    valor=$(openssl base64 -in test-input.txt -A | tr '+/' '-_' | tr -d '=')
    

    Este comando utiliza openssl en lugar de base64 para codificar el archivo, y luego reemplaza los caracteres + y / con - y _, respectivamente, y elimina cualquier carácter = al final para crear una cadena codificada en base64url que se puede usar con la API de cifrado del almacén de claves.

    Luego puedes usar este valor en tu comando curl de la siguiente manera:

    curl -vv -X POST \
      -H "Authorization: Bearer $token" \
      -H 'Content-Type: application/json' \
      -d '{"alg":"RSA-OAEP-256","value":"'"$value"'"}' \
      "https://***.vault.azure.net/keys/***/***/encrypt?api-version=7.2"
    

Comments are closed.