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


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

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 az sphere-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 nemvolatilis 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ő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

Ezzel a két függvénnyel szerezhet be egy ügyféltanúsítványt, és megállapíthatja, hogy készen áll-e a használatra.

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

  • 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 adniuk a CertStore képességet az alkalmazásjegyzékhez.

Fejlécfájlok

Adja meg a CertStore fejlécét a projektben:

 #include <applibs\certstore.h>

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

A tanúsítványtároló API-k használatához hozzá kell adnia az CertStore alkalmazásképességet az alkalmazás jegyzékfájljához, és az értéket értékre kell állítania 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 attól, hogy milyen típusú tanúsítványt azonosít.

Az egyes tanúsítványok azonosítóját a rendszer a tanúsítványtárolóba menti, és az eszközre kiterjedően használja: a CertStore API, a WifiConfig API és az Azure CLI-bővítmény. Ezért ha a parancssorból tölt be egy 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 módosító összes az sphere parancsnak ugyanazt az azonosítót kell használnia. Ha olyan új tanúsítványt telepít, amelynek azonosítója megegyezik egy meglévő, bármilyen típusú tanúsítvánnyal, az új tanúsítvány felülírja a meglévőt.

Figyelem

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 az sphere parancsok 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ít egy ü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ítené. A tanúsítványoknak PKCS1 vagy PKCS8 szintaxissal és .pem formátumban kell lenniük, hogy betölthetők legyenek az Azure Sphere-eszközre. Az EAP-TLS-hálózatok tanúsítványainak beszerzése és üzembe helyezése leírja, hogyan szerezhet be tanúsítványokat, és hogyan töltheti be őket egy eszközre. A Microsoft nem ad meg 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 hitelesítéshez. A tanúsítványtárolón belül a tanúsítványokat az index kezeli, és index által kérhetők le. Az indexértékek tartománya 0 és (CertStore_GetCertificateCount - 1) között fut.

Az alkalmazások a CertStore_GetCertificateIdentifierAt függvény meghívásával lekérhetik 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ány adatainak 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 függvényt tartalmaz, amelyek egy tárolt tanúsítvánnyal kapcsolatos információkat adnak vissza:

A nem korábbi és a nem utólagos időpontok hasznosak a tanúsítvány élettartamának és frissítéseinek kezelésében. Részletekért lásd: Tanúsítvány életciklusa és megújítása .

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

A tanúsítványok átnevezéséhez vagy törléséhez egy alkalmazás meghívja CertStore_MoveCertificate vagy CertStore_DeleteCertificate.

CertStore_MoveCertificate átnevez egy tanúsítványt a tanúsítványazonosító módosításával. Mivel a tanúsítványazonosítóknak egyedinek kell lenniük az eszközön, a tanúsítvány átnevezése azzal, hogy ugyanazt az azonosítót adja meg, mint amelyet egy másik tanúsítvány töröl. Ha például a tanúsítványtároló tartalmazza MyCert a és YourCerta elemet, az YourCert áthelyezés MyCert egyetlen, azonosítójú YourCerttanúsítványt eredményez, amely a korábbiból MyCertszármazó adatokat tartalmazza. A rendszer nem ad vissza hibát.

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

A következő módszer megfelelően 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ű cikkből megtudhatja, hogyan állíthat be egy magas szintű alkalmazás egy tanúsítványokat hitelesítéshez használó EAP-TLS-hálózatot.

Tanúsítványminta

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