Приложение Д. Генерация сертификатов SSL |
![]() ![]() ![]() |
Для компонентов программного комплекса Dr.Web для Интернет-шлюзов UNIX, использующих для обмена данными защищенный канал передачи данных SSL/TLS и основанные на нем прикладные протоколы, такие, как HTTPS, LDAPS, SMTPS и т.п., необходимо обеспечить наличие закрытых ключей SSL и соответствующих им сертификатов. Для некоторых компонентов ключи и сертификаты генерируются автоматически, а для других они должны быть предоставлены пользователем программного продукта. Все компоненты используют сертификаты, представленные в формате PEM. Для генерации закрытых ключей и сертификатов, используемых для соединений через SSL/TLS, в том числе – для удостоверяющих сертификатов центра сертификации (CA) и для подписанных сертификатов, можно использовать утилиту командной строки openssl (входит в состав криптографического пакета OpenSSL). Рассмотрим последовательность действий, необходимых для создания закрытого ключа и соответствующего ему сертификата SSL, а также сертификата SSL, подписанного удостоверяющим сертификатом СА. Генерация закрытого ключа SSL и сертификата Генерация состоит из двух шагов: 1.Генерация закрытого ключа (алгоритм RSA, длина ключа – 2048 бит):
Если требуется защитить ключ паролем, дополнительно используйте опцию -des3. Сгенерированный ключ находится в файле keyfile.key в текущем каталоге. Для просмотра сгенерированного ключа можно использовать команду:
2.Генерация сертификата на указанный срок на основании имеющегося закрытого ключа (в данном примере – на 365 суток)
Обратите внимание, что данная команда запросит данные, идентифицирующие сертифицируемый объект (такие, как имя, организация и т.п.). Сгенерированный сертификат будет помещен в файл certificate.crt. Для проверки содержимого сгенерированного сертификата можно воспользоваться следующей командой:
Регистрация сертификата в качестве доверенного сертификата СА Если имеется сертификат, который нужно зарегистрировать в системном списке доверенных сертификатов центров сертификации (например, такой сертификат мог быть сгенерирован на предыдущем шаге), необходимо выполнить следующие действия: 1.Переместить или скопировать файл сертификата в системный каталог доверенных сертификатов (в Debian/Ubuntu – /etc/ssl/certs/). 2.Создать в каталоге доверенных сертификатов символическую ссылку на сертификат именем которой будет являться хэш сертификата. 3.Переиндексировать содержимое системного каталога сертификатов. Приведенный ниже пример выполняет все эти три действия. Предполагается, что сертификат, который регистрируется в качестве доверенного, располагается в файле /home/user/ca.crt:
Создание подписанного сертификата Для создания подписанного сертификата необходимо выполнить следующие шаги: 1.Сгенерировать файл-запрос на подписание сертификата (Certificate Signing Request – CSR) на основании имеющегося закрытого ключа. Если ключа не имеется, его предварительно следует сгенерировать. Запрос на подписание создается следующей командой:
Эта команда, так же, как и команда создания сертификата, запрашивает данные, идентифицирующие сертифицируемый объект. Здесь keyfile.key – имеющийся файл закрытого ключа. Полученный запрос будет сохранен в файл request.csr. Для проверки результата создания запроса можно воспользоваться командой:
2.На основании запроса и имеющегося сертификата СА создать подписанный сертификат. Создание подписанного сертификата производится следующей командой:
Обратите внимание, что для создания подписанного сертификата нужно иметь три файла: файл корневого сертификата ca.crt и его закрытый ключ ca.key, а также файл запроса на подписание сертификата request.csr. Созданный подписанный сертификат будет сохранен в файл sigcert.crt. Для проверки результата можно воспользоваться командой:
Процедуру создания ключа и сертификата (или подписанного сертификата, в зависимости от необходимости) следует повторить столько раз, сколько уникальных сертификатов необходимо создать. Например, с точки зрения соображений безопасности каждый агент распределенной проверки файлов Dr.Web Network Checker, входящий в сканирующий кластер, должен иметь собственную пару ключ/сертификат. |