Сервисные сертификаты
Сервисные X509-сертификаты необходимы компонентам СЭП для организации между ними защищенного TLS-соединения с двусторонней аутентификацией, для защиты ключей шифрования cookie и других задач, характерных для конкретного компонента.
Типы сервисных сертификатов
Среди всех сервисных сертификатов, назначенных сервису, выбирается один, который называется первичным, остальные сертификаты становятся вторичными. В межсервисном взаимодействии и выполнении других задач используется только первичный сертификат. Вторичные сертификаты не используются, но публикуются в метаданных сервисов. Вторичные сертификаты, назначенные сервису, позволяют реализовать смену сертификата сервиса без прерывания его работы. В этом случае администратор региструет новый вторичный сертификат за некоторое время до истечения первичного, после чего выполняет процедуру повышения (promotion) нового вторичного сертификата до нового первичного. Предыдущий первичный сертификат переходит в статус вторичного и через некоторое время может быть выведен из эксплуатации. Сервис может использовать вторичные сертификаты, бывшие когда-то первичными, например, для расшифрования ключей шифрования cookie, зашифрованных с использованием старого первичного сертификата.
Управление сервисными сертификатами
Для управления сервисными сертификатами существует отдельный набор командлетов
Get/Set/Add/Remove/New-*ServiceCertificate
, где *
- имя соответствующего сервиса.
Сервис | Имя сервиса в командлете |
---|---|
Сервис Подписи | Sign |
Центр Идентификации | Ids |
Сервис Обработки Документов | Ds |
Сервис Аудита | Audit |
Сервис PUSH-уведомлений | Push |
Далее в примерах используются командлеты для настройки Сервис Подписи (Sign
).
Примечание
Хранение сервисных сертификатов возможно следующими способами:
- в PFX в конфигурации сервиса,
- в хранилище Личное локального компьютера (mMy).
Для работы с хранилищем требуются права локального администратора.
Получение списка сервисных сертификатов
Для получения списка сервисных сертификатов используется командлет Get-SignServiceCertificate
.
Get-SignServiceCertificate [-Thumbprint <string>] [-DisplayName {SignServer}] [<CommonParameters>]
Параметры:
Thumbprint
- отпечаток SHA-1 сервисного сертификата. Если параметр не задан, то выводится список всех сервисных сертификатов.
Get-SignServiceCertificate -Primary [-DisplayName {SignServer}] [<CommonParameters>]
Параметры:
Primary
- switch-параметр, указывающий, что следует возвратить в ответе только первичный сертификат.
Добавление сертификатов
Для добавления сервисных сертификатов используется командлет Add-SignServiceCertificate
.
Add-SignServiceCertificate -Thumbprint <string> [-Primary] [-PassThru] [-DisplayName {SignServer}] [<CommonParameters>]
Данный набор парамтеров используется для добавления сертификатов из хранилища LocalMachine/My
.
Параметры:
Thumbprint
- SHA-1-отпечаток сертификата.Primary
- опциональный switch-параметр, показывающий, что сертификат должен быть добавлен в качестве первичного сервисного сертификата. Если данный параметр не указан, то сертификат будет добавлен в качтестве вторичного. Если сертификат является первым добавляемым сервисным сертификатом, то он будет добавлен в качестве первичного независимо от наличия параметра-Primary
.PassThru
Передать объект в pipeline.
Add-SignServiceCertificate -FilePath <string> [-Password <string>] [-Primary] [-PassThru] [-DisplayName {SignServer}] [<CommonParameters>]
Данный набор параметров позволяет добавить сервисный сертификат из PFX файла.
Параметр:
FilePath
- полный путь к файлу, содержащему данные сертификата в формате PFX.Password
- пароль для защиты PFX.Primary
- опциональный switch-параметр, показывающий, что сертификат должен быть добавлен в качестве первичного сервисного сертификата. Если данный параметр не указан, то сертификат будет добавлен в качтестве вторичного. Если сертификат является первым добавляемым сервисным сертификатом, то он будет добавлен в качестве первичного, независимо от наличия параметра-Primary
.PassThru
Передать объект в pipeline.
Изменение типа сертификата
Для перевода сервисного сертификата из вторичного в первичный используется командлет Set-SignServiceCerticate
.
Set-SignServiceCertificate -InputObject <ServiceCertificate> [-PassThru] [-DisplayName {SignServer}] [<CommonParameters>]
Данный набор параметров позволяет изменить тип сертификата, переданного через pipeline.
Параметры:
InputObject
- объект сервисного сертификата, полученный через pipeline (например, вызовом командлетаGet-SignServiceCertificate
).
Set-SignServiceCertificate -Thumbprint <string> [-PassThru] [-DisplayName {SignServer}] [<CommonParameters>]
Данный набор параметров используется для изменения типа сервисного сертификата, поиск которого среди зарегистрированных осуществляется по SHA-1-отпечатку.
Параметр:
Thumbprint
- SHA-1-отпечаток сертификата.
Удаление сервисного сертификата
Для удаления сервисного сертификата используется командлет Remove-SignServiceCertificate
.
Remove-SignServiceCertificate -InputObject <ServiceCertificate> [-PassThru] [-DisplayName {SignServer | SignServer2}] [<CommonParameters>]
Данный набор параметров позволяет удалить сертификат, переданный через pipeline.
Параметры:
InputObject
- объект сервисного сертификата, полученный через pipeline (например, вызовом командлетаGet-SignServiceCertificate
).
Remove-SignServiceCertificate -Thumbprint <string> [-PassThru] [-DisplayName {SignServer | SignServer2}] [<CommonParameters>]
Данный набор параметров используется для удаления сервисного сертификата, поиск которого среди зарегистрированных осуществляется по SHA-1-отпечатку.
Параметр:
Thumbprint
- SHA-1-отпечаток сертификата.
При удалении сервисных сертификатов для компонентов "Веб-интерфейс Пользователя" и "Центр Идентификации" происходит проверка использования удаляемого сертификата в качестве сертификата DPAPI. Tсли удаляемый сертификат участвует в шифровании ключей DPAPI, то выполнение командлета прервется и будет создано соответствующее сообщение об ошибке c указанием идентификатора ключа DPAPI. Для успешного удаления сервисного сертификата в этом случае требуется удалить зашифрованные на нем ключи DPAPI.
Создание сервисного сертификата
Для создания сервисного сертификата используется командлет New-SignServiceCertificate
.
Примечание
Для корректной работы данного командлета требуется версия КриптоПро CSP 13000 и выше.
New-SignServiceCertificate -SelfSigned -Install -Output <string> [-Password <string>] [-AddToLocalMachineRoot] [-PublicKeyOutput <string>] [-ContainerName <string>] [-Subject <string>] [-ProviderType {GR3410_2012_256 | GR3410_2012_512 | RSA}] [-ProviderName <string>] [-ExpiresInDays <int>] [-ExtendedKeyUsage <string[]>] [<CommonParameters>]
Данный набор параметров позволяет создать самоподписанный сервисный сертификат, установить его в хранилище LocalMachine/My
и экспортировать в PFX.
Параметры:
Output
- путь к файлу PFX с экспортированным сертификатом.Password
- пароль для защиты PFX.AddToLocalMachineRoot
- флаг, показывающий, требуется ли установка создаваемого самоподписанного сертификата в хранилище доверенных корневых сертификатов локальной машины (mRoot).PublicKeyOutput
- путь к файлу для сохранения содержимого сертификата открытого ключа в формате DER.ContainerName
- имя контейнера с ключевой парой сертификата (если не задано, то будет создано случайное имя с префиксомCPROKEY-SIGN-
).Subject
- имя субъекта сертификата, если не задано, то будет использоватьсяCN = CproKey Sign Service
.ProviderType
- тип алгоритма криптопровайдера, если не задан, то будет использованGR3410_2012_256
.ProviderName
- имя криптопровайдера, если параметр не задан, то будет использоваться провайдер по умолчанию для заданного типа.ExpiresInDays
- срок действия сертификата в днях.ExtendedKeyUsage
- перечень OID расширений "Улучшенный ключ".
New-SignServiceCertificate -SelfSigned -Install [-AddToLocalMachineRoot] [-PublicKeyOutput <string>] [-ContainerName <string>] [-Exportable] [-Subject <string>] [-ProviderType {GR3410_2012_256 | GR3410_2012_512 | RSA}] [-ProviderName <string>] [-ExpiresInDays <int>] [-ExtendedKeyUsage <string[]>] [<CommonParameters>]
Данный набор параметров создает самоподписанный сертификат и устанавливает его в хранилище LocalMachine\My
.
Параметры:
ContainerName
- имя контейнера с ключевой парой сертификата (если не задано, то будет создано случайное имя с префиксомCPROKEY-SIGN-
).AddToLocalMachineRoot
- флаг, показывающий, требуется ли установка создаваемого самоподписанного сертификата в хранилище доверенных корневых сертификатов локальной машины (mRoot).PublicKeyOutput
- путь к файлу для сохранения содержимого сертификата открытого ключа в формате DER.Exportable
- switch-параметр, при наличии указывает на то, что ключ должен быть создан экспортируемым.Subject
- имя субъекта сертификата, если не задано, то будет использоватьсяCN = CproKey Sign Service
.ProviderType
- тип алгоритма криптопровайдера, если не задан, то будет использованGR3410_2012_256
.ProviderName
- имя криптопровайдера, если параметр не задан, то будет использоваться провайдер по умолчанию для заданного типа.ExpiresInDays
- срок действия сертификата в днях.ExtendedKeyUsage
- перечень OID расширений "Улучшенный ключ".
New-SignServiceCertificate -SelfSigned -Output <string> [-Password <string>] [-AddToLocalMachineRoot] [-PublicKeyOutput <string>] [-Subject <string>] [-ProviderType {GR3410_2012_256 | GR3410_2012_512 | RSA}] [-ProviderName <string>] [-ExpiresInDays <int>] [-ExtendedKeyUsage <string[]>] [<CommonParameters>]
Данный набор параметров создает самоподписанный сервисный сертификат и экспортирует его в файл в формате PFX.
Параметры:
Output
- путь к файлу PFX с экспортированным сертификатом.Password
- пароль для защиты PFX.AddToLocalMachineRoot
- флаг, показывающий, требуется ли установка создаваемого самоподписанного сертификата в хранилище доверенных корневых сертификатов локальной машины (mRoot).PublicKeyOutput
- путь к файлу для сохранения содержимого сертификата открытого ключа в формате DER.Subject
- имя субъекта сертификата, если не задано, то будет использоватьсяCN = CproKey Sign Service
.ProviderType
- тип алгоритма криптопровайдера, если не задан, то будет использованGR3410_2012_256
.ProviderName
- имя криптопровайдера, если параметр не задан, то будет использоваться провайдер по умолчанию для заданного типа.ExpiresInDays
- срок действия сертификата в днях.ExtendedKeyUsage
- перечень OID расширений "Улучшенный ключ".
New-SignServiceCertificate -Output <string> [-ContainerName <string>] [-Subject <string>] [-ProviderType {GR3410_2012_256 | GR3410_2012_512 | RSA}] [-ProviderName <string>] [-ExtendedKeyUsage <string[]>] [<CommonParameters>]
Данный набор параметров используется для создания запроса на сервисный сертификат.
Параметры:
Output
- путь к файлу c PKCS10 запросом.ContainerName
- имя контейнера с ключевой парой сертификата (если не задано, то будет создано случайное имя с префиксомCPROKEY-SIGN-
).Subject
- имя субъекта сертификата, если не задано, то будет использоватьсяCN = CproKey Sign Service
.ProviderType
- тип алгоритма криптопровайдера, если не задан, то будет использованGR3410_2012_256
.ProviderName
- имя криптопровайдера, если параметр не задан, то будет использоваться провайдер по умолчанию для заданного типа.ExtendedKeyUsage
- перечень OID расширений "Улучшенный ключ".
Для каждого сервиса префикс контейнера и имя субъекта по умолчанию будет отличаться.
Примечание
Для контейнеров, созданных с помощью считывателя HDIMAGE
, автоматически выдаются права
доступа для сервисной учетной записи.
Особенности работы с сервисными сертификатами Центра Идентификации
В отличие от других сервисов ЦИ обладает двумя независимыми наборами сервисных сертификатов: для межсервисного взаимодействия (в т.ч. для защиты cookie) и для подписи маркеров. Для работы с двумя наборами сертификатом ко всем командлетам по управлению сертификатами данного компонента добавляется параметр Usage
с двумя возможными значениями:
Service-Communications
- межсервисное взаимодействие.Token-Signing
- подпись маркеров.