Как развернуть и настроить инфраструктуру открытого ключа (PKI) и корпоративным центом сертификации (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. Теория

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

Что такое сертификат? Сертификат –это набор полей в формате x.509, содержащий идентификатор субъекта (например, имя пользователя или компьютера), время действия, имя издателя, назначение, используемые алгоритмы хеширования и шифрования, правила проверки подлинности и открытый ключ, а также цифровую подпись, которая позволяет удостоверить подлинность и целостность сертификата.

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

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

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

 

Этот процесс нужно очень хорошо понимать.

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

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

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

 

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

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

 

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

 

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

 

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

 

Далее, нужно подправить файл настроек чтобы все заработало как нужно.

 

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

 

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

 

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

 

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

 

Теперь нужно опубликовать в интернете сертификат CA и список отзыва. У фирмы ООО “Рога и копыта” есть сайт ca.hhbb.me, для простоты эксперимента предположим, что у нас настроен сервере Apache, который перенаправляет все запросы с ca.hhbb.me в директорию /var/www/html/pki. Настройка Apache более подробна описана в статье: Как установить LAMP на сервере Debian 10. Создадим две символические ссылки:

 

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

 

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

Что делать с центром сертификации дальше? Здесь мы рассмотрим две основополагающие функции, то для чего нужен CA — это выдача и отзыв сертификатов.

 

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

Предположим, что нам нужно выдать сертификат для защищенного при помощи 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:

 

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

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

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

 

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

 

 

4. Вместо заключения

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

 

 

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

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

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

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии 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.
Вы должны согласиться с условиями для продолжения

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