Рубрики
Uncategorized

Автоматизированный SSL в наших внутренних приложениях

Эта статья была первоначально размещена на Bizongo Engineering Если вы из разработки программного обеспечения … Tagged с автоматизацией, безопасности, DevOps.

Эта статья была первоначально размещена на Bizongo Engineering

Если вы из индустрии разработки программного обеспечения, я уверен, что вы должны знать, насколько важен уровень Secure Sockets Layer или SSL в качестве дополнительного уровня безопасности в любом приложении, особенно если вы имеете дело с конфиденциальной информацией, такой как аутентификация пользователей, секрет токены и платежи.

Поскольку мы в Bizongo имеем дело с такой критической информацией на ежедневной основе, как и все компании электронной коммерции, становится очевидным, что все приложения должны общаться как можно более надежно. Вот где SSL входит в сценарий, как показано на изображении ниже или как интерактивное веб-приложение Здесь Анкет

В то время как наши общественные сталкиваются с витринами, а API-интерфейсы имеют его ( вместе с кураторскими правилами брандмауэра ), наши внутренние приложения отставали в этом отношении. Итак, мы пошли на изучение возможных решений для обнаружения LetsEncrypt , бесплатный сертификат, используется для создания полностью соответствующих сертификатов, доверяемых браузерам.

Наша ситуация?

Должно быть, вы думали, что закупление SSL LetsEncrypt будет все, но это еще не все. Это связано с некоторыми из наших особых требований, перечисленных ниже:

  1. Наши внутренние среды в нескольких доменах-все дикие карты уровня 2, то есть *.qax.domain.com где x составляет 1,2,3… н. Традиционная дикая карта SSL не покрывает их, поскольку они обращаются только к 1 уровню, например: *.domain.comСсылка1 и Ссылка2
  2. Мы не хотели в конечном итоге устанавливать кучу программного обеспечения на всех серверах, делая его утомительным для поддержания, обновления и отлаживания, впоследствии становится очень некалированным.
  3. Сертификаты SSL можно получить для ограниченной продолжительности (LetsEncrypt имеет достоверность 90 дней ) и, следовательно, требует периодического обновления. Мы хотели бы автоматизировать это для простоты всей нашей инженерной группы, избегая любых потенциальных проблем, возникающих из -за истекшего срока.
  4. Все соответствующие услуги, такие как nginx следует перезагрузить, чтобы отразить обновленную SSL без плавно.
  5. Наконец, наше решение также должно иметь уведомления по электронной почте/Slack для лучшего наблюдения.

Решение:

Перед тем, как погрузиться, обратите внимание, что поиск в Google будет продемонстрировать множество статей, в которых подробно описывается, как настроить LetsEncrypt Для установки и автоматизации обновления SSL. Однако большинство из них покрывают только голый домены и/или www но не дикие карты тем самым не помогает нам в режестивании в решении этой проблемы. Итак, мы подумали о том, чтобы написать сами, чтобы принести пользу любому, у кого есть подобный вариант использования.

Достаточно сказано, давай взломаем!

Чтобы покрыть все точки выше, мы начали делать сценарий оболочки в Комбинация С API AWS, в котором находится всю нашу инфраструктуру. Поскольку LetsEncrypt придерживается высокого соответствия, любой, кто генерирует или обновляя SSL для домена, также должен быть в состоянии доказать свою собственность. Это выполнимо через Методы как Https валидация через автономный веб-сервер или альтернативно, DNS Валидация с помощью публикации временного разрешения записей TXT.

Мы нашли последнее простым, так как он не разоблачал порты нашей внутренней среды 443 миру или нуждается в дополнительных накладных расходах на IP-адреса LetsEncrypt белого списка. Поскольку записи DNS временно необходимы, они могут быть созданы и удаляют все обновление.

Ниже приведено, как выглядят записи:

_acme-challenge.qa1.domain1.com 300 IN TXT ""
_acme-challenge.qa2.domain2.com 300 IN TXT ""
....
...
..
.
_acme-challenge.qaX.domainX.com 300 IN TXT ""

Учитывая это, наша первоначальная итерация скрипта проверила для пакета letsEncrypt, т. Е. Certbot на целевом сервере, прежде чем продолжить реализацию оставшейся логики. Вот где это стало сложным, поскольку сертификат зависит от библиотек Python, либо V2.7, либо V3.4+ с Привилегии SUDO . Для непосвященных, поживание с ними может сломать многие части системы Unix ( как apt , мрачный Управляющие пакетами )

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

Так выглядит наша последняя логика сценариев:

  1. Сделать openssl Позвоните в наши внутренние домены, чтобы проверить существующие сертификаты SSL и получить его даты.
  2. Проверьте, отличается ли сегодняшняя дата с вышеизложенным на 7 дней, затем выполните оставшуюся часть сценария, иначе выходит.
  3. Если выполнено, генерируйте все вышеупомянутые дикие карты SSL и rsync Это в целевые папки с правильными разрешениями на наших внутренних серверах.
  4. Сделайте тест на конфигурацию и перезагрузить nginx только Если вышеперечисленное преуспевает.
  5. Используйте Curl Чтобы запустить слабый веб-крючок и отправить соответствующее сообщение на настроенный канал.

Какой был результат?

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

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

Оригинал: «https://dev.to/vinayhegde1990/automated-ssl-on-our-internal-applications-51hn»