Tu FIEL en tu propio Azure Key Vault

Guía paso a paso, desde cero y sin conocimientos previos de Azure. Al terminar, tu llave privada vivirá en un vault que tú controlas, SatGo la usará para firmar sin poder leerla, y tus peticiones al SAT solo llevarán el archivo .cer.

~30 minutosSin experiencia en Azure9 pasos

¿Qué vamos a hacer?

Hoy, para firmar ante el SAT, le envías a SatGo tu certificado .cer y tu llave privada .key. La llave privada es lo más sensible que tienes: quien la posee puede firmar en tu nombre.

Con esta guía vas a guardar esa llave en un Azure Key Vault tuyo. A partir de ese momento SatGo no recibe la llave: cuando necesita firmar algo, le pide a tu vault que firme y solo recibe de vuelta la firma. La llave nunca sale de tu suscripción, cada uso queda en tu bitácora de Azure, y puedes revocar el acceso cuando quieras sin pedirnos permiso.

¿No quieres montar un Key Vault? Existe una alternativa más ligera: puedes cifrar tu llave privada y contraseña en tu propio equipo (estándar JWE RSA-OAEP-256 + A256GCM) antes de enviarlas. Así viajan siempre cifradas y SatGo solo las descifra en memoria, sin que tengas que configurar nada en Azure. Ver la guía para cifrar tu e.firma (navegador o línea de comandos), la documentación de la API y Seguridad.

Antes

  1. Envías .cer + .key en cada petición
  2. SatGo firma con tu llave en memoria
  3. La llave viaja por internet cada vez

Después

  1. Envías solo el .cer
  2. Tu vault firma; SatGo solo recibe la firma
  3. La llave nunca sale de tu suscripción

Antes de empezar necesitas:

  • Una cuenta en SatGo con tu RFC ya registrado.
  • Tu token JWT de SatGo (lo obtienes con POST /api/auth/token; ver Autenticación en la documentación).
  • Los archivos .cer y .key de tu FIEL, y su contraseña.
  • Una tarjeta de crédito o débito (Azure la pide para verificar identidad, aunque el costo del vault sea de centavos).

¿No quieres administrar Azure?

Existe la alternativa SatGoManaged: nos envías el .cer y el .key una sola vez a POST /api/v1/secretprovider/signing-key/store y nosotros los guardamos en nuestro vault. No necesitas cuenta de Azure ni esta guía. Es más cómodo, pero la llave queda bajo nuestra custodia en vez de la tuya.
1

Crear tu cuenta y suscripción de Azure

10 min📍 portal.azure.com

Una suscripción de Azure es simplemente tu cuenta de facturación: el contenedor donde vivirán los recursos que crees. Si tu empresa ya tiene una, pídele acceso a tu área de sistemas y salta al paso 2.

  1. Entra a azure.microsoft.com/free y haz clic en Comenzar gratis.
  2. Inicia sesión con una cuenta Microsoft. Si vas a usarlo para la empresa, crea una cuenta con el correo corporativo en lugar de usar una personal.
  3. Llena tus datos y verifica con teléfono y tarjeta. Azure hace un cargo temporal de verificación (se reembolsa); no se te cobra nada por usar la cuenta gratuita.
  4. Al terminar llegarás al portal en portal.azure.com. Ya tienes suscripción.

Sobre el idioma del portal

En esta guía los nombres de botones y campos van en inglés (Basics, Key vault name, Review + create…), que es como viene el portal de forma predeterminada. Si el tuyo está en español verás las traducciones (Datos básicos, Nombre del almacén, Revisar + crear); el orden de las pantallas es idéntico. Puedes cambiarlo en el ícono de engrane → Language + region.

¿Cuánto cuesta esto?

Un Key Vault no tiene renta mensual: se cobra por operación, alrededor de USD $0.03 por cada 10,000 operaciones de secretos y unos centavos por operación de firma con llaves de software. Para un uso normal hablamos de menos de un dólar al mes.
2

Crear el Key Vault

5 min📍 portal.azure.com

El Key Vault es la caja fuerte donde guardarás tu llave. Azure la administra por ti; tú solo decides quién entra.

  1. En el portal, escribe Key vaults en la barra de búsqueda superior y entra a la sección que aparece bajo Services (servicios).
