Установка центра сертификации на предприятии. часть 3
Содержание:
Генерирование открытого и секретного ключей
Итак, вы решили самостоятельно изготовить усиленную неквалифицированную электронную подпись и научиться подписывать ею свои документы. Начать необходимо, конечно, с генерирования пары ключей, открытого (public key) и секретного (private key).
Существует множество стандартов и алгоритмов асимметричного шифрования. Одной из библиотек, реализующих эти алгоритмы, является PGP (Pretty Good Privacy). Она была выпущена в 1991 году под проприетарной лицензией, поэтому имеются полностью совместимые с ней свободные библиотеки (например, OpenPGP). Одной из таких свободных библиотек является выпущенная в 1999 году GNU Privacy Guard (GnuPG, или GPG). Утилита GPG традиционно входит в состав почти всех дистрибутивов Линукса; для работы из-под Windows необходимо установить, например, gpg4win. Ниже будет описана работа из-под Линукса.
Сначала сгенерируем собственно ключи, подав (из-под обычного юзера, не из-под root’а) команду
В процессе генерирования вам будет предложено ответить на ряд вопросов:
- тип ключей можно оставить «RSA и RSA (по умолчанию)»;
- длину ключа можно оставить по умолчанию, но вполне достаточно и 2048 бит;
- в качестве срока действия ключа для личного использования можно выбрать «не ограничен»;
- в качестве идентификатора пользователя можно указать свои фамилию, имя и отчество, например, ; адрес электронной почты можно не указывать;
- в качестве примечания можно указать город, либо иную дополнительную информацию.
После ввода вами всех запрошенных данных утилита GPG попросит вас указать пароль, необходимый для доступа к секретному ключу. Дело в том, что сгененрированный секретный ключ будет храниться на вашем компьютере, что небезопасно, поэтому GPG дополнительно защищает его паролем. Таким образом, не знающий пароля злоумышленник, даже если и получит доступ к вашему компьютеру, подписать документы от вашего имени не сможет.
Сгенерированные ключи (во всяком случае, открытый, но можно также и секретный, на тот случай, если ваш компьютер внезапно сломается) необходимо экспортировать в текстовый формат:
Понятно, что вы должны хранить в секрете, а вот вы можете открыто публиковать и рассылать всем желающим.
Шаг 2 — Настройка Apache для использования SSL
Мы создали файлы ключа и сертификата в каталоге . Теперь нам просто нужно изменить конфигурацию Apache, чтобы воспользоваться их преимуществами.
Внесем несколько небольших изменений в нашу конфигурацию:
- Создадим сниппет конфигурации, чтобы задать надежные параметры SSL по умолчанию.
- Мы изменим входящий в комплект файл виртуального хоста SSL Apache, чтобы он указывал на сгенерированные нами сертификаты SSL.
- (Рекомендуется) Мы изменим незашифрованный файл виртуального хоста, чтобы он автоматически перенаправлял запросы на шифрованный виртуальный хост.
После завершения настройки мы получим защищенную конфигурацию SSL.
Создание сниппета конфигурации Apache с надежными настройками шифрования
Прежде всего, мы создадим сниппет конфигурации Apache для определения некоторых параметров SSL. При этом в Apache будет настроен надежный пакет шифров SSL и будут включены расширенные функции, которые обеспечат безопасность нашего сервера. Настраиваемые нами параметры смогут использовать любые виртуальные хосты с SSL.
Создайте новый сниппет в каталоге . Мы назовем файл , чтобы сделать его назначение очевидным:
Для безопасной настройки Apache SSL мы используем рекомендации Реми ван Эльста на сайте Cipherli.st. Этот сайт создан для предоставления удобных настроек шифрования для популярного программного обеспечения.
Рекомендованные настройки на вышеуказанном сайте обеспечивают высокий уровень безопасности. Иногда это достигается за счет совместимости клиентских систем. Если вам требуется поддержка старых версий клиентов, вы можете использовать альтернативный список, нажав на странице ссылку «Да, мне нужны настройки шифрования для устаревшего / старого программного обеспечения». Этот список можно заменить для копируемых ниже элементов.
Выбор конфигурации в основном зависит от того, какие системы вам нужно поддерживать. Оба варианта обеспечивают высокий уровень безопасности.
Для наших целей мы скопируем предоставленные настройки полностью. Мы внесем только одно небольшое изменение. Мы отключим заголовок (HSTS).
Предварительная загрузка HSTS повышает безопасность, но может иметь далеко идущие последствия, если ее включить случайно или неправильно. В этом обучающем модуле мы не будем включать настройки, но вы можете изменить их, если понимаете возможные последствия.
Прежде чем принимать решения, прочитайте о строгой безопасности транспорта HTTP или HSTS, в особенности о функции «предварительной загрузки»
Вставьте конфигурацию в открытый нами файл :
/etc/apache2/conf-available/ssl-params.conf
Сохраните файл и закройте его после завершения.
Изменение файла виртуального хоста Apache SSL по умолчанию
Теперь изменим , используемый по умолчанию файл виртуального хоста Apache SSL. Если вы используете другой файл серверных блоков, используйте имя этого файла в приведенных ниже командах.
Прежде чем продолжить, создадим резервную копию первоначального файла виртуального хоста SSL:
Теперь откройте файл виртуального хоста SSL для внесения изменений:
С удалением большинства комментариев содержание файла виртуального хоста по умолчанию должно выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
Мы внесем в файл незначительные изменения. Мы внесем желаемые изменения в файл виртуального хоста (адрес электронной почты администратора сервера, имя сервера и т. д.), а также изменим директив SSL, чтобы они указывали на наши файлы сертификатов и ключей.
После внесения изменений ваш серверный блок должен выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
Сохраните файл и закройте его после завершения.
(Рекомендуется) Изменение файла хоста HTTP для перенаправления на HTTPS
В настоящее время сервер будет предоставлять нешифрованный трафик HTTP и шифрованный трафик HTTPS. В большинстве случаев для обеспечения безопасности рекомендуется включить автоматическое перенаправление HTTP на HTTPS. Если вы не хотите использовать эту функцию, или она вам не нужна, вы можете спокойно пропустить этот раздел.
Чтобы изменить файл нешифрованного виртуального хоста для перенаправления всего трафика для шифрования SSL, мы можем открыть файл :
Внутри файла в блоках конфигурации нам нужно добавить директиву , которая должна направлять весь трафик на версию сайта с шифрованием SSL:
/etc/apache2/sites-available/000-default.conf
Сохраните файл и закройте его после завершения.
2: Настройка Nginx для поддержки SSL
На данном этапе ключ и сертификат созданы и хранятся в каталоге /etc/ssl. Теперь нужно отредактировать настройки Nginx:
- Создать сниппет, указывающий расположение файлов SSL-сертификата и ключа.
- Добавить настройки SSL.
- Настроить блоки server для обслуживания запросов SSL и поддержки новых настроек.
Расположение ключа и сертификата
Создайте новый сниппет Nginx в каталоге /etc/nginx/snippets.
Рекомендуется указать в названии файла его назначение (к примеру, self-signed.conf):
В этот файл нужно добавить директиву ssl_certificate, которая будет указывать путь к сертификату, и директиву ssl_certificate_key, которая задаёт путь к соответствующему закрытому ключу.
Сохраните и закройте файл.
Настройка SSL
Теперь нужно создать другой сниппет, предназначенный для настроек SSL. Он позволит серверу Nginx использовать надёжный механизм шифрования и включит некоторые дополнительные функции безопасности.
Эти установленные параметры можно повторно использовать в будущих конфигурациях Nginx, потому этому файлу лучше дать какое-нибудь общее имя:
Для безопасной настройки SSL обратимся к рекомендациям Remy van Elst на сайте Cipherli.st. Этот сайт предназначен для распространения простых и надёжных параметров шифрования для популярного программного обеспечения.
В этом мануале мы используем все предложенные параметры, только немного отредактируем их.
Сейчас нужно добавить DNS резолвер для upstream запросов. В руководстве для этого используется Google.
Также нужно отключить заголовок Strict-Transport-Security (HSTS), а также его функцию предварительной загрузки. Предварительная загрузка заголовка HSTS обеспечивает повышенную безопасность, но может иметь далеко идущие последствия, если заголовок был включен случайно или некорректно. В этом мануале мы не будем включать эту опцию, но вы можете изменить это позже, если уверены, что понимаете последствия.
Перед тем, как принять решение, узнайте больше о HTTP Strict Transport Security, или HSTS, и, в частности, о функциях предварительной загрузки.
Скопируйте этот сниппет и вставьте его в ssl-params.conf:
Поскольку сертификат является самоподписанным, SSL stapling не будет использоваться. Nginx выдаст предупреждение, отключит stapling для данного сертификата и продолжит работу.
Сохраните и закройте файл.
Настройка Nginx для поддержки SSL
В мануале предполагается, что вы применяете пользовательский виртуальный хост (блок server), который хранится в каталоге /etc/nginx/sites-available. Здесь это файл /etc/nginx/sites-available/example.com. Если вы используете другой файл, пожалуйста, укажите его имя.
Для начала создайте резервную копию файла блока server.
Затем откройте файл блока server в текстовом редакторе:
Файл должен выглядеть примерно так:
Ваш файл может быть составлен в другом порядке, и вместо директив root и index у вас может быть location, proxy_pass или другие пользовательские конфигурации. Это нормально, вам нужно только обновить директивы listen и включить сниппеты SSL. Этот блок нужно настроить для поддержки трафика SSL по порту 443, а затем создать новый блок server для обработки трафика по порту 80 и автоматической переадресации трафика на порт 443.
Примечание: Во время настройки рекомендуется использовать временный редирект 302. Убедившись в правильности настроек, можно включить постоянный редирект 301.
В текущем файле обновите директивы listen для поддержки порта 443 и ssl, а затем включите два новых сниппета:
Затем добавьте второй блок server в этот файл (после закрывающей фигурной скобки (}) первого блока):
Сохраните и закройте файл.
Использование командлета New-SelfSignedCertificate для создания сертфикатов
Для создания самоподписанного сертификата в PowerShell предлагается использовать командлет New-SelfSignedCertificate, входящий в состав модуля PoSh с именем PKI (Public Key Infrastructure).
Чтобы вывести список всех доступных командлетов в модуле PKI, выполните команду:
Самоподписанные сертификаты рекомендуется использовать в тестовых целях или для обеспечения сертификатами внутренних интранет служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), в тех случая когда по какой-то причине приобретение сертификата у внешнего провайдера или разворачивание инфраструктуры PKI/CA невозможны.
Совет. Не забывайте также про возможность использования полноценных бесплатных SSL сертификатов от Let’s Encrypt. Пример, как выпустить SSL сертификат Let’s Encrypt и привязать его к сайту IIS.
Для создания сертификата нужно указать значения –DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и —CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат). Командлет можно использовать для создания самоподписанного сертификата в Windows 10 (в нашем примере), Windows 8/8.1 и Windows Server 2016/2012/2012 R2.
Чтобы создать сертификат для DNS имени test.contoso.com и поместить его в список персональных сертификатов компьютера, выполним команду:
По-умолчанию генерируется самоподписанный сертификат со следующим настройками:
- Криптографический алгоритм: RSA;
- Размер ключа: 2048 бит;
- Допустимые вариантов использования ключа: Client Authentication и Server Authentication;
- Сертификат может использоваться для: Digital Signature, Key Encipherment ;
- Срок действия сертификата: 1 год.
Данная команда создаст новый сертификат и импортирует его в персональное хранилище компьютера. Открыв оснастку certlm.msc, проверим, что в разделе Personal хранилища сертификатов компьютера появился новый сертификат.
Как вы видите, в свойствах сертификата указано, что данный сертификат может использоваться для аутентификации клиентов (Client Authentication), однако он действителен и для аутентификации сервера (Server Authentication).
Примечание. Срок действия такого самоподписанного сертификата ограничивается 1 годом с момента его создания. Чтобы выпустить сертификат на 3 года, выполните следующие команды:
Чтобы экспортировать полученный сертификат c закрытым ключом в pfx файл, защищенный паролем, нам понадобится его отпечаток (Thumbprint), который нужно скопировать из результатов выполнения команды New-SelfSignedCertificate:
Можно экспортировать открытый ключ сертификата:
Полученный открытый ключ или сам файл сертификата можно установить на веб-сервер или клиентах домена с помощью GPO (пример установки сертификата на ПК с помощью групповых политик).
Одной из полезных возможностей командлета New-SelfSignedCertificate является возможность создать сертификат с несколькими различными именами Subject Alternative Names (SAN).
Примечание. Если создается сертификат с несколькими именами, первое имя в параметре DnsName будет использоваться в качестве CN (Common Name) сертификата.
К примеру, создадим сертификат, у которого указаны следующие имена:
- Subject Name (CN): adfs1.contoso.com
- Subject Alternative Name (DNS): web_gw.contoso.com
- Subject Alternative Name (DNS): enterprise_reg.contoso.com
Команда создания сертификата будет такой:
Также можно выписать сертификат для всего пространства имен в домене, для этого в качестве имени сервера указывается *.contoso.com.
Создание сертификата в Word вручную
Часто возникает потребность разработать купон без использования предложенных шаблонов. В таком случае достаточно следовать таким шагам:
- Открыть приложение Word.
- Создать пустой документ.
- Нажать на вкладку «Вставка» и открыть ее панель инструментов.
- Щелкнуть на «Картинка». ЭтаопциянаходитсяналевойсторонепанелиинструментовВставка.
- Выбрать фотографию, которую запланировано использовать в качестве фона. Возможно, сначала придется щелкнуть на папку с фотографией в левой части окна, чтобы просмотреть ее.
- Выбрать «Вставить»или «Открыть». Кнопка расположена в правом нижнем углу окна.
- Снова клацнуть на вкладку «Вставка».
- Нажать «Текстовое поле». Можно найти эту опцию на правой стороне панели инструментов. Появится раскрывающееся меню.
- Нажать «Нарисовать текстовое поле». Функция находится в выпадающем меню.
- Создать текстовое поле. Нажать на поле и перетащить мышью к месту на фотографии, на котором хочется поместить текст подарочного сертификата.
- Ввести текст.
- Распечатать готовую карту.
Разработка с помощью шаблонов
Apollo предлагает 12 различных шаблонов сертификатов, которые можно настроить и распечатать. Получив доступ к шаблону, есть возможность добавить такие параметры, как имя, название компании, контактную информацию и логотип.
Но стоит обратить внимание, что для загрузки многих из этих шаблонов на компьютере должен быть установлен Adobe Acrobat или Reader. Если его нет и на странице шаблона нет запроса на доступ к нему, можно загрузить Reader, посетив официальный веб-сайт
Printables DLTK – это еще один сайт, где можно приобрести шаблоны для создания своей собственной подарочной карты. Для этого достаточно перейти на веб-сайт и нажать на одну из категорий в левой части страницы. В каждом разделе приведены пошаговые инструкции по настройке карты: можно использовать различные изображения, шрифты и цвета.
Adobe Spark
Можно создавать свои собственные уникальные сертификаты с помощью создателя подарочных сертификатов Adobe Spark. Онлайн сервис Spark предлагает пользователям возможность разрабатывать привлекательные и профессиональные сертификаты.
Adobe Spark Post предлагает десятки бесплатных готовых шаблонов подарочных карт, которые представлены ниже.
Процесс работы с сервисом очень прост:
- Открыть онлайн приложение.
- Просмотреть список бесплатных печатных подарочных сертификатов, затем выбрать шаблон подарочного купона, который соответствует потребностям.
- Выбрать фотографии и изображения из бесплатной галереи, или добавьте свои собственные изображения, чтобы они соответствовали бренду.
- Избрать шрифт, который соответствует стилю компании. Типография так же мощно, как и сами слова, передает суть любого бизнеса.
- Использовать изображение, чтобы изменить фон подарочного сертификата или как дополнительный креативный элемент дизайна.
- Добавить необходимый текст.
Использование Adobe Spark для создания подарочного сертификата имеет множество преимуществ. Во-первых, приложение интуитивно понятно и легко в использовании. В нем загружена база предварительно созданных профессиональных проектов.
Производитель Adobe дает возможность сохранять и отправлять подарочные сертификаты в цифровом виде, а также распечатывать их для создания физических копий. Эта универсальность разрешает адаптировать дизайн к потребностям конкретной ситуации.
Наконец, можно неограниченно использовать Adobe Spark, вносить изменения в дизайн подарочных карт или регулярно создавать новые.
Настройка групповой политики для выдачи RDP сертификатов
Теперь нужно настроить доменную политику, которая будет автоматически назначать RDP сертификат компьютерам/серверам согласно настроенного шаблона.
Предполагается, что все компьютеры домена доверяют корпоративному центру сертификации, т.е. корневой сертификат через GPO добавлен в доверенные корневые центры сертификации.
- Откройте консоль управления доменными групповыми политиками gpmc.msc, создайте новый объект GPO и назначьте его на OU с RDP/RDS серверами или компьютерами, для которых нужно автоматически выдавать TLS сертификаты для защиты RDP подключения;
- Перейдите в раздел GPO: Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security. Включите политику Server Authentication Certificate Template. Укажите имя шаблона CA, который вы создали ранее (RDPTemplate);
- Затем в этом же разделе GPO включите политику Require use of specific security layer for remote (RDP) connections и установите для нее значение SSL;
- Для автоматического продления RDP сертификата, перейдите в раздел GPO Computer configuration -> Windows settings -> Security Settings -> Public Key Policies и включите политику Certificate Services Client – Auto-Enrollment Properties. Выберите опции “Renew expired certificates, update pending certificates and remove revoked certificates” и “Update certificates that use certificate templates”;
- Если вы хотите, чтобы клиенты всегда проверяли сертификат RDP сервера, вам нужно настроить политику Configure Authentication for Client = Warn me if authentication fails (секция GPO Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client);
- Если нужно, можете через политики файервола открыть входящий RDP порт TCP/UDP 3389;
- Осталось обновить политики на клиенте, запустить консоль сертификатов компьютера (Certlm.msc), и проверить, что в разделе Personal -> Certificates появился сертификат для Remote Desktop Authentication, выданный вашим CA. Если политики не применились, для диагностики GPO воспользуйтесь утилитой gpresult и этой статьей.
Для применения нового RDP сертификата, перезапустите службу Remote Desktop Services:
Теперь при RDP подключении к серверу перестанет появляться запрос на доверие сертификату (чтобы появился запрос о доверии сертификату, подключитесь к серверу по IP адресу вместо FQDN имени сервера, для которого выпущен сертификат). Нажмите кнопку “Посмотреть сертификат”, перейдите на вкладку “Состав”, скопируйте значение поля “Отпечаток сертификата”.
Также можете в консоли Certification Authority в секции Issued Certificates проверить, что по шаблону RDPTemplate был выдан сертификат определённому Windows компьютеру/серверу. Также проверьте значение Thumbprint сертификата:

Теперь сравните полученные данные с отпечатком сертификата, который используется службой Remote Desktop Service. Вы можете посмотреть значение отпечатка сертификата службы RDS в реестре (ветка HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations, параметр TemplateCertificate) или командой PowerShell: 
Теперь, при подключении к удаленном столу любого сервера или компьютера, на который действует эта политика, вы не увидите предупреждения о недоверенном RDP сертификате.