Вы можете отправить вызов подпроцесса в 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()