Megosztás a következőn keresztül:


Tanúsítványok kezelése magas szintű alkalmazásokban

Fontos

Ez az Azure Sphere (örökölt) dokumentációja. Az Azure Sphere (örökölt) 2027. szeptember 27-én nyugdíjba vonul, és a felhasználóknak ekkorra az Azure Sphere-be (integrált) kell migrálniuk. Az Azure Sphere (integrált) dokumentációjának megtekintéséhez használja a TOC felett található Verzióválasztót.

A CertStore API lehetővé teszi, hogy egy magas szintű alkalmazás kezelje a hálózati hitelesítéshez használható tanúsítványokat. Az azsphere-eszköztanúsítvány lehetővé teszi a tanúsítványok parancssorból történő kezelését.

A tanúsítványok tárolása nem konvolatilis tárolóban történik az Azure Sphere-eszközön. A tanúsítványtároló vagy tanúsítványtároló legfeljebb 24 kiB tanúsítványt tartalmazhat. A tanúsítványok maximális mérete 8 KiB. A fő hitelesítésszolgáltatói tanúsítványok általában nagyobbak, mint az ügyféltanúsítványok. A tanúsítványtároló használata mellett a Microsoft által felügyelt ügyféltanúsítványt is elérheti. A Microsoft által felügyelt ügyféltanúsítvány csak akkor lesz elérhető, ha az eszköz legalább 24 óránként csatlakozik az internethez.

A Microsoft által felügyelt ügyféltanúsítvány használata

A két függvény segítségével beszerezhet egy ügyféltanúsítványt, és meghatározhatja, hogy használatra kész-e.

  • DeviceAuth_GetCertificatePath egy fájl elérési útját adja vissza az operációs rendszer által felügyelt ügyféltanúsítványnak. Ezt a fájlelérési utat egyes kódtárak a TLS-kommunikáció tanúsítványának betöltéséhez igénylik.

  • Application_IsDeviceAuthReady annak ellenőrzéséhez, hogy az aktuális alkalmazás eszközhitelesítése készen áll-e.

A CertStore követelményei

A CertStore API-t használó alkalmazásoknak tartalmazniuk kell a megfelelő fejlécfájlokat, és hozzá kell adni a CertStore képességet az alkalmazásjegyzékhez.

Fejlécfájlok

Adja meg a CertStore fejlécet a projektben:

 #include <applibs\certstore.h>

Alkalmazásjegyzék beállításai

A tanúsítványtároló API-k használatához fel kell vennie az CertStore alkalmazásképességet az alkalmazásjegyzékbe, és be kell állítania az értéket true. Az Azure Sphere-alkalmazásjegyzék témaköre további részleteket tartalmaz az alkalmazásjegyzékről.

{
  "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
  }
}

Tanúsítványazonosítók

Minden tanúsítvány egy tanúsítványazonosítóhoz (ID) van társítva. A tanúsítványazonosító egy 1–16 karakterből álló sztring, amely egyedileg azonosítja a tanúsítványt az eszközön. Érvényes karakterek: 'a'-'z', 'A'-'Z', '0'-'9', kötőjel (-). és aláhúzás (_). Minden tanúsítványazonosítónak egyedinek kell lennie az eszközön, függetlenül az általa azonosított tanúsítvány típusától.

Minden tanúsítványazonosítót a rendszer a tanúsítványtárolóba ment, és eszközszintűen használja: a CertStore API, a WifiConfig API és az azsphere CLI. Ezért ha a parancssorból tölt be tanúsítványt, a tanúsítványt lekérdező, áthelyező vagy törölni kívánt alkalmazásoknak ugyanazt az azonosítót kell használniuk. Hasonlóképpen, ha egy alkalmazás betölti a tanúsítványt, a tanúsítványt kezelő összes azsphere-parancsnak ugyanazt az azonosítót kell használnia. Ha bármilyen típusú meglévő tanúsítvánnyal azonos azonosítójú új tanúsítványt telepít, az új tanúsítvány felülírja a meglévőt.

Figyelemfelhívás

Mivel a tanúsítványazonosítók rendszerszintűek mind az ügyfél-, mind a legfelső szintű hitelesítésszolgáltatói tanúsítványokhoz, az azsphere parancs vagy egy új tanúsítványt hozzáadó függvényhívás felülírhatja a korábbi parancsok vagy függvényhívások által hozzáadott tanúsítványokat, ami hálózati kapcsolati hibákat okozhat. Határozottan javasoljuk, hogy dolgozzon ki egyértelmű tanúsítványfrissítési eljárásokat, és körültekintően válassza ki a tanúsítványazonosítókat.

Tanúsítvány hozzáadása a tanúsítványtárolóhoz