Buscador del portal de Azure mostrando el servicio Key vaultsAl escribir "keyvau" en la barra de búsqueda del portal aparece la sección Servicios con dos resultados: "Key vaults" (tipo de recurso Microsoft.KeyVault/vaults), que es el correcto y aparece resaltado, y "Azure Key Vault Managed HSMs", que no debes elegir.keyvauAllServices (2)Marketplace (3)More (4)ServicesKey vaultsResource type: Microsoft.KeyVault/vaultsAzure Key Vault Managed HSMsResource type: Microsoft.KeyVault/managedHSMsMarketplace
Ojo con este paso: el buscador devuelve dos servicios parecidos. Elige Key vaults (Microsoft.KeyVault/vaults), el resaltado en rojo. El otro, Managed HSMs, es un servicio distinto y mucho más caro que no necesitas. La ilustración es aproximada: el portal cambia de aspecto con el tiempo.
  1. Ya dentro de Key vaults, haz clic en + Create.
  2. Llena la pestaña Basics (datos básicos) con estos valores:
CampoQué poner
SubscriptionLa que acabas de crear

Suscripción.

Resource grouprg-satgo

Grupo de recursos. Haz clic en 'Create new'; es solo una carpeta para agrupar recursos.

Key vault namekv-miempresa-fiel

Debe ser único en todo Azure. Solo letras, números y guiones. Anótalo: lo usarás en el paso 8.

RegionMexico Central

Cualquiera funciona; elige la más cercana.

Pricing tierStandard

Plan de tarifa.

Days to retain deleted vaults90 (default)

Protección contra borrado accidental. Déjalo como viene. Soft-delete aparece como 'Enabled' y no se puede desactivar.

Pestaña Basics del asistente Create a key vault en el portal de AzureFormulario con las pestañas Basics, Access configuration, Networking, Tags y Review + create. En Basics se llenan Subscription, Resource group (New) rg-satgo, Key vault name kv-miempresa-fiel, Region Mexico Central y Pricing tier Standard. Abajo, Soft-delete aparece como Enabled y Days to retain deleted vaults en 90.Home › Key vaultsCreate a key vaultBasicsAccess configurationNetworkingTagsReview + createProject detailsSubscription *Suscripción de Azure 1Resource group *(New) rg-satgoKey vault name *kv-miempresa-fielRegion *Mexico CentralPricing tier *StandardCreate newInstance detailsRecovery optionsSoft-deleteEnabledDays to retain deleted vaults *90
Así se ve la pestaña Basics ya llena. Fíjate que Soft-delete viene Enabled y no es opcional. El modelo de permisos no está aquí: vive en la pestaña Access configuration, que es el siguiente punto.
  1. Ve a la pestaña Access configuration y en Permission model elige Azure role-based access control (RBAC). Este paso importa: el paso 6 asume RBAC.
  2. Haz clic en Review + create y luego en Create. Espera a que termine el despliegue (menos de un minuto).
  3. Abre el vault recién creado y copia su Vault URI desde la pantalla de Overview (la verás completa en el paso 3). Se ve así:

URI del vault — lo necesitarás en el paso 8

https://kv-miempresa-fiel.vault.azure.net/
3

Obtener tu Tenant ID (y el Vault URI)

1 min📍 portal.azure.com

Tu tenant (o directorio) es la organización dueña de la cuenta. Su ID es un identificador largo que le dice a SatGo a qué directorio pedirle permiso.

No hace falta ir a buscarlo a otra pantalla: los dos datos que necesitas están en el Overview de tu propio Key Vault, en el panel Essentials.

  1. Abre tu Key Vault y quédate en Overview (es la pantalla que abre por omisión).
  2. En la columna derecha del panel Essentials copia Vault URI (el del paso 2) y Directory ID.
Pantalla Overview de un Key Vault con Vault URI y Directory ID resaltadosPanel Essentials del Overview del vault. A la derecha aparecen resaltados los dos datos que necesitas: Vault URI (https://kv-miempresa-fiel.vault.azure.net/) y Directory ID, que es el Tenant ID. También se ven Sku Standard, Directory Name, Soft-delete y Purge protection.kv-miempresa-fielKey vaultDeleteMoveRefreshOpen in mobile⌃ EssentialsResource group:rg-satgoLocation:Mexico CentralSubscription:Suscripción de Azure 1Subscription ID:7d4e1a02-9c63-4b18-a5f7-2e60d8b93c14Vault URI:https://kv-miempresa-fiel.vault.azure.net/Sku (Pricing tier):StandardDirectory ID:3f2a91c4-7b8d-4e15-9a06-2c5d8e7f1b3aDirectory Name:Mi EmpresaSoft-delete:EnabledPurge protection:Enabled
Los dos datos que necesitas, en una sola pantalla. El truco está en el nombre: Directory ID es tu Tenant ID — Azure lo llama distinto aquí, pero es el mismo valor que pide keyOptions en el paso 8. Directory Name te confirma que es el directorio correcto.

Tenant ID (Directory ID) — guárdalo, lo usarás en los pasos 5 y 8

3f2a91c4-7b8d-4e15-9a06-2c5d8e7f1b3a

¿Prefieres otro camino?

El mismo valor aparece como Tenant ID en Microsoft Entra ID → Overview (antes Azure Active Directory). Y desde la terminal, con Azure CLI: az login y luego az account show --query tenantId -o tsv.
4

Pedirle a SatGo su identidad

1 min📍 Tu terminal

Para que tu vault pueda darle permiso a SatGo, primero necesitas saber quién es SatGo dentro de Azure. Ese dato lo entrega el endpoint GET /api/v1/secretprovider/identity, que además te devuelve la guía completa en formato JSON.

Petición

curl -X GET "https://api.sat-go.com/api/v1/secretprovider/identity" \
  -H "Authorization: Bearer <TU_TOKEN_JWT>"

Respuesta (recortada a lo que nos importa ahora)

{
  "crossTenant": {
    "consent": {
      "appClientId": "8c1d5e90-4f3b-42a7-b6e8-0d9c7a1f2e34",
      "adminConsentUrl": "https://login.microsoftonline.com/YOUR_TENANT_ID/adminconsent?client_id=8c1d5e90-4f3b-42a7-b6e8-0d9c7a1f2e34",
      "steps": [ "..." ]
    },
    "signingKey_fiel": {
      "endpoint": "POST /api/v1/secretprovider/signing-key/register",
      "requiredKvRole": "Key Vault Crypto User",
      "example": {
        "rfc": "XAXX010101ABC",
        "providerType": "AzureKeyVault",
        "providerUri": "https://mi-vault.vault.azure.net/",
        "keyName": "fiel-xaxx010101abc",
        "keyOptions": { "tenantId": "<tu-tenant-id>" }
      }
    }
  },
  "satGoManaged": { "...": "la alternativa sin Azure" }
}

Guarda dos datos de aquí:

El appClientId (la identidad de SatGo en Azure) y el adminConsentUrl, que usarás tal cual en el siguiente paso.
5

Autorizar a SatGo en tu directorio

2 min📍 Navegador · requiere ser administrador

Este paso crea una Aplicación empresarial de SatGo dentro de tu tenant. Piénsalo como darle de alta un gafete de visitante: existe en tu edificio, pero todavía no abre ninguna puerta. Los permisos reales se los das en el paso 6.

  1. Toma el adminConsentUrl del paso 4 y reemplaza YOUR_TENANT_ID por tu Tenant ID del paso 3:

URL final (con tu tenant ya sustituido)

https://login.microsoftonline.com/3f2a91c4-7b8d-4e15-9a06-2c5d8e7f1b3a/adminconsent?client_id=8c1d5e90-4f3b-42a7-b6e8-0d9c7a1f2e34
  1. Ábrela en el navegador e inicia sesión con una cuenta administrador global de tu tenant.
  2. Lee la pantalla de consentimiento y acepta. Azure te redirigirá a una página que puede mostrar un error de navegación: es normal e inofensivo, el consentimiento ya quedó registrado.
  3. Verifícalo en Microsoft Entra ID → Enterprise applications: debe aparecer una app cuyo Application ID coincide con el appClientId.

Si el botón de aceptar aparece deshabilitado

Tu cuenta no tiene rol de administrador global. Reenvía la URL a quien administre el tenant de tu organización; nadie más puede otorgar este consentimiento.
6

Darle a SatGo permiso de firma sobre tu vault

3 min📍 portal.azure.com

Ahora sí, la parte que define qué puede hacer SatGo. Le asignarás el rol Key Vault Crypto User, que permite usar la llave para firmar pero no exportarla ni leerla. Es exactamente el permiso mínimo que necesita.

  1. Abre tu Key Vault en el portal.
  2. En el menú izquierdo entra a Access control (IAM) y haz clic en + Add → Add role assignment.
  3. En la pestaña Role, busca y selecciona Key Vault Crypto User. Next.
  4. En Members, deja User, group, or service principal y haz clic en + Select members. Busca satgo-kv-byos-reader: es el nombre de la aplicación de SatGo que creó el consentimiento del paso 5. También puedes buscarla pegando el appClientId del paso 4.
  5. Review + assign. El permiso puede tardar hasta 5 minutos en propagarse.
Pestaña Members de Add role assignment con la app de SatGo seleccionadaAsistente Add role assignment en la pestaña Members. Selected role: Key Vault Crypto User. Assign access to: la opción User, group, or service principal está seleccionada. En la tabla de miembros aparece la aplicación satgo-kv-byos-reader, con su Object ID y tipo App.Home › kv-miempresa-fiel | Access control (IAM)Add role assignmentRoleMembersConditionsReview + assignSelected roleKey Vault Crypto UserAssign access toUser, group, or service principalManaged identityMembers+ Select membersNameObject IDTypesatgo-kv-byos-readerb5c8f210-3e47-4a91-8d62-7f0a1c9e4d83AppDescriptionOptional
La pestaña Members con la app ya agregada: nombre satgo-kv-byos-reader y tipo App. Si no la encuentras, es que falta el consentimiento del paso 5 — sin él la aplicación no existe todavía en tu tenant.

El Object ID de la tabla no es el appClientId

Cuando agregues la app, la columna Object ID mostrará un GUID distinto al appClientId que te dio /identity. Es normal y no significa que te hayas equivocado de aplicación: son dos identificadores diferentes del mismo objeto (el Application ID identifica la app; el Object ID identifica su representación dentro de tu tenant). Lo que debe coincidir es el nombre.

Alternativa por línea de comandos (Azure CLI)

az role assignment create \
  --role "Key Vault Crypto User" \
  --assignee 8c1d5e90-4f3b-42a7-b6e8-0d9c7a1f2e34 \
  --scope "/subscriptions/<TU_SUBSCRIPTION_ID>/resourceGroups/rg-satgo/providers/Microsoft.KeyVault/vaults/kv-miempresa-fiel"

¿Y si también quiero guardar la CIEC aquí?

El mismo consentimiento sirve para las dos cosas. Para la CIEC asigna además el rol Key Vault Secrets User y regístrala con POST /api/v1/secretprovider/secret/register. Los roles son independientes: uno permite firmar, el otro leer secretos.
7

Subir tu FIEL al vault

5 min📍 Tu terminal

El SAT te entrega la FIEL en dos archivos separados (.cer y .key), pero Azure los quiere juntos en un solo archivo PKCS#12 (.pfx). Vamos a convertirlos con OpenSSL y luego importarlos.

7.1 — Convertir los archivos del SAT a .pfx

Tienes dos caminos. El primero es una herramienta que hicimos justo para esto; el segundo es OpenSSL, por si prefieres no descargar nada.

Opción A — Convertidor de SatGo (recomendado)

Descarga convertidorpkcs12.zip (81 KB) y descomprímelo. Hace la conversión en un solo comando, sin archivos intermedios con tu llave expuesta. Requiere tener instalado el runtime de .NET 10.

Uso

SatScraper.Pkcs12Tool <certificado.cer> <llave.key> <password> [directorioSalida] [nombre.pfx]
CampoQué poner
certificado.cerfiel.cer

Tu certificado del SAT, tal cual (DER o PEM). Obligatorio.

llave.keyfiel.key

Tu llave privada del SAT, tal cual (PKCS8 DER). Obligatorio.

passwordla contraseña de tu FIEL

Obligatorio. Sirve para dos cosas: descifra tu .key y protege el .pfx que se genera. Es decir, el .pfx queda con esta misma contraseña.

directorioSalida./salida

Opcional. Si no lo pones, usa la carpeta actual. La crea si no existe.

nombre.pfxXAXX010101ABC.pfx

Opcional. Si no lo pones, usa el nombre del .cer con extensión .pfx.

Ejemplo

SatScraper.Pkcs12Tool fiel.cer fiel.key "MiContraseñaFIEL" ./salida XAXX010101ABC.pfx

# → PKCS12 generado exitosamente en: ./salida\XAXX010101ABC.pfx

La contraseña del .pfx es la misma de tu FIEL

No inventas una nueva: la herramienta reutiliza la contraseña que le pasas. Tenlo presente porque es la que te pedirá Azure en el paso 7.2 al subir el archivo.

Opción B — OpenSSL

Los archivos del SAT vienen en formato DER, por eso los pasos intermedios. Necesitas OpenSSL instalado (en Windows viene incluido con Git Bash).

Convertir .cer + .key → .pfx

# 1. El .key del SAT (DER cifrado) → PEM. Te pedirá la contraseña de tu FIEL.
openssl pkcs8 -inform DER -in fiel.key -out fiel_privada.pem

# 2. El .cer del SAT (DER) → PEM
openssl x509 -inform DER -in fiel.cer -out fiel_cert.pem

# 3. Unir ambos en un PKCS#12. Define aquí una contraseña para el .pfx.
openssl pkcs12 -export \
  -inkey fiel_privada.pem \
  -in fiel_cert.pem \
  -out fiel.pfx

Cuida los archivos intermedios

fiel_privada.pem contiene tu llave privada sin cifrar. Bórralo en cuanto generes el .pfx y no lo subas nunca a un repositorio. La Opción A no crea este archivo.

7.2 — Importar el .pfx como llave en el Key Vault

Fíjate bien en esto: la FIEL se importa en la sección Keys, no en Certificates. SatGo firma usando una llave (/keys/<nombre>) y el rol que le diste en el paso 6, Key Vault Crypto User, es justamente de llaves.

  1. En el menú izquierdo de tu vault abre Objects → Keys y haz clic en + Generate/Import.
Blade Keys de un Key Vault con una llave importadaMenú lateral del Key Vault con la sección Objects expandida y Keys seleccionada. En la barra superior está el botón + Generate/Import. La tabla lista una llave llamada fiel-xaxx010101abc con estado Enabled.OverviewActivity logAccess control (IAM)TagsDiagnose and solve problemsAccess policiesResource visualizerEvents⌄ ObjectsKeysSecretsCertificates› SettingsHome › kv-miempresa-fielkv-miempresa-fiel | KeysKey vault+ Generate/ImportRefreshRestore BackupManage deleted keysNameStatusfiel-xaxx010101abcEnabled
La sección Keys del vault. Aquí aparecerá tu llave cuando termines, y de aquí sale el nombre que registrarás en el paso 8.
  1. En Options elige Import.
  2. En File Upload selecciona el .pfx que generaste en el paso 7.1.
  3. Al seleccionarlo aparece un campo Password. Escribe ahí la contraseña de tu FIEL: es la misma que le pasaste al convertidor en el paso 7.1, porque el .pfx quedó protegido con ella.
  4. En Name escribe el nombre de la llave. Este es el valor exacto que irá en keyName en el paso 8, así que anótalo.
  5. Deja Key type en RSA y Enabled en Yes. Los demás campos (fechas de activación y expiración, opciones confidenciales) déjalos como vienen.
  6. Create.
Formulario Create a key del portal de Azure en modo ImportFormulario Create a key. Options está en Import, hay un File Upload para seleccionar el archivo .pfx, un campo Password que aparece al seleccionarlo, un campo Name obligatorio con el valor fiel-xaxx010101abc, Key type RSA seleccionado, casillas de activación y expiración sin marcar, y Enabled en Yes.Home › kv-miempresa-fiel › KeysCreate a keyOptionsImportFile Upload *fiel.pfxPassword *••••••••••••Name *fiel-xaxx010101abcKey typeRSASet activation dateSet expiration dateEnabledYesNo
El formulario en modo Import con los tres campos que importan. Ojo: Password no está visible al abrir la pantalla — aparece hasta que seleccionas el .pfx. Y Name es tu keyName del paso 8.

Sobre el nombre de la llave

Azure solo acepta letras, números y guiones (máximo 127 caracteres). Un nombre como fiel-xaxx010101abc funciona bien y te dice a simple vista de qué RFC es.
8

Registrar la llave en SatGo

1 min📍 Tu terminal

Este es el paso final de configuración: le dices a SatGo dónde está tu llave. Fíjate que no envías la llave, solo la dirección donde vive.

POST /api/v1/secretprovider/signing-key/register

curl -X POST "https://api.sat-go.com/api/v1/secretprovider/signing-key/register" \
  -H "Authorization: Bearer <TU_TOKEN_JWT>" \
  -H "Content-Type: application/json" \
  -d '{
    "rfc": "XAXX010101ABC",
    "providerType": "AzureKeyVault",
    "providerUri": "https://kv-miempresa-fiel.vault.azure.net/",
    "keyName": "fiel-xaxx010101abc",
    "keyOptions": "{\"tenantId\": \"3f2a91c4-7b8d-4e15-9a06-2c5d8e7f1b3a\"}"
  }'
