Как развернуть и настроить инфраструктуру открытого ключа (PKI) c корпоративным центом сертификации (CA)

Как развернуть и настроить инфраструктуру открытого ключа (PKI) с корпоративным центом сертификации (CA)

Рубрики:

Security

Метки:

, , ,

В закрытой корпоративной сети часто возникает необходимость в развертывании и настройке Инфраструктуры Открытого Ключа (Public Key Infrastructure — PKI) с корпоративным центром сертификации (Certificate authority — CA). В этой статье я опишу настройку простейшего CA одноуровневой иерархии PKI.

Настройку инфраструктуры открытого ключа PKI будем рассматривать на базе Ubuntu 16.04, главным действующим лицом станет фирма с громким названием ООО «Рога и копыта» или по-английски — Horns and hooves, LLC. У этой фирмы есть свой веб-сайт ca.hhbb.me, через который она будет распространять CRL (списки SSL-сертификатов, отозванных CA).

Содержание:

  1. Что такое PKI и что такое CA
    1. Что такое сертификат
    2. Как формируется цифровая подпись
    3. Как формируется цифровая подпись
    4. Что такое центр сертификации
    5. Что такое PKI
    6. Что такое одноуровневая PKI
  2. Как настроить корневой центр сертификации (CA)
    1. Подготовка к настройке
    2. Настройка корневого центра сертификации (CA)
    3. Создание сертификата корневого центра сертификации (CA)
    4. Создание списка отзыва сертификатов (CRL)
    5. Публикация сертификата
  3. Работа с сертификатами
    1. Выдача сертификатов
    2. Отзыв сертификатов
  4. Выводы

Что такое PKI и что такое CA

Прежде чем приступать к настройке стоит разобраться в нескольких основополагающих вопросах.

Что такое сертификат

Сертификат — это набор полей в формате x.509, содержащий:

  • идентификатор субъекта (например, имя пользователя или компьютера);
  • время действия;
  • имя издателя;
  • назначение;
  • используемые алгоритмы хеширования и шифрования;
  • правила проверки подлинности;
  • открытый ключ.

Кроме того, в сертификате есть цифровая подпись, которая позволяет удостоверить его подлинность и целостность.

Как формируется цифровая подпись

От всех значащих полей сертификата высчитывается хеш-функция, а затем шифруется закрытым ключом центра сертификации. В самоподписанных сертификатах или сертификатах корневого центра сертификации результаты хеш-функции шифруются закрытым ключом непосредственного субъекта сертификации.

Как проверяется сертификат

Предположим, мы подключаемся к веб-серверу по протоколу HTTPS и получаем его сертификат. После этого мы:

  1. Проверяем его срок действия.
  2. Проверяем находится ли CA, которым был выпущен сертификат, списке доверительных CA на нашем ПК.
  3. Проверяем подпись сертификата, то есть считаем заново хеш-сумму от всех значащих полей сертификата, расшифровываем цифровую подпись сертификата при помощи открытого ключа CA и сравниваем с нашей хеш-суммой, если совпадает — значит сертификат действительный.
  4. Если в сертификате указана точка распространения списка отзыва сертификатов (CDP), то забираем оттуда список отзыва сертификатов (CRL), проверяем его цифровую подпись и отсутствие в этом списке нашего сертификата.
  5. Проверяем дополнительные поля (например, может ли этот сертификат использоваться для шифрования веб-трафика).

Если все по всем вышеперечисленным пунктам проверка прошла успешно, то сертификату можно доверять.

Что такое центр сертификации

Центр сертификации (CA) — это определенный набор программ, главная функция которого состоит в выдаче, контроле и отзыве сертификатов. Каждый CA имеет свой сертификат и закрытый ключ. Закрытый ключ нужно хранить как зеницу ока, потому что он используется для подписи всех выдаваемых сертификатов и списков отзыва (CRL). Сертификату CA должны априори доверять все компьютеры в сети.

Что такое PKI

PKI (Public Key Infrastructure — Инфраструктура Открытого Ключа) — это набор средств и правил, необходимых для поддержания иерархии сертификатов. Проще говоря, это совокупность сертификатов, правил их выдачи и отзыва, правил хранения ключей, центров сертификации и так далее.

Что такое одноуровневая PKI

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

Как настроить корневой центр сертификации (CA)

Теперь начнем настройку корневого центра сертификации (CA).

Подготовка

