4

Мне нужно иметь возможность удаленно экспортировать установленный сертификат компьютера с полной цепочкой сертификатов и закрытыми ключами на сервере Windows. Сертификат используется для IIS, и я хочу использовать его для экземпляра apache, работающего на том же сервере.

Я знаю, как сделать это вручную с помощью certmgr.MSC mmc оснастка инструмент, но как это можно сделать из командной строки или с удаленного компьютера в том же домене?

Я также знаю, как просмотреть только сертификат с openssl s-client . Можно ли это использовать для сохранения сертификата и закрытого ключа для импорта в файл хранилища ключей Java?

Certmgr через RDP слишком медленный для того, что мне нужно. Мне нужно решение сценариев.

Моя среда полностью Windows Server 2008 R2. PowerShell Remoting не включен, но я могу его включить.

Я подтвердил, что не могу использовать PowerShell Export-PfxCertificate , потому что мои серверы недостаточно новы ...

Поэтому, если я могу использовать PowerShell для получения отпечатка нужного сертификата, я могу передать его команде «certutil -exportpfx». Я подтвердил, что будет работать.

Как Dir хранилище сертификатов , как, "реж CERT:\ LocalMachine \ Мой | Where-Object {$ _ HasPrivateKey.} |" И затем кормить , что в CertUtil экспорта с отпечатком?

ИЛИ, могу ли я сначала сделать dir и сказать, чтобы он печатал только отпечаток большого пальца, а не все? Затем сохраните это в файл и прочитайте файл командой make certutil?

3 ответа3

3

См. Вопрос о переполнении стека. Экспорт сертификата из IIS с использованием PowerShell.

Если ответ вам подходит , тогда вы можете запустить код PowerShell на удаленном сервере, используя PSRemoting (Enter-PSSession или Invoke-Command) или psexec.

Кто-нибудь знает, как создать каталог хранилища сертификатов, например, "dir cert:\localmachine\my | Where-Object {$ _. HasPrivateKey} |" и затем передать его в экспорт certutil с отпечатком?

Попробуйте это, у меня работает:

Get-ChildItem -Path 'Cert:\localmachine\My' |
    Where-Object { $_.hasPrivateKey } |
        Foreach-Object {
            &certutil.exe @('-exportpfx', '-p', 'secret',  $_.Thumbprint, "$($_.Subject).pfx")
         }

Помните, что иногда вы не сможете использовать Subject качестве имени файла из-за недопустимых символов иностранного языка в Unicode.

2

Сделайте это в PowerShell для удаленного экспорта сертификата из длинного списка серверов Windows. $ Servers - это список серверов.

foreach ($server in $servers){
Invoke-command $server {
Get-ChildItem -Path 'Cert:\localmachine\My' |
Where-Object { $_.hasPrivateKey } |
Foreach-Object {&certutil.exe @('-exportpfx', '-f', '-p','your_password',$_.Thumbprint, "d:\$($_.Subject).pfx")}
    }
    Move-Item -Path \\$server\d$\*.pfx -Destination C:\$server.pfx -Force
}

Используйте Java keytool.exe, чтобы превратить каждый файл pfx в файл хранилища ключей JKS. Keytool является частью каждой установки Java. Вы можете сделать это на своем локальном компьютере или на одном удаленном сервере, если на нем уже установлена Java.

keytool.exe -importkeystore -srckeystore C:\server1.pfx -destkeystore C:\server1.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass your_password -deststorepass your_password

Вы также можете запустить это с помощью Powershell ($ server - это имя сервера)($ pwd - это переменная, содержащая пароль, который мы используем для шифрования файла):

foreach ($server in $servers){
& "C:\Program Files\Java\jre6\bin\keytool.exe" -importkeystore -srckeystore C:\$server.pfx -destkeystore C:\$server.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass $pwd -deststorepass $pwd

}

-2
  1. Откройте mmc как администратор
  2. Файл меню -> Добавить / Удалить оснастку (Ctrl + M)
  3. Выберите оснастку « Сертификаты» на левой панели и нажмите « Добавить»
  4. Выберите учетную запись компьютера (третий вариант)
  5. Выберите Другой компьютер и введите имя удаленной системы, для которой вы хотите управлять сертификатами.
  6. Завершите диалог и нажмите ОК

Имена могут быть немного другими. Моя ОС немецкая, поэтому я все примерно перевел.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .