如何使用Azure JavaScript SDK在Azure Key Vault中创建自签名证书
使用Azure JavaScript SDK在Azure Key Vault中创建自签名证书
前置依赖
首先安装所需的Azure SDK包:
npm install @azure/keyvault-certificates @azure/identity
确保你的服务主体(或其他身份)拥有Azure Key Vault的CertificatePermissions权限(至少包含create权限),并且已配置好身份验证所需的凭据(如客户端ID、客户端密钥、租户ID)。
代码示例
以下代码实现与你提供的PowerShell脚本等效的自签名证书创建逻辑:
const { CertificateClient, DefaultCertificatePolicy } = require("@azure/keyvault-certificates"); const { ClientSecretCredential } = require("@azure/identity"); // 配置参数 const tenantId = "<你的租户ID>"; const clientId = "<你的客户端ID>"; const clientSecret = "<你的客户端密钥>"; const vaultUrl = "https://<你的Key Vault名称>.vault.azure.net/"; const certName = "<证书名称>"; // 对应PowerShell中的$certname // 创建身份凭据 const credential = new ClientSecretCredential(tenantId, clientId, clientSecret); // 创建Key Vault证书客户端 const client = new CertificateClient(vaultUrl, credential); // 构建自签名证书策略,匹配PowerShell参数 const certificatePolicy = DefaultCertificatePolicy; // 替换默认策略中的配置,对齐PowerShell设置 certificatePolicy.subject = `CN=${certName}`; certificatePolicy.keyType = "RSA"; certificatePolicy.keySize = 2048; certificatePolicy.signatureAlgorithm = "SHA256"; certificatePolicy.exportable = true; certificatePolicy.keyUsage = ["digitalSignature"]; // 对应PowerShell中的KeySpec Signature async function createSelfSignedCertificate() { try { // 启动证书创建操作(异步,需等待完成) const poller = await client.beginCreateCertificate(certName, certificatePolicy); // 等待操作完成并获取结果 const certificate = await poller.pollUntilDone(); console.log(`自签名证书创建完成:${certificate.name}`); console.log(`证书ID:${certificate.id}`); } catch (error) { console.error("证书创建失败:", error); } } // 执行创建操作 createSelfSignedCertificate();
关键参数说明
subject: 设置证书的主题名称,对应PowerShell中的Subject "CN=$certname"keyType/keySize: 指定密钥算法为RSA、长度2048,对齐PowerShell的KeyAlgorithm RSA和KeyLength 2048signatureAlgorithm: 设置签名哈希算法为SHA256,对应HashAlgorithm SHA256exportable: 设置为true,对应KeyExportPolicy ExportablekeyUsage: 指定digitalSignature,对应KeySpec Signature
注意事项
- 证书创建是异步操作,必须通过
pollUntilDone()等待操作完成 - 确保身份凭据拥有足够的Key Vault权限,否则会返回权限错误
- 可根据需求扩展证书策略,比如添加有效期、SAN(主体备用名称)等配置
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

