Compartir vía


Administración de certificados en aplicaciones de alto nivel

Importante

Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).

CertStore API permite a una aplicación de alto nivel administrar certificados para utilizarlos en la autenticación de red. azsphere device certificate permite administrar certificados desde la línea de comandos.

Los certificados se almacenan en un almacenamiento no volátil en el dispositivo Azure Sphere. El almacén de certificados, o cert store, puede contener hasta 24 KiB de certificados. El tamaño máximo de un certificado es de 8 KiB. Los certificados de CA raíz suelen ser más grandes que los certificados de cliente. Además de usar el almacén de certificados, también puede acceder al certificado de cliente administrado por Microsoft. El certificado de cliente administrado por Microsoft solo estará disponible para su uso cuando el dispositivo esté conectado a Internet al menos una vez cada 24 horas.

Uso del certificado de cliente administrado por Microsoft

Use estas dos funciones para obtener un certificado de cliente y determinar si está listo para su uso.

  • DeviceAuth_GetCertificatePath devuelve una ruta de acceso de archivo a un certificado de cliente administrado por el sistema operativo. Algunas bibliotecas requieren esta ruta de acceso de archivo para cargar un certificado para las comunicaciones TLS.

  • Application_IsDeviceAuthReady para comprobar si la autenticación del dispositivo para la aplicación actual está lista.

Requisitos de CertStore

Las aplicaciones que usan CertStore API deben habilitar los archivos de encabezado adecuados y agregar la funcionalidad CertStore al manifiesto de aplicación.

Archivos de encabezado

Incluya el encabezado CertStore en el proyecto:

 #include <applibs\certstore.h>

Configuración del manifiesto de aplicación

Para usar las API del almacén de certificados, debe agregar la funcionalidad de aplicación CertStore al manifiesto de aplicación y establecer el valor en true. El tema Manifiesto de aplicación de Azure Sphere contiene más detalles sobre el manifiesto de aplicación.

{
  "SchemaVersion": 1,
  "Name" : "Mt3620App3",
  "ComponentId" : "bb267cbd-4d2a-4937-8dd8-3603f48cb8f6",
  "EntryPoint": "/bin/app",
  "CmdArgs": [],
   "Capabilities": {
    "AllowedConnections": [],
    "AllowedTcpServerPorts": [],
    "AllowedUdpServerPorts": [],
    "CertStore" : true,
    "Gpio": [],
    "Uart": [],
    "EnterpriseWifiConfig": true,
    "WifiConfig": true,
    "NetworkConfig": false,
    "SystemTime": true
  }
}

Identificadores de certificado

Cada certificado está asociado a un identificador de certificado (Id.). El identificador de certificado es una cadena de 1-16 caracteres que identifica de forma única el certificado en el dispositivo. Los caracteres válidos son 'a'-'z', 'A'-'Z', '0'-'9', el guion (-) y el carácter de subrayado (_). Cada identificador de certificado debe ser único en todo el dispositivo, independientemente del tipo de certificado que identifique.

El identificador de cada certificado se guarda en el almacén de certificados y se usa en todo el dispositivo: por la API CertStore , la API WifiConfig y la CLI de azsphere. Por lo tanto, si carga un certificado desde la línea de comandos, las aplicaciones que consultan, mueven o eliminan ese certificado deben utilizar el mismo identificador. Del mismo modo, si una aplicación carga el certificado, cualquier comando azsphere que manipule el certificado debe usar el mismo identificador. Si instala un nuevo certificado con el mismo identificador que un certificado existente del tipo que sea, el nuevo certificado sobrescribirá el existente.

Precaución

Dado que los identificadores de certificado tienen como ámbito todo el sistema, tanto para los certificados de cliente como para los de CA raíz, un comando azsphere o una llamada de función que agrega un certificado nuevo pueden sobrescribir un certificado agregado por un comando o una llamada de función anteriores, lo que podría producir errores de conexión de red. Se recomienda que desarrolle unos procedimientos de actualización de certificados claros y elija cuidadosamente los identificadores de certificado.

Incorporación de un nuevo certificado al almacén de certificados

Para agregar un certificado al almacén de certificados, una aplicación llama a una de las siguientes funciones:

  • CertStore_InstallClientCertificate instala un certificado de cliente que consta de un certificado público y de una clave privada.
  • CertStore_InstallRootCACertificate instala un certificado de CA raíz que consta de un certificado público.

El certificado debe estar presente en el dispositivo antes de que la aplicación pueda instalarlo. Los certificados deben seguir la sintaxis PKCS1 o PKCS8 y tener el formato .pem para cargarse en el dispositivo Azure Sphere. En Adquisición e implementación de certificados para redes EAP-TLS se describe cómo adquirir certificados y cargarlos en un dispositivo. Microsoft no proporciona certificados.

La instalación de un certificado lo agrega al almacén de certificados y hace que esté disponible para la autenticación. En el almacén de certificados, estos se administran por índice y se pueden recuperar por índice. El intervalo de valores de índice va de 0 a (CertStore_GetCertificateCount-1).

Una aplicación puede obtener el identificador del certificado en un índice determinado mediante una llamada a la función CertStore_GetCertificateIdentifierAt. Después, puede usar el identificador de certificado en las llamadas para obtener información sobre el certificado, para moverlo o eliminarlo, y usar un certificado para la autenticación.

Obtención de información sobre certificados

CertStore API incluye varias funciones que devuelven información acerca de un certificado almacenado:

Las horas no anteriores y no posteriores son útiles para administrar la duración y las actualizaciones de los certificados. Consulte Ciclo de vida y renovación del certificado para más información.

Cambio de nombre o eliminación de un certificado

Para cambiar el nombre o eliminar un certificado, una aplicación llama a CertStore_MoveCertificate o CertStore_DeleteCertificate.

CertStore_MoveCertificate cambia el nombre de un certificado al modificar su identificador de certificado. Como los identificadores de certificado deben ser únicos en un dispositivo, si cambia el nombre de un certificado asignándole el mismo identificador que el de otro certificado, se eliminará dicho certificado. Por ejemplo, si el almacén de certificados contiene MyCert y YourCert, al mover MyCert a YourCert, se obtiene un certificado único con el identificador YourCert, que contiene los datos del valor MyCert anterior. No se devuelve ningún error.

CertStore_DeleteCertificate elimina un único certificado. Al eliminar un certificado, se vuelven a indexar los certificados restantes, empezando por 0. Por lo tanto, para eliminar todos los certificados del almacén de certificados, debe crear un bucle en función del número de certificados, así como eliminar el certificado en el índice 0 en cada iteración. Si intenta eliminar un certificado de un índice que ya no está en uso, CertStore_GetCertificateIdentifierAt devuelve ERANGE.

El método siguiente funciona correctamente:

for (int i = 0; i < CertStore_GetCertificateCount(); i++) {
    struct CertStore_Identifier id;
    result = CertStore_GetCertificateIdentifierAt(0, &id);
    CertStore_DeleteCertificate(id.identifier);
}

Uso de un certificado para la autenticación de red

WifiConfig API proporciona funciones que establecen y devuelven los certificados que están habilitados para una configuración de Wi-Fi concreta. Consulte Configuración de una red EAP-TLS en una aplicación para más información sobre cómo puede configurar una aplicación de alto nivel una red EAP-TLS que utilice certificados para la autenticación.

Ejemplo de certificado

La aplicación de ejemplos de certificados muestra cómo puede una aplicación usar las funciones CertStore.