Azure Key Vault Certificates ügyfélkódtár JavaScripthez – 4.8.0-s verzió
Az Azure Key Vault egy felhőszolgáltatás, amely biztonságos tárolást és automatikus felügyeletet biztosít a felhőalkalmazások tanúsítványainak. Az Azure Key Vault több tanúsítványt és ugyanazon tanúsítvány több verzióját is megőrizheti. A tároló minden tanúsítványához tartozik egy szabályzat, amely szabályozza a tanúsítvány kiállítását és élettartamát, valamint a hamarosan lejáró tanúsítványokként végrehajtandó műveleteket.
Ha többet szeretne megtudni az Azure Key Vault-ról, tekintse át a következőt: Mi az az Azure Key Vault?
Használja az Azure Key Vault-tanúsítványok ügyfélkódtárát az Node.js alkalmazásban a következő célokra:
- Tanúsítvány lekérése, beállítása és törlése.
- Tanúsítvány, attribútumai, kiállítója, szabályzata, művelete és névjegyei frissítése.
- Tanúsítvány biztonsági mentése és visszaállítása.
- Törölt tanúsítvány lekérése, végleges törlése vagy helyreállítása.
- A tanúsítvány összes verziójának lekérése.
- Szerezze be az összes tanúsítványt.
- Szerezze be az összes törölt tanúsítványt.
Megjegyzés: Ez a csomag az Azure Key Vault szolgáltatás korlátozásai miatt nem használható a böngészőben. Útmutatásért tekintse meg ezt a dokumentumot.
Főbb hivatkozások:
Első lépések
Jelenleg támogatott környezetek
Előfeltételek
- Azure-előfizetés
- Egy meglévő Azure-Key Vault. Ha létre kell hoznia egy kulcstartót, ezt az Azure Portalon teheti meg a jelen dokumentum lépéseit követve. Alternatív megoldásként használja az Azure CLI-t az alábbi lépések végrehajtásával.
A csomag telepítése
Az Azure Key Vault Certificates ügyfélkódtár telepítése az npm használatával
npm install @azure/keyvault-certificates
Az identitástár telepítése
Key Vault ügyfelek hitelesítése az Azure Identity Library használatával. Az npm használatával is telepítheti
npm install @azure/identity
TypeScript konfigurálása
A TypeScript-felhasználóknak telepítve kell lenniük a csomóponttípus-definícióknak:
npm install @types/node
A tsconfig.json is engedélyeznie compilerOptions.allowSyntheticDefaultImports
kell. Vegye figyelembe, hogy ha engedélyeztecompilerOptions.esModuleInterop
allowSyntheticDefaultImports
, a alapértelmezés szerint engedélyezve van. További információt a TypeScript fordítóbeállítási kézikönyvében talál.
Hitelesítés az Azure Active Directoryval
A Key Vault szolgáltatás az Azure Active Directoryra támaszkodik az API-k felé irányuló kérések hitelesítéséhez. A @azure/identity
csomag számos hitelesítőadat-típust biztosít, amelyeket az alkalmazás ehhez használhat. A README for @azure/identity
további részleteket és mintákat tartalmaz az első lépésekhez.
Az Azure Key Vault szolgáltatás használatához létre kell hoznia CertificateClient
egy osztálypéldányt, egy tároló URL-címét és egy hitelesítőadat-objektumot. Az ebben a dokumentumban bemutatott példák egy nevű hitelesítő objektumot DefaultAzureCredential
használnak, amely a legtöbb forgatókönyvhöz, beleértve a helyi fejlesztési és éles környezeteket is. Emellett azt javasoljuk, hogy felügyelt identitást használjon a hitelesítéshez éles környezetben.
A hitelesítés különböző módjairól és a hozzájuk tartozó hitelesítő adatok típusairól az Azure Identity dokumentációjában talál további információt.
Íme egy gyors példa. Először importálja DefaultAzureCredential
és CertificateClient
:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
Miután importálta ezeket, a következő lépésben csatlakozhatunk a Key Vault szolgáltatáshoz:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
// Build the URL to reach your key vault
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
// Lastly, create our certificates client and connect to the service
const client = new CertificateClient(url, credential);
Fő fogalmak
- A Tanúsítványok ügyfél az elsődleges felület, amely egy JavaScript-alkalmazásból származó Azure Key Vault API-tanúsítványokhoz kapcsolódó API-metódusokkal kommunikál. Az inicializálást követően olyan egyszerű metóduskészletet biztosít, amellyel tanúsítványok hozhatók létre, olvashatók, frissíthetők és törölhetők.
- A tanúsítványverzió a Key Vault tanúsítványának verziója. Minden alkalommal, amikor egy felhasználó egy értéket rendel egy egyedi tanúsítványnévhez, létrejön a tanúsítvány új verziója . A tanúsítvány névvel történő lekérése mindig a legújabb hozzárendelt értéket adja vissza, hacsak nem ad meg egy adott verziót a lekérdezésnek.
- A helyreállítható törlés lehetővé teszi, hogy a Key Vaultok két külön lépésként támogassák a törlést és a törlést, így a törölt tanúsítványok nem vesznek el azonnal. Ez csak akkor fordul elő, ha a Key Vault engedélyezve van a helyreállítható törlés.
- A tanúsítvány biztonsági mentése bármely létrehozott tanúsítványból létrehozható. Ezek a biztonsági másolatok bináris adatokként jönnek létre, és csak a korábban törölt tanúsítványok újragenerálásához használhatók.
Az Azure Key Vault szolgáltatás API-verziójának megadása
Alapértelmezés szerint ez a csomag az Azure Key Vault legújabb szolgáltatásverzióját használja, amely a következő7.1
: . Az egyetlen támogatott verzió a 7.0
következő: . A használt szolgáltatásverziót az ügyfélkonstruktorban az alábbi módon serviceVersion
állíthatja be:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
// Change the Azure Key Vault service API version being used via the `serviceVersion` option
const client = new CertificateClient(url, credential, {
serviceVersion: "7.0",
});
Példák
Az alábbi szakaszok olyan kódrészleteket nyújtanak, amelyek az Azure Key Vault-tanúsítványokat használó gyakori feladatok némelyikét ismertetik. Az itt tárgyalt forgatókönyvek a következőkből állnak:
- Tanúsítvány létrehozása és beállítása.
- Key Vault tanúsítvány beszerzése.
- A tanúsítvány teljes adatainak lekérése.
- Tanúsítványok PEM formátumban.
- Az összes tanúsítvány listázása.
- Tanúsítvány frissítése.
- Tanúsítvány törlése.
- A tanúsítványok listájának iterálása.
Tanúsítvány létrehozása és beállítása
beginCreateCertificate
létrehoz egy tanúsítványt, amely az Azure Key Vault tárolandó. Ha már létezik ilyen nevű tanúsítvány, létrejön a tanúsítvány új verziója.
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
// Note: Sending `Self` as the `issuerName` of the certificate's policy will create a self-signed certificate.
await client.beginCreateCertificate(certificateName, {
issuerName: "Self",
subject: "cn=MyCert",
});
}
main();
A tanúsítvány és a szabályzat neve mellett a következő tulajdonságokat is átadhatja egy harmadik argumentumban opcionális értékekkel:
enabled
: Logikai érték, amely meghatározza, hogy a tanúsítvány használható-e vagy sem.tags
: A tanúsítványok kereséséhez és szűréséhez használható kulcsértékek összes készlete.
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
// Note: Sending `Self` as the `issuerName` of the certificate's policy will create a self-signed certificate.
const certificatePolicy = {
issuerName: "Self",
subject: "cn=MyCert",
};
const enabled = true;
const tags = {
myCustomTag: "myCustomTagsValue",
};
async function main() {
await client.beginCreateCertificate(certificateName, certificatePolicy, {
enabled,
tags,
});
}
main();
Az azonos nevű hívás beginCreateCertificate
ugyanannak a tanúsítványnak egy új verzióját hozza létre, amely a legújabb attribútumokkal rendelkezik.
Mivel a tanúsítványok létrehozása némi időt vesz igénybe, egy lekérdezési objektumot ad vissza, beginCreateCertificate
amely nyomon követi a mögöttes hosszú futású műveletet az irányelveink szerint: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro
A kapott lekérdezés lehetővé teszi a létrehozott tanúsítvány lekérését a következő hívásával: poller.getResult()
.
A törlés befejezését is megvárhatja, ha egyéni szolgáltatáshívásokat futtat a tanúsítvány létrehozásához, vagy megvárja a folyamat befejezését:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
const certificatePolicy = {
issuerName: "Self",
subject: "cn=MyCert",
};
async function main() {
const poller = await client.beginCreateCertificate(certificateName, certificatePolicy);
// You can use the pending certificate immediately:
const pendingCertificate = poller.getResult();
// Or you can wait until the certificate finishes being signed:
const keyVaultCertificate = await poller.pollUntilDone();
console.log(keyVaultCertificate);
}
main();
A tanúsítvány aláírását úgy is megvárhatja, ha egyéni hívásokat végez, az alábbiak szerint:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const { delay } = require("@azure/core-util");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
const certificatePolicy = {
issuerName: "Self",
subject: "cn=MyCert",
};
async function main() {
const poller = await client.beginCreateCertificate(certificateName, certificatePolicy);
while (!poller.isDone()) {
await poller.poll();
await delay(5000);
}
console.log(`The certificate ${certificateName} is fully created`);
}
main();
Key Vault tanúsítvány beszerzése
A tanúsítványok a tárolóból való visszaolvasásának legegyszerűbb módja a tanúsítvány név szerinti lekérése. getCertificate
lekéri a tanúsítvány legújabb verzióját, valamint a tanúsítvány házirendjét. Ha megadja a verziót, meghívhatja a tanúsítvány getCertificateVersion
egy másik verzióját is. getCertificateVersion
nem adja vissza a tanúsítvány szabályzatát.
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
const latestCertificate = await client.getCertificate(certificateName);
console.log(`Latest version of the certificate ${certificateName}: `, latestCertificate);
const specificCertificate = await client.getCertificateVersion(
certificateName,
latestCertificate.properties.version
);
console.log(
`The certificate ${certificateName} at the version ${latestCertificate.properties.version}: `,
specificCertificate
);
}
main();
Tanúsítvány teljes adatainak lekérése
Az Azure Key Vault kialakítása éles különbségeket tesz a kulcsok, a titkos kódok és a tanúsítványok között. A Key Vault szolgáltatás Tanúsítványfunkciói a Kulcsok és titkos kódok funkcióit használva lettek kialakítva. Értékeljük ki egy Key Vault tanúsítvány összetételét:
A Key Vault tanúsítvány létrehozásakor a rendszer egy címzhető kulcsot és titkos kulcsot is létrehoz ugyanazzal a névvel. A Key Vault kulcs lehetővé teszi a kulcsműveleteket, a Key Vault titkos kód pedig a tanúsítványérték titkos kulcsként való lekérését. A Key Vault tanúsítvány nyilvános x509-tanúsítvány metaadatokat is tartalmaz. Forrás: Tanúsítvány összetétele.
Tudva, hogy a titkos kulcs egy Key Vault Titkos kódban van tárolva, és a nyilvános tanúsítványt is tartalmazza, lekérhetjük a Key Vault Titkos kódok ügyfélalkalmazással.
// Using the same credential object we used before,
// and the same keyVaultUrl,
// let's create a SecretClient
import { SecretClient } from "@azure/keyvault-secrets";
const secretClient = new SecretClient(keyVaultUrl, credential);
// Assuming you've already created a Key Vault certificate,
// and that certificateName contains the name of your certificate
const certificateSecret = await secretClient.getSecret(certificateName);
// Here we can find both the private key and the public certificate, in PKCS 12 format:
const PKCS12Certificate = certificateSecret.value!;
// You can write this into a file:
fs.writeFileSync("myCertificate.p12", PKCS12Certificate);
Vegye figyelembe, hogy alapértelmezés szerint a tanúsítványok tartalomtípusa PKCS 12. A tanúsítvány tartalomtípusának megadásával PEM formátumban lekérheti. Mielőtt bemutatjuk, hogyan hozhat létre PEM-tanúsítványokat, először ismerkedjünk meg a PEM titkos kulcsának lekérése egy PKCS 12-tanúsítványból.
A használatával openssl
pEM formátumban lekérheti a nyilvános tanúsítványt a következő paranccsal:
openssl pkcs12 -in myCertificate.p12 -out myCertificate.crt.pem -clcerts -nokeys
A titkos kulcs lekéréséhez az alábbiak szerint is használhatja openssl
:
openssl pkcs12 -in myCertificate.p12 -out myCertificate.key.pem -nocerts -nodes
Vegye figyelembe, hogy az openssl mindkét esetben a tanúsítvány létrehozásához használt jelszót kéri. Az eddig használt mintakód nem adott meg jelszót, így az egyes parancsok végéhez hozzáfűzhetők -passin 'pass:'
.
Tanúsítványok PEM formátumban
Ha PEM formátumú tanúsítványokkal szeretne dolgozni, az Azure Key Vault szolgáltatása PEM formátumban hozhatja létre és kezelheti a tanúsítványokat, ha megadja a contentType
tulajdonságot a tanúsítványok létrehozásakor.
Az alábbi példa bemutatja, hogyan hozhatja létre és kérdezheti le egy PEM formátumú tanúsítvány nyilvános és privát részeit a tanúsítványok és titkos kódok Key Vault ügyfélalkalmazásával:
// Creating the certificate
const certificateName = "MyCertificate";
const createPoller = await client.beginCreateCertificate(certificateName, {
issuerName: "Self",
subject: "cn=MyCert",
contentType: "application/x-pem-file", // Here you specify you want to work with PEM certificates.
});
const keyVaultCertificate = await createPoller.pollUntilDone();
// Getting the PEM formatted private key and public certificate:
const certificateSecret = await secretClient.getSecret(certificateName);
const PEMPair = certificateSecret.value!;
console.log(PEMPair);
Ne feledje, hogy a nyilvános tanúsítvány ugyanabban a tartalomblobban lesz, mint a titkos kulcs. A PEM-fejlécek használatával ennek megfelelően nyerheti ki őket.
Az összes tanúsítvány listázása
listPropertiesOfCertificates
listázni fogja az Key Vault összes tanúsítványát.
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
async function main() {
for await (let certificateProperties of client.listPropertiesOfCertificates()) {
console.log("Certificate properties: ", certificateProperties);
}
}
main();
Tanúsítvány frissítése
A tanúsítványattribútumok frissíthetők egy meglévő tanúsítványverzióra a következővel updateCertificate
:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
const result = await client.getCertificate(certificateName);
await client.updateCertificateProperties(certificateName, result.properties.version, {
enabled: false,
tags: {
myCustomTag: "myCustomTagsValue",
},
});
}
main();
A tanúsítvány szabályzata külön is frissíthető a következővel updateCertificatePolicy
:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
const result = client.getCertificate(certificateName);
// Note: Sending `Self` as the `issuerName` of the certificate's policy will create a self-signed certificate.
await client.updateCertificatePolicy(certificateName, {
issuerName: "Self",
subject: "cn=MyCert",
});
}
main();
Tanúsítvány törlése
A beginDeleteCertificate
metódus beállít egy tanúsítványt a törléshez. Ez a folyamat a háttérben történik, amint rendelkezésre állnak a szükséges erőforrások.
Ha a helyreállítható törlés engedélyezve van a Key Vault, ez a művelet csak törölt tanúsítványként címkézi fel a tanúsítványt. A törölt tanúsítványok nem frissíthetők. Ezek csak olvashatók, helyreállíthatók vagy törölhetők.
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
const poller = await client.beginDeleteCertificate(certificateName);
// You can use the deleted certificate immediately:
const deletedCertificate = poller.getResult();
// The certificate is being deleted. Only wait for it if you want to restore it or purge it.
await poller.pollUntilDone();
// You can also get the deleted certificate this way:
await client.getDeletedCertificate(certificateName);
// Deleted certificates can also be recovered or purged.
// recoverDeletedCertificate returns a poller, just like beginDeleteCertificate.
// const recoverPoller = await client.beginRecoverDeletedCertificate(certificateName);
// await recoverPoller.pollUntilDone();
// If a certificate is done and the Key Vault has soft-delete enabled, the certificate can be purged with:
await client.purgeDeletedCertificate(certificateName);
}
main();
Mivel a tanúsítvány törlése nem történik meg azonnal, a metódus meghívása után beginDeleteCertificate
időre van szükség ahhoz, hogy a törölt tanúsítvány olvasható, helyreállítható vagy törölhető legyen.
Tanúsítványlisták iterálása
A CertificateClient használatával lekérheti és iterálhatja egy tanúsítványtároló összes tanúsítványát, valamint az összes törölt tanúsítványt és egy adott tanúsítvány verzióját. A következő API-metódusok érhetők el:
listPropertiesOfCertificates
az összes nem törölt tanúsítványt listázni fogja a nevük alapján, csak a legújabb verziójukban.listDeletedCertificates
az összes törölt tanúsítványt listázni fogja a nevük alapján, csak a legújabb verziókban.listPropertiesOfCertificateVersions
a tanúsítvány összes verzióját felsorolja egy tanúsítványnév alapján.
A következő módon használható:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
for await (let certificateProperties of client.listPropertiesOfCertificates()) {
console.log("Certificate properties: ", certificateProperties);
}
for await (let deletedCertificate of client.listDeletedCertificates()) {
console.log("Deleted certificate: ", deletedCertificate);
}
for await (let certificateProperties of client.listPropertiesOfCertificateVersions(
certificateName
)) {
console.log("Certificate properties: ", certificateProperties);
}
}
main();
A metódusok mindegyike egyszerre adja vissza az összes elérhető eredményt . Ha oldalak szerint szeretné lekérni őket, adja hozzá .byPage()
közvetlenül a használni kívánt API-metódus meghívása után az alábbiak szerint:
const { DefaultAzureCredential } = require("@azure/identity");
const { CertificateClient } = require("@azure/keyvault-certificates");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new CertificateClient(url, credential);
const certificateName = "MyCertificateName";
async function main() {
for await (let page of client.listPropertiesOfCertificates().byPage()) {
for (let certificateProperties of page) {
console.log("Certificate properties: ", certificateProperties);
}
}
for await (let page of client.listDeletedCertificates().byPage()) {
for (let deletedCertificate of page) {
console.log("Deleted certificate: ", deletedCertificate);
}
}
for await (let page of client.listPropertiesOfCertificateVersions(certificateName).byPage()) {
for (let certificateProperties of page) {
console.log("Properties of certificate: ", certificateProperties);
}
}
}
main();
Hibaelhárítás
A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL
értékre info
. A naplózás futásidőben is engedélyezhető a következő hívással setLogLevel
@azure/logger
:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
A különböző hibaforgatókönyvek diagnosztizálásával kapcsolatos részletekért tekintse meg a hibaelhárítási útmutatónkat .
Következő lépések
További kódmintákat az alábbi hivatkozásokon talál:
- Key Vault tanúsítványminták (JavaScript)
- Key Vault tanúsítványminták (TypeScript)
- Key Vault tanúsítványok tesztelési esetei
Közreműködés
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Azure SDK for JavaScript
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: