Convertir datos PKCS#7 / CMS a JOSE
Inspecciona un archivo PKCS#7 / CMS para saber qué necesita su conversión y luego conviértelo a JOSE: los datos firmados se convierten en un JWS, los datos ensobrados (enveloped) en un JWE, y los datos firmados y ensobrados en un JWE cuyo texto en claro es un JWS. La conversión cambia el contenedor, no los algoritmos; los algoritmos clásicos se conservan, y el cifrado de contenido CBC pasa a GCM.
Quién puede hacerlo
Una aplicación autenticada como actor criptográfico de tu tenant:
- El análisis necesita el scope
migration.analyzePkcs7. No descifra nada y no usa ninguna clave. - La conversión necesita el scope
migration.convertPkcs7, además de concesiones de capacidad sobre las claves involucradas: REENCRYPT sobre la clave que descifra y sobre cada clave de destinatario, y RESIGN sobre la clave de cada firmante.
Ningún rol de la consola realiza estas operaciones.
Antes de empezar
- La aplicación puede obtener un token. Consulta Obtener un token de acceso para una aplicación.
- Para una conversión, cada firmante y cada destinatario del archivo tiene una clave en tu tenant cuyo certificado lleva el emisor y el número de serie de ese actor. Cada firmante necesita su clave privada importada. El destinatario con el que descifras necesita una clave que pueda descifrar y cifrar; cada uno de los demás destinatarios, una clave que pueda cifrar. Un certificado importado por sí solo sirve únicamente para verificar y se rechaza para cualquier firmante o destinatario.
Pasos
- Analiza primero el archivo:
- SDK de Java:
sdk.analyzePkcs7(request)con unPkcs7AnalysisRequest, osdk.analyzePkcs7Stream(file)para un archivo grande. - CLI criptográfica:
AnkaSecureCLI analyze-pkcs7 --input-file <file>, oanalyze-pkcs7-streampara un archivo grande;--output-fileguarda el informe. - API:
POST /api/v3/migration/analyze-pkcs7con el archivo en Base64 enpkcs7Data, oPOST /api/v3/migration/stream/analyze-pkcs7con un cuerpomultipart/form-data,metadataantes defile.
- SDK de Java:
- Lee el informe:
supportStatusindica si la estructura se puede convertir, yrecommendations.requiredKeysnombra, por emisor y número de serie, cada clave que necesita la conversión. - Importa cualquier clave que falte y luego convierte:
- SDK de Java:
sdk.convertPkcs7ToJose(request)con unPkcs7ConversionRequest, osdk.convertPkcs7ToJoseStream(metadata, inputFile, outputFile)para un archivo grande. - CLI criptográfica:
AnkaSecureCLI convert-pkcs7 --input-file <file> --output-file <file>, con--decrypt-kid <kid>para elegir el destinatario con el que descifrar,--serializationy--target-format;convert-pkcs7-streampara un archivo grande. - API:
POST /api/v3/migration/convert-pkcs7-to-jose, oPOST /api/v3/migration/stream/convert-pkcs7-to-josepara un archivo grande.
- SDK de Java:
- Elige la serialización:
AUTO(la predeterminada) produce la forma compacta para un firmante y un destinatario como máximo, y la forma JSON general en los demás casos;COMPACTyJSONfuerzan una.
Qué ves cuando funcionó
El análisis lista cada firmante y cada destinatario, los algoritmos y los certificados, la forma JOSE que produciría una conversión y cada clave que necesita.
La conversión devuelve el token JOSE con una firma por cada clave de firmante y un destinatario por cada clave de destinatario, y asocia cada firmante y destinatario original al identificador de clave que ahora lo representa. Cada firma CMS se verifica antes de volver a firmarse. La conversión en streaming escribe un JWS separado para los datos firmados y un JWE multiparte para los datos ensobrados.
Si falla
| Qué ves | Causa | Qué hacer |
|---|---|---|
400 .../errors/invalid-pkcs7 o .../errors/invalid-input | El archivo no es una estructura PKCS#7 / CMS válida, no es Base64 válido, o un parámetro está fuera de su vocabulario | Revisa el archivo y la solicitud |
422 .../errors/unsupported-pkcs7-format con UNSUPPORTED_SIGNER_IDENTIFIER o UNSUPPORTED_RECIPIENT_TYPE | Un firmante se identifica por el identificador de clave del sujeto, o un destinatario no es un transporte de clave RSA nombrado por emisor y número de serie | El archivo no se puede convertir tal como está |
422 con MISSING_SIGNER_KEY, MISSING_RECIPIENT_KEY, MISSING_RECIPIENT_PRIVATE_KEY o MISSING_ACTOR_KEYS | Un firmante o un destinatario no tiene una clave adecuada en el tenant | Importa la clave que nombra el análisis y vuelve a intentarlo |
422 con INCOMPATIBLE_SERIALIZATION | Se pidió COMPACT para más de un firmante o destinatario | Usa AUTO o JSON |
422 con DECRYPTION_FAILED | El contenido no se pudo descifrar con la clave del destinatario elegido | Revisa la clave que descifra |
403 .../errors/forbidden | Al token le falta el scope, al actor le falta una concesión sobre una clave, o el tenant o el actor no está en un estado que permita la operación | Pide a un administrador del tenant que revise los roles y las concesiones del actor |
404 | Una clave nombrada, o su certificado, no existe en el tenant | Revisa el identificador de clave |
409 .../errors/key-protection-backend-not-configured | El tenant no tiene backend de protección de claves | Un administrador del tenant lo configura |
413 | El archivo supera el límite de una sola solicitud | Usa la operación de streaming |
Sin la consola
Estas operaciones no tienen pantalla en la consola.
| Superficie | Cómo |
|---|---|
| SDK de Java | analyzePkcs7, analyzePkcs7Stream, convertPkcs7ToJose, convertPkcs7ToJoseStream en AuthenticatedSdk |
| CLI criptográfica | AnkaSecureCLI analyze-pkcs7, analyze-pkcs7-stream, convert-pkcs7, convert-pkcs7-stream |
| API | POST /api/v3/migration/analyze-pkcs7 (analyzePkcs7), POST /api/v3/migration/stream/analyze-pkcs7 (analyzePkcs7Stream), POST /api/v3/migration/convert-pkcs7-to-jose (convertPkcs7ToJose), POST /api/v3/migration/stream/convert-pkcs7-to-jose (convertPkcs7ToJoseStream) |
Relacionado
Estas páginas están en inglés: