Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline TolikTipaTut1  
#1 Оставлено : 2 марта 2022 г. 10:17:13(UTC)
TolikTipaTut1

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.07.2018(UTC)
Сообщений: 467

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Всем добрый день! Написал скрипт по автоматизированному развертыванию КриптоПро УЦ 2.0. Версия УЦ: 2.0.6094. Все разворачивается на одной машине. ОС: Windows Server 2016. КриптоПро CSP 5.0 R2. Sql Server 2016 Express.

Код развертывания:
Код:
trap [System.Exception] {
    throw $_.InnerException
    trap {
        Write-Host -ForegroundColor Red -Object "Some errors occured. Exiting"
        return;
    }
    continue;
}

gci "C:\Program Files\Crypto Pro\CC2\PowerShellModules\CryptoPro.CertificateService" -File:$true -Filter:"cryptopro*.dll" | % {Add-Type -Path $_.FullName} # Импортируем библиотеки
gci "C:\Program Files\Crypto Pro\CC2\PowerShellModules\CryptoPro.PkiClient" -File:$true -Filter:"cryptopro*.dll" | % {Add-Type -Path $_.FullName} # Импортируем библиотеки
gci "C:\Program Files\Crypto Pro\CC2\PowerShellModules\CryptoPro.RegistrationService" -File:$true -Filter:"cryptopro*.dll" | % {Add-Type -Path $_.FullName} # Импортируем библиотеки

"C:\Program Files\Crypto Pro\CC2\PowerShellModules" | % {$env:PSModulePath +="; $_"} # Прописываем путь до powershell модулей 
Import-Module CryptoPro.PkiClient -ErrorAction Stop # Испортируем модуль CryptoPro.PkiClient
Import-Module CryptoPro.CertificateService -ErrorAction Stop # Испортируем модуль CryptoPro.CertificateService
Import-Module CryptoPro.RegistrationService -ErrorAction Stop # Испортируем модуль CryptoPro.RegistrationService

New-Alias -Name certutil2 -Value (gci -Recurse -File:$true -Filter:"Certutil2.exe" -Path "C:\Program Files\Crypto Pro\CC2").FullName # Честно, смысла создавать alias нет, так как при установке certutil2 будет использоваться только при загрузке ключей УЦ, но все же сделаю :)

New-PkiRequest `                                                                # Создание запроса на сертификат ЦР
-SubjectName:([CryptoPro.CertEncode.CPX500DistinguishedName]::new("CN=MYRA")) ` # 
-CertTemplate:"PkiClient" `                                                     # ЖТЯИ.00078-01 90 02. PkiClient - краткое название идентификатора OID шаблона сертификатов TLS-клиент инфраструктуры УЦ. По этому шаблону происходит создание запроса на сертификат ЦР
-KeyContainerName:"\\.\REGISTRY\MYRAKey" `                                      # Название контейнера ключа ЭП
-ExistingKey:$false `                                                           # У нас нет ключа ЦР
-MachineKeySet:$true `                                                          # Хранить будем сертификат в LocalMachine
-ExportableKey:$true `                                                          # Пускай будет экпортируемый
-Base64:$true `                                                                 # Сохраним в base64 (aka PEM)
-OutFile:"C:\Users\Администратор\ForCA\reqs\racli.req" `                        # Путь к файлу запроса
-Format:"PKCS10"                                                                # Формаз запроса - PKCS#10

Install-CA `                                                                    # Устанавливаем роль ЦС
-SqlInstance:".\CPCS" `                                                         # Экземлпляр SQL
-SqlDatabaseName:"CertificateService.Database" `                                # Название БД
-WebSite:1 `                                                                    # № веб-сайта (Default web site)
-KeepDatabase:$false `                                                          # Не сохраняем сущесвующую БД
-AppPool:"CAAppPool"                                                            # Название пула приложений. Вообще, если не указывать, то оно будет CAAppPool, но у меня был опыт настойки УЦ через консоль, и порой приложение попадало в другой пул, если не указывать в явном виде

New-CALicense –SerialNumber:"C020R-02030-01AG5-3EMU1-4PQGQ" –Licensee:"-"       # ЖТЯИ.00078-01 90 02. Серийныйы номер временной лицензии КриптоПро УЦ

New-Item `                                                                      # Создание экземпляра службы сертификатов
-Path:"CA:\" `                                                                  #  
-Subordinate:$false `                                                           # Создаем корневой УЦ
-SubjectName:([CryptoPro.CertEncode.CPX500DistinguishedName]::new("CN=MYCA")) ` # Если это делать через остнастку mmc, то потребуется вводить ИНН и ОГРН, а в консоли - не требуется :)
-ItemType:"NewAuthorityPara" `                                                  # 
-KeyExportable:$true                                                            # Можно экпортировать ключи УЦ

New-Item `                                                                      # Создание администратора ЦС
-Account:($env:COMPUTERNAME+"\Администратор") `                                 # Будет использоваться учетка локального админа
-ItemType:"NewAuthPersonPara" `                                                 #
-Register:$false `                                                              # Пользователя не нужно регистрировать
-Name:"MYCAAdmin" `                                                             # Вводим имя админа ЦС. Странно, что недоступен параметр -SubjectName... Переписывать модуль не хочется...
-Password:"SuperMegaNanoSecurePass" `                                           # Пароль от учетки админа
-Path:"CA:\MYCA\AuthPerson"                                                     #

New-CACertificate `                                                             # Создание сертификата ЦС
-Path:"CA:\MYCA\AuthPerson\MYCAAdmin" `                                         # Указываем админа ЦС
-ParentPath:"CA:\MYCA" `                                                        # Указываем сам ЦС
-DeleteExistingRequest:$true `                                                  # Удаляем на всякий предыдущий запрос
-ExistingKey:$false `                                                           # Ключ ранее не создавался
-KeyContainerName:"\\.\REGISTRY\MYCAKey" `                                      # Название контейнера ключа ЭП
-Binary:$false `                                                                # Base64
-Format:"Pkcs10"                                                                #

certutil2 -config "localhost\MYCA" -loadKey 0 CertSign CrlSign -runas ($env:COMPUTERNAME+"\Администратор") -runaspsw "Qwe11354" #Грузим ключ

(Get-Item 'CA:\MYCA').SubjectName | % {$temp = [CryptoPro.CertEncode.DistinguishedName]::new($_); $temp.DnsName = "localhost"; $temp.CommonName="Веб-сервер"} # Создаем DistinguishedName для веб-сервера IIS

New-PkiRequest `                                                                # Создаем запрос на сертификат веб-сервера
-SubjectName:$temp.Xdn `                                                        # Указываем SubjectName
-KeyContainerName:"\\.\REGISTRY\WS" `                                           # Название контейнера ключа ЭП
-ExistingKey:$false `                                                           # Ключ ранее не создавался
-ProviderType:80 `                                                              #
-MachineKeySet:$true `                                                          #
-ExportableKey:$true `                                                          #
-Base64:$true `                                                                 #
-CertTemplate:"PkiServer" `                                                     #
-OutFile:"C:\Users\Администратор\ForCA\reqs\ws.req" `                           #
-Format:"Pkcs10"                                                                #

Send-PkiRequest `                                                               # Отправка запроса на сертификат веб-сервера УЦ MYCA
-CertTemplate:"PkiServer" `                                                     #
-Config:"localhost\MYCA" `                                                      #
-InFile:"C:\Users\Администратор\ForCA\reqs\ws.req" | `                          #
Receive-PkiResponse `                                                           # Получение ответа от ЦС
-Config:"localhost\MYCA" `                                                      #
-OutFile:"C:\Users\Администратор\ForCA\certs\ws.p7b" `                          #
-Base64:$true | `                                                               #
Install-PkiResponse | `                                                         # Установка
Enable-PkiServer -WebSite 1                                                     # 

Send-PkiRequest `                                                               # Выпуск сертификата ЦР
-InFile:"C:\Users\Администратор\ForCA\reqs\racli.req" `
-Config:"localhost\MYCA" `
-CertTemplate:"PkiClient" | `
Receive-PkiResponse `
-Config:"localhost\MYCA" `
-OutFile:"C:\Users\Администратор\ForCA\certs\racli.p7b" `
-Base64:$true

New-Item `
-Path:"CA:\MYCA\RegAuthority\" `                                                # Регистрация ЦР
-ProfileName:(Get-Item 'CA:\MYCA\').SubjectName  `                              #
-Name:"MYRA" `                                                                  #
-HasAIA:$true `                                                                 #
-HasCDP:$true `                                                                 #
-Account ($env:COMPUTERNAME+"\Администратор") `                                 #
-register:$false `                                                              #
-hostname:"localhost" `                                                         #
-Password:"SuperMegaNanoSecurePass"                                             #

New-Item `                                                                      # Установка TLS сертификата ЦР
-Path:"CA:\MYCA\RegAuthority\MYRA\Certificate" `                                #
-CertFile:"C:\Users\Администратор\ForCA\certs\racli.p7b" `                      #
-Credential ([System.Management.Automation.PSCredential]::new{                  # Я попробовал через консоль ввести креды -работает. А так: поставщик не поддерживает креды ...
    ($env:COMPUTERNAME+"\Администратор"),                                       #
    (ConvertTo-SecureString "SuperMegaNanoSecurePass" -AsPlainText -Force)      #
})                                                                              #

# Далее подробно расписывать команды уже не имеет смысмла. Все повторяется
Install-RA -SqlInstance:".\CPCS"
Add-CAReference –AuthorityName:"MYCA" -Url:"https://localhost/CA" –ClientCertificate:(gi "Cert:\LocalMachine\My\365858B00B356C8BA2F5155E5356F4F9FEDEEFCE")
Ping-CA -AuthorityName:"MYCA"

New-PkiRequest -CertTemplate:"User" -OutFile:"C:\Users\Администратор\ForCA\reqs\admin.req" -SubjectName:([CryptoPro.CertEncode.CPX500DistinguishedName]::new("CN=MYRAOper")) -ExportableKey:$true -KeyContainerName:"\\.\REGISTRY\raadmin" -ExistingKey:$false # Запрос на сертификат оператора ЦР
Send-PkiRequest -Config:"localhost\MYCA" -InFile:"C:\Users\Администратор\ForCA\reqs\admin.req" -CertTemplate:"User" | Receive-PkiResponse -OutFile:"C:\Users\Администратор\ForCA\certs\admin.p7b" -Base64:$true
New-Item -Path:"RA:\" -Name:"RAAdmin" -ItemType:"User"
New-Item -Path:"RA:\MYRAAdm" -CertFile:"C:\Users\Администратор\ForCA\certs\admin.p7b"


После регистрации ЦР на ЦС имя ЦР (Name) становится localhost, а hostname - "MYRA", хотя при установке явно прописывал иначе... Подскажите, пожалуйста, в чем может быть проблема?

Отредактировано пользователем 2 марта 2022 г. 15:49:15(UTC)  | Причина: Не указана

Offline TolikTipaTut1  
#2 Оставлено : 2 марта 2022 г. 10:58:36(UTC)
TolikTipaTut1

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.07.2018(UTC)
Сообщений: 467

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Локализовал ошибку:
Если из команды
Код:
New-Item `
-Path:"CA:\MYCA\RegAuthority\" `                                                # Регистрация ЦР
-ProfileName:(Get-Item 'CA:\MYCA\').SubjectName  `                              # Указывал этот параметр согласно ЖТЯИ.00078-01 90 02
-Name:"MYRA" `                                                                  #
-HasAIA:$true `                                                                 #
-HasCDP:$true `                                                                 #
-Account ($env:COMPUTERNAME+"\Администратор") `                                 #
-register:$false `                                                              #
-hostname:"localhost" `                                                         #
-Password:"SuperMegaNanoSecurePass"                                             #

убрать -ProfileName, то все работает отлично. Т.е команда выглядит так:
Код:
New-Item `
-Path:"CA:\MYCA\RegAuthority\" `                                                # Регистрация ЦР
#-ProfileName:(Get-Item 'CA:\MYCA\').SubjectName  `                             # Убрал и все заработало нормально
-Name:"MYRA" `                                                                  #
-HasAIA:$true `                                                                 #
-HasCDP:$true `                                                                 #
-Account ($env:COMPUTERNAME+"\Администратор") `                                 #
-register:$false `                                                              #
-hostname:"localhost" `                                                         #
-Password:"SuperMegaNanoSecurePass"                                             #

Отредактировано пользователем 2 марта 2022 г. 11:01:53(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.