Сохранение и экспорт закрытых ключей сертификатов в центрах сертификации Microsoft Active Directory Certification Services (ADCS)

Когда вы развернули в своей сети центр сертификации от Microsoft Active Directory Certification Services (ADCS), ваши доменные пользователи могут иметь сертификаты для шифрации\дешифрации электронной почты. И конечно же ваш отдел безопасности обязательно захочет иметь возможность читать письма пользователей для анализа их лояльности. Поэтому у вас как у системного администратора, должна быть возможность предоставить им такой функционал.

 

Как же это сделать?

Как вы, надеюсь, знаете, для шифрации электронных сообщений используется открытый ключ сертификата пользователя, которому письмо отправляется. Для ДЕшифрации электронных писем используется закрытый ключ сертификата пользователя-получателя.

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

По умолчанию, центр сертификации не сохраняет закрытые ключи пользователей. Само собой, это сделано для обеспечения безопасности переписки. Microsoft разработала отдельную процедуру сохранения закрытых ключей в базе данных CA (Certification Authority, т.к. центра сертификации) и экспорта их при необходимости.

Основные этапы такой процедуры:

  1. Вы настраиваете архивацию закрытых ключей на сервере.
  2. В момент выдачи сертификата, его закрытый ключ копируется в базу данных и шифруется с помощью специального сертификата - Key Recovery Agent (KRA).
  3. При необходимости восстановления\экспорта какого-либо закрытого ключа, он расшифровывается с помощью Key Recovery Agent (KRA).

Рассмотрим, как эти шаги выполняются.

Настройка архивации закрытых ключей на сервере.

Вам понадобится сертификат Key Recovery Agent (KRA), выданный для вашей учетной записи.

  • Откройте оснастку Certificate Authority, щелкаем правой кнопкой по Certificate Templates и выбираем Manage. Откройте свойства шаблона Key Recovery Agent. На вкладке  Security вы увидите, что по умолчанию, только члены групп Domain Admins и Enterprise Admins имеют разрешения на получение таких сертификатов. Возможно, вы захотите поменять разрешения и ограничить кого-либо. Например, у нас в организации доменным администратором мы закрыли эту возможность. 
  • В оснастке Certificate Authority, откройте Certificate Templates, и сделайте шаблон Key Recovery Agent доступным для выдаи сертификатов (правой кнопкой по Certificate Templates, выбрать New и выбрать Certificate Template to Issue).
  • Теперь под учетной записью администратора на сервере Certificate Authority, вы должны запросить сертификат KRA через оснастку своиъ личных сертификатов (certmgr.msc). Этот выданный для вас сертификат должен появиться в вашем хранилище Personal Certificates.
  • В оснастке Certificate Authority, щелкаем правой кнопкой на CA и выбираем Properties. На вкладке Recovery Agents, выбираем Archive the key и жмем Add для добавления сертификатов KRA. Выбираем свой сертификат и жмем Apply.
  • В настройках шаблона сертификатов пользователей должна быть настроена возможность архивации закрытых ключей. Для этого выбираем Certificate Templates и жмем Manage. Выбираем нужный сертификат и жмем Properties. Открываем вкладку Request Handling и выбираем Archive subject's encryption private key.
  • Теперь закрытые ключи для вновь выданных сертификатов будут заархивированы в базе данных сервера центра сертификации. Когда ключ сертификата заархивирован, ставится пометка в колонке Archived Key (ее надо добавить через View, Add/Remove Columns).

 

Экспорт архивных ключей

Когда закрытый ключ сертификата попал в архив, этот ключ может быть восстановлен под учетной записью администратора, у которого есть сертификат Key Recovery Agent (и этот сертификат использовался для шифрации закрытого ключа). Чтобы запустить команду на экспорт, необходимо знать серийный номер сертификата, ключ которого будем восстанавливать. Серийный номер можно посмотреть на вкладке Details в свойствах сертификата.

Используя серийный номер восстанавливаемого сертификата мы получаем некую структуру BLOB (предположительно, просто бинарный код из базы, точнее не знаю). Затем преобразовываем BLOB-сертификат в pfx-файл, который содержит в себе открытый и закрытый ключи. Этот файл должен быть защищен паролем. Ниже представлены команды, как это делается.

 

C:\Users\administrator.PKI>certutil -getkey "24 00 00 00 2d db 66 0f 25 22 6f b9 cf 00 00 00 00 00 2d" user-private-key.key
Recovery blobs retrieved: 1
Recovery Candidates: 1

Retrieved key files:
  user-private-key.key

CertUtil: -GetKey command completed successfully.

C:\Users\administrator.PKI>certutil -recoverkey user-private-key.key user-private-key.pfx
Enter new password:
Confirm new password:

Recovered key files:
  user-private-key.pfx
CertUtil: -RecoverKey command completed successfully.

C:\Users\administrator.PKI>

Теперь у вас есть *.pfx-файл, который уже можно импортировать в любой пользовательский профиль. Не забывайте пароль.

 

Обеспечение хранения сертификатов Key Recovery Agent (KRA), а также их жизненный цикл

Итак, мы разобрались с базовыми операциями. Теперь надо подумать об одной очень важной вещи.

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

А теперь посмотрим на следующую картинку:

 image 2

Как вы думаете, сможете ли вы восстановить закрытый ключ с помощью сертификата KRA(b)? Ответ: Нет, не сможете. Поэтому вы должны также внимательно следить за тем, чтобы у KRA-сертификатов не заканчивался срок действия, и вовремя продлевать их. Обязательно продлевайте KRA-сертификаты, используя существующий (старый) закрытый ключ.

Еще один способ обезопасить заархивированные ключи - иметь не один, а два KRA сертификата на каждый сервер CA, как это показано на рисунке выше.

И последнее. Вы можете подготовить Powershell или Bash скрипт, чтобы автоматически выгружать все закрытые ключи с сервера. Это уже, так сказать, последний выстрел.

Метки: безопасность, pki (ru)

ПечатьE-mail

Добавить комментарий


Защитный код
Обновить