CampoQué poner
rfcXAXX010101ABC

Debe estar ya registrado en tu cuenta de SatGo.

providerTypeAzureKeyVault

Literal, así se escribe.

providerUrihttps://<tu-vault>.vault.azure.net/

El URI que copiaste en el paso 2.

keyNamefiel-xaxx010101abc

El nombre que le diste a la llave en el paso 7.2 (campo Name).

keyOptions"{\"tenantId\": \"...\"}"

Ojo: es un string con JSON adentro, no un objeto. Lleva tu Tenant ID del paso 3 y es obligatorio.

Respuesta 200 OK

{
  "rfc": "XAXX010101ABC",
  "providerType": "AzureKeyVault",
  "providerUri": "https://kv-miempresa-fiel.vault.azure.net/",
  "keyName": "fiel-xaxx010101abc",
  "message": "Proveedor de firma registrado. Envía solo el .cer en las peticiones para usar firma remota."
}

El registro se valida en el momento

Antes de guardar nada, SatGo intenta firmar un dato de prueba con tu llave. Si recibes 200 OK significa que el vault es accesible, la llave existe y el permiso de firma funciona de verdad. Si algo está mal, te lo dice de inmediato con un 400 — revisa la sección Si algo falla.
9

Probar que todo funciona

2 min📍 Tu terminal

