Преобразование созданного Azure сертификата в PFX с помощью openssl

Я создал учетную запись службы автоматизации с учетной записью RunAs на портале Azure. Сертификат был сгенерирован автоматически. Я хочу создать файл PFX из этого сертификата с помощью утилиты openssl.

Я могу сделать это с помощью PowerShell Core 7.1.0-rc.2 со следующими шагами и кодом:

  1. Портал Azure › Azure Active Directory › Регистрация приложений › Субъект-служба учетной записи службы автоматизации
  2. Выберите «Манифест» в меню слева, прокрутите JSON вниз до раздела «keyCredentials».
  3. Скопируйте всю строку для свойства value в переменную в PowerShell:
    $base64value = "<contents of the value property here>"
  4. Код PowerShell для создания файла PFX:
# Create a X509 certificate object
$byteArray = [System.Convert]::FromBase64String($base64value)
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($byteArray)

# Export the certificate as a PFX file
$bytesPfx = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx)
[System.IO.File]::WriteAllBytes('filename.pfx', $bytesPfx)

Я пытаюсь понять, как выполнить тот же процесс с помощью утилиты openssl, учитывая это строковое значение base64 из манифеста JSON учетной записи службы автоматизации. Поскольку я могу преобразовать эту строку base64 в массив байтов, а затем в сертификат X509 с помощью конструктора класса .NET, я полагаю, что мне нужно будет использовать openssl x509, но я не могу найти вариант, который принимает base64 строка или двоичный аргумент или файл.


person Chuck Heatherly    schedule 23.10.2020    source источник
comment
Если filename.pfx содержит как открытый, так и закрытый ключ, то byteArray уже представляет PFX. Таким образом, вы должны иметь возможность просто декодировать блоб с помощью base64 и напрямую сохранять его как PFX.   -  person bartonjs    schedule 23.10.2020


Ответы (1)


ОК, спасибо @bartonjs за подсказку. В итоге я сделал это из оболочки Linux:

echo "<huge base64-encoded string from value property>" > base64.data.txt
base64 --decode base64.data.txt > test01.pfx

Затем я протестировал вызов конструктора .NET для класса X509Certificate2 с этим PFX-файлом, и он успешно создал объект сертификата.

person Chuck Heatherly    schedule 23.10.2020