我在 azure key Vault 中有一个证书,我不想将其导入到签名计算机中。相反,我想使用该证书通过对 azure key Vault 进行身份验证或其他方式来签署 jar 文件。 有什么办法可以实现这一点吗?预先感谢
KeyVault 只是存储秘密、密钥和证书的提供者。它不提供任何执行任何操作的选项。
如果您想使用证书,您需要检索它:
$cert = Get-AzKeyVaultCertificate -VaultName $vaultName -Name $certName
$secret = Get-AzKeyVaultSecret -VaultName $vaultName -Name $cert.Name
$secretByte = [Convert]::FromBase64String(($secret.SecretValue | ConvertFrom-SecureString -AsPlainText))
# Write to a file
[System.IO.File]::WriteAllBytes("cert.pfx", $secretByte)
但是,您可以将签名任务作为 Azure DevOps Pipeline 的一部分或在 Azure 容器实例内执行。因此,证书不会存储在您的本地设备上。但在某些时候,证书需要离开 KeyVault 才能使用。
您可以使用 Jsign JCA 提供程序 将 Azure KeyVault 密钥与 jarsigner 结合使用。
语法如下:
jarsigner -J-cp -Jjsign.jar -J--add-modules -Jjava.sql \
-providerClass net.jsign.jca.JsignJcaProvider \
-providerArg <vault-name> \
-keystore NONE \
-storetype AZUREKEYVAULT \
-storepass <api-access-token> \
application.jar <key-name>
(免责声明:我是这个项目的作者)