Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A tanúsítványtároló minden tanúsítványkezelési művelet központi része. A CertOpenStore függvény funkciói egy telepíthető (vagy regisztrált) tanúsítványtároló-szolgáltatói függvény használatával bővíthetők. A CryptoAPI-val való használatra szolgáló függvények telepítésének vagy regisztrálásának áttekintéséért lásd OID áttekintése.
Jegyzet
Az egyéni tanúsítványtárolók automatikus üzembe helyezésekor a rendszer nem telepíti át automatikusan az egyéni tanúsítványtárolókat. Az egyéni tanúsítványtárolók áttelepítéséhez létre kell hoznia egy jegyzékfájlt az egyéni tárolók migrálásához, és a Windows felhasználói állapot áttelepítési eszközét (USMT) kell használnia.
CertOpenStore üres tárolót nyit meg a memóriában, és meghívja a tárolószolgáltatói függvényt (ha regisztrálva van vagy telepítve van) az lpszStoreProvider paraméterben átadott (OID) objektumazonosítóval. A CryptoAPI-hoz megadott előre definiált szolgáltatótípusok listájáért lásd CertOpenStore.
Az áruház szolgáltatói funkció átmásolja a tanúsítványait és a visszavonási listákat (CRL-eket) a memóriabeli tárolóba, amelyet a hCertStore fogantyú ad meg. Az új tárolószolgáltatói függvény a CryptoAPI-tanúsítványtároló bármely függvényét használhatja, például CertAddCertificateContextToStore vagy CertAddSerializedElementToStore, hogy a tanúsítványait és CRLs-eit a memóriában lévő tárolóba adja hozzá. Emellett a tárolószolgáltató függvény opcionálisan visszaadja az CERT_STORE_PROV_INFO struktúra összes adattagjának értékeit. A függvénynek csak akkor kell frissítenie ezt a struktúrát, ha támogatja a további visszahívási függvényeket. Ha például a tároló írásvédett lenne, valószínűleg nem lenne szükség más callback függvények támogatására. A lehetséges visszahívási függvények részleteiért és prototípusaiért lásd tanúsítványtároló szolgáltatói visszahívási függvényeit.
A felhasználónkénti TrustedPeople-tároló az előre meghatározott fizikai tárolókra korlátozódik. Felhasználónkénti TrustedPeople-tároló nem bővíthető. Azonban kiterjesztheti a helyi gép TrustedPeople tárolóját.
Windows XP és Windows Server 2003: A felhasználónkénti TrustedPeople áruház nem korlátozódik előre meghatározott fizikai tárolókra.
A CERT_STORE_PROV_INFO struktúra egyik adattagja az rgpvStoreProvFunc tömb. Ha az áruházszolgáltatói függvénynek támogatnia kell egy vagy több visszahívási függvényt, a tömbhöz mutatókat kell megadnia. Ezeknek a mutatóknak a visszahívási függvényekre kell mutatniuk, amelyeket más tanúsítványtárolói tevékenységekhez (például az áruház bezárásához) kell használni. Az alábbi ábrán a folyamat folyamata látható.
Ahogy az alábbi ábrán látható, az áruház megnyitása után más CryptoAPI-függvények (például CertCloseStore) a mutatótömb használatával érik el a kívánt feladatot végrehajtó visszahívási függvényeket. A CERT_STORE_PROV_INFO struktúra definíciója és a CryptoAPI által biztosított alapértelmezett visszahívási függvények prototípusai a Tanúsítványtároló szolgáltatói visszahívási függvényekrészben vannak bemutatva.
Az áruház API-jai lehetővé teszik a tárolószolgáltató számára a tanúsítványok, a CRL-ek és tanúsítványmegbízhatósági listák (CTL-ek) tárolását az áruház gyorsítótárán kívül (például a tanúsítványok külső adatbázisát, például a Microsoft Tanúsítványkiszolgáló-adatbázis által biztosítottakat).
CertOpenStore a megfelelő CertDllOpenStoreProv telepíthető szolgáltató függvényhez küldi el a pszStoreProvider paraméteren keresztül. A szolgáltató a pStoreProvInfo paraméterben adja vissza az adatokat, amelyek egy CERT_STORE_PROV_INFO struktúrára mutatnak. A CERT_STORE_PROV_INFO struktúra egy dwStoreProvFlags tagot tartalmaz. A CERT_STORE_PROV_EXTERNAL_FLAG jelző hozzá lett adva, hogy a szolgáltató jelezze, hogy a tanúsítványok, a CRL-ek és a CTL-ek kívül vannak az áruház gyorsítótárán.
CertDllOpenStoreProv visszahívási függvények tömbét adja vissza. A szolgáltató a következő visszahívási függvényeket implementálhatja:
- CERT_STORE_PROV_CLOSE_FUNC
- CERT_STORE_PROV_READ_CERT_FUNC
- CERT_STORE_PROV_WRITE_CERT_FUNC
- CERT_STORE_PROV_DELETE_CERT_FUNC
- CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC
- CERT_STORE_PROV_READ_CRL_FUNC
- CERT_STORE_PROV_WRITE_CRL_FUNC
- CERT_STORE_PROV_DELETE_CRL_FUNC
- CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC
- CERT_STORE_PROV_READ_CTL_FUNC
- CERT_STORE_PROV_WRITE_CTL_FUNC
- CERT_STORE_PROV_DELETE_CTL_FUNC
- CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC
A WRITE_CERT, WRITE_CRL és WRITE_CTL visszahívási függvény hívásainál a CERT_STORE_PROV_WRITE_ADD_FLAG beállításakor a dwFlags paraméter felső 16 bitje tartalmazza a dwAddDisposition értéket. A külső tárolók támogatásához a szolgáltató a következő visszahívási függvényeket valósíthatja meg:
- CERT_STORE_PROV_FIND_CERT_FUNC
- CERT_STORE_PROV_FREE_FIND_CERT_FUNC
- CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC
- CERT_STORE_PROV_FIND_CRL_FUNC
- CERT_STORE_PROV_FREE_FIND_CRL_FUNC
- CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC
- CERT_STORE_PROV_FIND_CTL_FUNC
- CERT_STORE_PROV_FREE_FIND_CTL_FUNC
- CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC
A tanúsítványvisszahívási függvények a következő aláírásokkal rendelkeznek:
typedef struct _CERT_STORE_PROV_FIND_INFO {
DWORD cbSize;
DWORD dwMsgAndCertEncodingType;
DWORD dwFindFlags;
DWORD dwFindType;
const void *pvFindPara;
} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;
typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,
*PCCERT_STORE_PROV_FIND_INFO;
typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CERT)(
IN HCERTSTOREPROV hStoreProv,
IN PCCERT_STORE_PROV_FIND_INFO pFindInfo,
IN PCCERT_CONTEXT pPrevCertContext,
IN DWORD dwFlags,
IN OUT void **ppvStoreProvFindInfo,
OUT PCCERT_CONTEXT *ppProvCertContext
);
typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CERT)(
IN HCERTSTOREPROV hStoreProv,
IN PCCERT_CONTEXT pCertContext,
IN void *pvStoreProvFindInfo,
IN DWORD dwFlags
);
typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)(
IN HCERTSTOREPROV hStoreProv,
IN PCCERT_CONTEXT pCertContext,
IN DWORD dwPropId,
IN DWORD dwFlags,
OUT void *pvData,
IN OUT DWORD *pcbData
);
A CRL- és CTL-visszahívási függvények aláírásai megegyeznek a fentivel, de a CERT_CONTEXT mutató CRL_CONTEXT vagy CTL_CONTEXTmutatóra van cserélve.
A FIND_CERT visszahívás akkor kerül meghívásra, amikor a tároló API-k tanúsítványokat sorolnak fel, keresnek, vagy adnak hozzá. pPrevCertContext és ppvStoreProvFindInfo beállítása NULL az új FIND kezdeményezéséhez. A visszaadott ppvStoreProvFindInfo a következő keresés során kerül visszaadásra, amely időpontban a szolgáltató felszabadíthatja. A szolgáltató a tanúsítvány összes tulajdonságát, némelyikét vagy egyikét sem állíthatja be. A szolgáltatónak lehetősége van elhalasztani a műveletet, amíg a GET_CERT_PROPERTY visszahívást meg nem hívják. Javasoljuk, hogy a szolgáltatók a lehető legtöbb tulajdonságot állítsa be, hogy lehetővé tegyék a másolást egy másik tárolóba.
A következő tanúsítványkeresési típusok támogatottak CertFindCertificateInStore:
- CERT_FIND_ANY
- CERT_FIND_SHA1_HASH
- CERT_FIND_MD5_HASH
- CERT_FIND_PROPERTY
- CERT_FIND_PUBLIC_KEY
- CERT_FIND_SUBJECT_NAME
- CERT_FIND_SUBJECT_ATTR (tárgy attribútum keresése)
- CERT_FIND_ISSUER_NAME
- CERT_FIND_ISSUER_ATTR
- CERT_FIND_SUBJECT_STR_A
- CERT_FIND_SUBJECT_STR_W
- CERT_FIND_ISSUER_STR_A
- CERT_FIND_ISSUER_STR_W
- CERT_FIND_KEY_SPEC
- CERT_FIND_ENHKEY_USAGE
A FIND_CERT visszahívás a fenti keresési típusok mindegyikére meghívható. A CertFindCertificateInStore átadott paramétereket a rendszer közvetlenül a CERT_STORE_PROV_FIND_INFO struktúrába másolja, mielőtt meghívná a FIND_CERT visszahívást. A CERT_STORE_PROV_FIND_INFO struktúra különböző keresési típusainak mezőértékeivel kapcsolatos részletekért lásd CertFindCertificateInStore.
A következő tanúsítványkeresési típusok támogatják a CertGetSubjectCertificateFromStore és CertGetIssuerCertificateFromStore API-kat, és segítenek megállapítani, hogy a tanúsítvány már létezik-e az áruházban a hozzáadás előtt:
- TANÚSÍTVÁNY_KERESÉS_TÁRGY
- TANÚSÍTVÁNY_KERES_KEZES_FELELӦSÉSÉT
- CERT_FIND_EXISTING
A CERT_FIND_SUBJECT_CERT esetében a pvFindPara paraméter egy CERT_INFO struktúrára mutat, amely tartalmazza a tárgy kiállítóját és sorozatszámát. A CERT_FIND_ISSUER_OF esetében a pvFindPara a tárgyhoz tartozó CERT_CONTEXT struktúrára mutat. A CERT_FIND_EXISTING esetében a pvFindPara a tanúsítvány egy CERT_CONTEXT, amely ellenőrzi, hogy létezik-e az áruházban.
A FREE_FIND_CERT visszahívás akkor lesz meghívva, ha a FIND_CERT visszahívás által visszaadott tanúsítványt nem használták fel egy későbbi FIND_CERT-ben, így a hivatkozási száma nullára csökken, vagy ha a CertCloseStorehívása révén lett kiadva. A CLOSE visszahívás meghívása előtt az összes, a FIND_CERT visszahívás által visszaadott tanúsítványt vissza kell adni a szolgáltatónak úgy, hogy átadjuk őket a FIND_CERT vagy a FREE_FIND_CERT visszahívásnak. Ugyanez vonatkozik a CRL- és CTL-visszahívásokra is.
A GET_CERT_PROPERTY visszahívást CertGetCertificateContextProperty hívja meg, ha nem találja a pCertContext paraméter megadott tulajdonságát. Ugyanez igaz a GET_CRL_PROPERTY-re és a GET_CTL_PROPERTY-re.
A FIND_CRL visszahívást akkor hívja meg a rendszer, amikor a tároló API-k számba kérik vagy lekérik a CRL-eket, és mielőtt hozzáadnának egy CRL-t. A következő CRL-keresési típusok lesznek definiálva:
A CRL_FIND_ISSUED_BY esetén a pvFindPara a CRL-kiállító CERT_CONTEXT mutatója. A CRL_FIND_EXISTING esetében pvFindPara a CRL CRL_CONTEXT mutatója annak megállapításához, hogy az már létezik-e az áruházban.
A FIND_CTL visszahívás akkor kerül meghívásra, amikor a tároló API-k felsorolják vagy keresik a CTL-eket. A következő CTL-kereséstípusok támogatottak CertFindCTLInStore:
- Bármelyik keresése
- CTL_FIND_SHA1_HASH
- CTL_FIND_MD5_HASH
- CTL_HASZNÁLAT KERESÉSE
- KERES_ELEMEK
- RÉSZBEN LÉTEZŐ KERESÉSE
A FIND_CTL visszahívás a fenti keresési típusok mindegyikéhez le van hívva. A CertFindCTLInStore átadott paramétereket a rendszer közvetlenül a CERT_STORE_PROV_FIND_INFO struktúrába másolja, mielőtt meghívja a FIND_CTL visszahívást. A CERT_STORE_PROV_FIND_INFO struktúra különböző keresési típusainak mezőértékeivel kapcsolatos részletekért lásd CertFindCTLInStore.
A CTL_FIND_EXISTING CTL-keresés típusa segít megállapítani, hogy a CTL már létezik-e az áruházban a CTL hozzáadása előtt.
A CTL_FIND_EXISTING esetében pvFindPara a CTL CTL_CONTEXT szerkezetére mutató mutató, amely megállapítja, hogy már létezik-e az áruházban.