Как получить PrivateKey из Azure Key Vault

Я создаю API подписи XML-документа на основе Azure Key Vault (AKV).

У меня есть ассиметричный сертификат, импортированный в AKV, который хранится как [Ключ, Секрет и Сертификат].

Мне удалось подписать документ, но я думаю, что не получаю нужный ключ.

API цифровой подписи Java XML требуется пара ключей (частный / открытый) для получения некоторой информации.

Я изменил поставщика, которого нашел здесь, и теперь процесс подписи вызывается из AKV вместо реализации java.

Дело в том, что когда я получаю ключ от AKV, приходит только открытый ключ. Закрытый ключ хранится как секрет, и у меня возникают проблемы, когда я пытаюсь преобразовать значение в экземпляр PrivateKey.

Как преобразовать значение SecretBundle в экземпляр java.security.PrivateKey?

Заранее спасибо.


person DTodt    schedule 01.06.2018    source источник


Ответы (1)


Ниже показано, как я преобразовал Секрет в файл сертификата. Возможно, вы сможете преобразовать это в Java.

$kvSecret = Get-AzureKeyVaultSecret -VaultName 'VaultFromCode' -Name 'TestCertificate'
$kvSecretBytes = [System.Convert]::FromBase64String($kvSecret.SecretValueText)
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, 'test')
$pfxPath = 'C:\cert\test.pfx'
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)

Более подробную информацию можно найти в моем сообщении - Управление сертификатами в Azure Key Vault. Вы также можете найти некоторые сведения об экспортируемых и неэкспортируемых сертификатах в Key Vault и о том, как их можно использовать для подписать файл PDF.

надеюсь, это поможет

person Rahul P Nath    schedule 02.06.2018