You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以编程方式向Azure Key Vault导入EC密钥

Azure Key Vault 编程导入EC密钥方案

Azure 门户仅支持向 Key Vault 导入 RSA 密钥,你可以在门户中生成EC 密钥,但无法直接通过门户界面导入该类型密钥,编程调用Key Vault接口即可实现EC密钥导入,以下是经实践验证可用的PowerShell实现脚本:

# 读取PKCS8格式的EC私钥文件,移除PEM头尾标记
$p8Raw = Get-Content -Path .\KEY.p8 | ? {$_ -ne '-----BEGIN PRIVATE KEY-----' -and $_ -ne '-----END PRIVATE KEY-----'}
$p8Bytes = [System.Convert]::FromBase64String($p8Raw -join '')

# 导入私钥,提取EC密钥参数
$cng = [System.Security.Cryptography.ECDsaCng]::Create()
$len = $null
$cng.ImportPkcs8PrivateKey($p8Bytes, [ref] $len)
$params = $cng.ExportParameters($true)

# 实现Base64Url编码转换,适配JWK格式规范
$ToBase64Url = { Param($Content) [System.Convert]::ToBase64String($Content).Replace('+', '-').Replace('/', '_').Replace('=', '') }

# 组装EC类型的JWK结构
$pubX = & $ToBase64Url -Content $params.Q.X
$pubY = & $ToBase64Url -Content $params.Q.Y
$prvD = & $ToBase64Url -Content $params.D
$jwk = @{ crv = 'P-256'; d = $prvD; kty = 'EC'; x = $pubX; y = $pubY }
$RequestPayload = @{ key = $jwk } | ConvertTo-Json

# 交互式获取Azure访问令牌,执行前请替换$ClientId、$TenantId、$VaultUri、$KeyName为环境实际值
$token = Get-MsalToken -Scope 'https://vault.azure.net/user_impersonation' -ClientId $ClientId -TenantId $TenantId -Interactive

# 调用Key Vault接口完成密钥导入
Invoke-WebRequest -Uri "${VaultUri}keys/${KeyName}?api-version=7.3" -Authentication Bearer -Token ($token.AccessToken | ConvertTo-SecureString -AsPlainText -Force) -Method Put -Body $RequestPayload -ContentType 'application/json'

使用提示:

  • 脚本默认适配P-256曲线的EC密钥,若使用P-384、P-521等其他曲线,请对应修改crv字段取值
  • 执行脚本前需先安装MSAL.PS模块,否则Get-MsalToken命令无法正常使用

内容的提问来源于stack exchange,提问作者James S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:57:15