Назад | Перейти на главную страницу

Установить - Импортировать сертификат PFX в отдельный личный магазин локальной учетной записи - Автоматически

Я ломал голову над автоматизацией способа выполнения этой задачи:

Мы развертываем образы Windows Server 2008 R2 для наших клиентов. Мы используем PowerShell (версия 2) для развертывания нашего проприетарного программного обеспечения и внесения различных других изменений в систему перед отправкой. Этот процесс PowerShell запускается под учетной записью локального администратора, пока он не завершит работу и не отключит учетную запись локального администратора.

Теперь к вопросу - я пытаюсь установить сертификат клиента .PFX в хранилище сертификатов ОТДЕЛЬНОГО пользователя CurrentUser \ My. Назовем этого пользователя «SQL».

В настоящий момент сертификат устанавливается в хранилище сертификатов LocalMachine \ My, но одна из наших групп разработчиков обеспокоена этим положением и хотела бы воспроизвести исходную установку.

Теперь я знаю, как сделать это грязным, добавив шаг перезагрузки в наш сценарий развертывания и выполнив его под пользователем «SQL», но я бы хотел избежать этого, поскольку кажется, что должен быть способ получить это делается под другой учетной записью. Вот основной код, который мы сейчас используем для установки сертификата в LocalMachine \ My store. Предположим, что $ certPath - это путь к .pfx, а $ pfxPass - это пароль .pfx.

function Import-PfxCertificate {
param([string] $certPath, [string]$pfxPass)

$pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import([string]$certPath, [string]$pfxPass, "Exportable,PersistKeySet")

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine")
$store.open("MaxAllowed")
$store.add($pfx)
$store.close()
}    

Я делаю то же самое для своих серверов, но не использую чистый PowerShell:

psexec.exe -accepteula -u sql -p sqlspassword certutil.exe -p certpassword -importPFX cert.pfx

Это просто запускает команду certutil под указанной учетной записью, вам необходимо скачать psexec.exe,

В итоге я использовал Start-Process с -Credentials и бесплатный инструмент importpfx.exe. В основном та же идея, что и @Mathias, и @Peter привел пример.

Спасибо вам обоим за вашу помощь. Это было намного проще, чем мне показалось в последние два дня исследований.