Сперва переходим в директорию /etc/pki/CA. С этого момента она станет нашей рабочей директорией и все 100% действий мы будем делать в ее пределах нее.

 

Теперь создаем необходимые для работы файлы. В index.txt будут записываться все выдаваемые сертификаты, в файлах serial будет храниться последний серийный номер выданного сертификата, а в crlnumber — номер последнего списка отзыва сертификатов. Кажется, что это мелочь, но работать без них ничего не будет.

 

Далее создаем директорию request. В нее мы будем складывать запросы на подпись сертификата:

Настройка корневого центра сертификации (CA)

Копируем файл с настройками центра сертификации и переходим к его редактированию:

 

Далее нужно подправить файл настроек чтобы все заработало как нужно. Сделаем это следующим образом:

Создание сертификата корневого центра сертификации (CA)

Теперь создадим сертификат корневого ЦС сроком на 5 лет. Сперва он спросит у нас пароль, чтобы зашифровать закрытый ключ, и предложит заполнить несколько полей. В принципе ранее мы уже задали для них значения по умолчанию, поэтому смело щелкаем Enter. Единственное исключение — Common Name (CN). Туда мы вводим полное название нашего CA: Horns and hooves, LLC Certification Authority.

 

Пример вывода:

Создание списка отзыва сертификатов (CRL)

Создадим список отзыва сертификатов (CRL) — пока он будет пустым. Однако очень важно, чтобы он существовал и был доступным. Если клиент не сможет получить CRL, то сертификат скорее всего будет признан недействительным. После запуска openssl запросит пароль от закрытого ключа ЦС, необходимый для подписи CRL.

 

Далее необходимо установить веб-сервер Apache:

 

Читайте также: Как установить LAMP на сервере Debian 10.

Публикация сертификата

Теперь нужно опубликовать в интернете сертификат CA и список отзыва. У фирмы ООО «Рога и копыта» есть сайт ca.hhbb.me. Для простоты эксперимента предположим, что у нас настроен сервер Apache, который перенаправляет все запросы с ca.hhbb.me в директорию /var/www/html/pki.

Создадим две символические ссылки:

 

В итоге у нас получился полностью работоспособный корневой центр сертификации (CA).

Работа с сертификатами

Что делать с центром сертификации дальше? Здесь мы рассмотрим две основные функции CA — выдачу и отзыв сертификатов.

Выдача сертификатов

Предположим, что нам нужно выдать сертификат для защищенного при помощи SSLv3 сайта hhbb.me.

Сперва создадим запрос к центру сертификации. Как и при создании корневого ЦС, он задаст нам кучу вопросов. Мы на все щелкаем Enter, а в Common Name вводим имя узла: hhbb.me.

 

Пример вывода:

 

Отправляем запрос на сертификат hhbb.me.csr на подпись в CA и на выходе мы получим готовый подписанный сертификат. Для подписи потребуется ввести пароль закрытого ключа CA и дважды согласиться, нажав y:

 

Пример вывода:

 

Сертификат для сервера hhbb.me будет лежать в файле certs/hhbb.me.crt, а закрытый ключ — в файле private/hhbb.me.key.

При необходимости конвертируем сертификат в формат PEM или DER:

Отзыв сертификатов

Следующая задача — отозвать скомпрометированный сертификат веб-сервера hhbb.me. Для выполнения команд потребуется пароль от закрытого ключа ЦС.

Помечаем сертификат в базе CA, как отозванный:

 

Обновляем список отзыва сертификатов (CRL):

Выводы

Таким образом, мы настроили инфраструктуру открытого ключа PKI (Privat Key Infrastructure) с собственным центром сертификации (CA). Теперь мы сможем установить корневой сертификат (CA) в доверенное хранилище и выдать всем серверам сертификаты. Благодаря чему соединения будут защищены, а значит не случится никаких утечек информации.

Спасибо за время, уделенное на прочтение статьи! Надеемся, что знания по настройке инфраструктуры открытого ключа PKI (Privat Key Infrastructure) с собственным центром сертификации (CA) помогут Вам повысить квалификацию.

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Security

Метки:

, , ,

Больше похожих постов

1 комментарий. Оставить новый

  • Нет ли тут опечатки openssl openssl ca -config openssl.cnf -gencrl -out crl.pem? Два раза подряд openssl написано.

    Ответить

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Поиск по сайту
Лучшее
Популярное
Рубрики
Меню