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 YourCert
az áthelyezés YourCert
MyCert
egyetlen, azonosítóval YourCert
rendelkező tanúsítványt eredményez, amely az előzőtől MyCert
szá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.