Ha tanúsítványt szeretne hozzáadni a tanúsítványtárolóhoz, az alkalmazás az alábbi függvények egyikét hívja meg:

  • CertStore_InstallClientCertificate telepíti az ügyféltanúsítványt, amely nyilvános tanúsítványból és titkos kulcsból áll
  • CertStore_InstallRootCACertificate egy nyilvános tanúsítványból álló legfelső szintű hitelesítésszolgáltatói tanúsítványt telepít

A tanúsítványnak jelen kell lennie az eszközön, mielőtt az alkalmazás telepíteni tudja. A tanúsítványoknak PKCS1 vagy PKCS8 szintaxisban és .pem formátumban kell lenniük ahhoz, hogy betöltse az Azure Sphere-eszközre. Az EAP-TLS-hálózatok tanúsítványainak beszerzése és üzembe helyezése azt ismerteti, hogyan szerezhet be tanúsítványokat, és hogyan töltheti be őket egy eszközre. A Microsoft nem biztosít tanúsítványokat.

A tanúsítvány telepítése hozzáadja a tanúsítványtárolóhoz, és elérhetővé teszi a hitelesítéshez. A tanúsítványtárolón belül a tanúsítványokat index kezeli, és az indexek lekérhetik. Az indexértékek tartománya 0 és (CertStore_GetCertificateCount – 1) között fut.

Az alkalmazás az CertStore_GetCertificateIdentifierAt függvény meghívásával lekérheti a tanúsítvány azonosítóját egy adott indexben. Ezután a hívásokban a tanúsítványazonosítót használhatja a tanúsítványra vonatkozó információk lekéréséhez, a tanúsítvány áthelyezéséhez vagy törléséhez, valamint egy tanúsítvány hitelesítéshez való használatához.

Tanúsítványadatok lekérése

A CertStore API számos olyan függvényt tartalmaz, amelyek adatokat adnak vissza egy tárolt tanúsítványról:

  • CertStore_GetCertificateNotBefore megkapja a tanúsítvány érvényességének időpontját
  • CertStore_GetCertificateNotAfter megkapja a tanúsítvány lejáratának időpontját
  • CertStore_GetCertificateIssuerName lekéri a tanúsítvány kiállítójának nevét
  • CertStore_GetCertificateSubjectName megkapja a tanúsítvány tulajdonosának nevét, vagyis azt, amit a tanúsítvány véd

A korábbi és a nem utó idők hasznosak a tanúsítvány élettartamának és frissítéseinek kezelésében. Részletekért tekintse meg a tanúsítvány életciklusát és megújítását .

Tanúsítvány átnevezése vagy törlése

Tanúsítvány átnevezéséhez vagy törléséhez egy alkalmazás meghívja CertStore_MoveCertificate vagy CertStore_DeleteCertificate.

CertStore_MoveCertificate a tanúsítványazonosító módosításával átnevezi a tanúsítványt. Mivel a tanúsítványazonosítóknak egyedinek kell lenniük az eszközön, a tanúsítvány átnevezésével ugyanazt az azonosítót kell megadnia, mint egy másik tanúsítvány, amely törli a tanúsítványt. Ha például a tanúsítványtároló tartalmazMyCert, és YourCertaz áthelyezés YourCert MyCert egyetlen, azonosítóval YourCertrendelkező tanúsítványt eredményez, amely az előzőtől MyCertszármazó adatokat tartalmazza. A függvény nem ad vissza hibát.

CertStore_DeleteCertificate egyetlen tanúsítványt töröl. A tanúsítványok törlése miatt a fennmaradó tanúsítványok újraindexelhetők 0-tól kezdve. Ezért a tanúsítványtároló összes tanúsítványának törléséhez a tanúsítványok száma alapján kell hurkot létrehoznia, de minden iterációban törölnie kell a tanúsítványt a 0 indexben. Ha olyan indexben próbál törölni egy tanúsítványt, amely már nincs használatban, CertStore_GetCertificateIdentifierAt az ERANGE-t adja vissza.

A következő módszer helyesen működik:

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

Tanúsítvány használata hálózati hitelesítéshez

A WifiConfig API olyan függvényeket biztosít, amelyek beállítják és visszaadják az adott Wi-Fi-konfigurációhoz engedélyezett tanúsítványokat. Az EAP-TLS-hálózat beállítása az alkalmazásokban című cikkben tájékozódhat arról, hogy egy magas szintű alkalmazás hogyan állíthat be tanúsítványokat használó EAP-TLS-hálózatot a hitelesítéshez.

Tanúsítványminta

A Tanúsítvány mintaalkalmazás bemutatja, hogyan használhatja egy alkalmazás a CertStore függvényeket.