Primero confirma el estado del registro:

GET /api/v1/secretprovider/signing-key/{rfc}/status

curl -X GET "https://api.sat-go.com/api/v1/secretprovider/signing-key/XAXX010101ABC/status" \
  -H "Authorization: Bearer <TU_TOKEN_JWT>"
{
  "rfc": "XAXX010101ABC",
  "isRegistered": true,
  "providerType": "AzureKeyVault",
  "providerUri": "https://kv-miempresa-fiel.vault.azure.net/",
  "keyName": "fiel-xaxx010101abc",
  "updatedAt": "2026-07-16T10:32:00Z"
}

Y ahora la prueba de fuego: descarga tu Constancia de Situación Fiscal mandando solo el .cer. Sin llavePrivada, sin Contrasena.

POST /api/v2/consultar/csffiel — firma remota en acción

curl -X POST "https://api.sat-go.com/api/v2/consultar/csffiel" \
  -H "Authorization: Bearer <TU_TOKEN_JWT>" \
  -F "Rfc=XAXX010101ABC" \
  -F "Certificado=@fiel.cer" \
  --output constancia.pdf

¡Listo!

Si recibiste el PDF, tu llave privada ya no viaja a ningún lado. Cada firma que hagamos queda registrada en el log de tu Key Vault (Azure → tu vault → Monitoring), y puedes cortar el acceso cuando quieras quitando la asignación de rol del paso 6.

Si algo falla

400 · No se pudo validar la llave de firma: Acceso denegado…

El rol no está asignado o todavía no se propaga. Revisa que la asignación del paso 6 sea Key Vault Crypto User (no Reader, no Secrets User) y que apunte a la app de SatGo. Espera 5 minutos y reintenta.

400 · La llave 'x' no fue encontrada en el vault…

El keyName no coincide. Corre az keyvault key list --vault-name <tu-vault> --query "[].name" y usa el nombre exacto que aparezca.

400 · El campo 'tenantId' es requerido en SigningKeyOptions…

Falta keyOptions o va mal formado. Recuerda que es un string que contiene JSON: "{\"tenantId\": \"...\"}", no un objeto JSON directo.

400 · Para AzureKeyVault el URI debe tener el formato…

El providerUri debe ser exactamente https://<nombre>.vault.azure.net/ — sin rutas adicionales ni el nombre del certificado al final.

404 · El RFC no está registrado para este usuario

Da de alta el RFC en tu cuenta desde web.sat-go.com antes de registrar la llave.

La pantalla de consentimiento no me deja aceptar

Necesitas rol de administrador global en el tenant. Pásale la URL del paso 5 a quien administre Azure en tu organización.

¿Sigues atorado? Escríbenos a soporte@sat-go.com con el mensaje de error completo y el RFC. También puedes revisar la referencia técnica del endpoint o cómo protegemos tus credenciales.