Как экспортировать сертификат на Windows в Python - PullRequest
1 голос
/ 12 апреля 2019

Я пишу программу на Python, которая должна экспортировать сертификат из хранилища сертификатов в Windows. Я попытался найти фрагмент кода, который делает это, но у меня возникли проблемы с поиском такого, который делает это. Здесь важно то, что мне нужно экспортировать сертификат с закрытым ключом из хранилищ сертификатов, принадлежащих компьютеру и текущему пользователю.

= Изменить, чтобы добавить больше контекста =

Моей целью было использование сертификата для аутентификации в хранилище ключей Azure. Основываясь на принятом ответе, невозможно получить сертификат из хранилища сертификатов в Windows. Вместо этого я решил написать приложение на C # для аутентификации в хранилище ключей Azure и передать секреты приложению Python.

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете отправить вызов подпроцесса в powershell для экспорта сертификатов из хранилища сертификатов.Этот сценарий запрашивает пароль пользователя, а затем экспортирует сертификаты из хранилища сертификатов пользователя и локальной машины, которые имеют закрытый ключ, в виде файлов .pfx.

import subprocess
import getpass

pw = getpass.getpass()

proc = subprocess.Popen(
    [
        'powershell.exe',
        '-c',
        f'&{{ $pw = ConvertTo-SecureString -String "{pw}" -Force -AsPlainText;',
        'gci Cert:\\*\\My\\* |',
        '?{ $_.HasPrivateKey } |',
        '%{ Export-PfxCertificate -cert $_.PSPath',
        '-FilePath $env:USERPROFILE\\$($_.thumbprint).pfx -Password $pw}',
        '}'
    ],
    stdout = subprocess.PIPE,
    stderr = subprocess.PIPE,
    shell = True
)

out, err = proc.communicate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...