Что такое OpenSSL и как он применяется в DevOps и безопасности инфраструктуры?

«Что такое OpenSSL и как он применяется в DevOps и безопасности инфраструктуры?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

OpenSSL — это полнофункциональный toolkit с открытым исходным кодом и библиотека для протоколов TLS/SSL, а также обширный набор криптографических функций. В DevOps он используется повсеместно для обеспечения безопасности связи, управления ключами и сертификатами.

Основные сценарии использования в DevOps:

  1. Генерация и управление SSL/TLS-сертификатами:

    • Создание приватных ключей и запросов на подпись сертификата (CSR) для внутренних сервисов или публичных сайтов.
    • Генерация самоподписанных (self-signed) сертификатов для development и testing окружений.
    • Создание корневых и промежуточных центров сертификации (CA) для приватной PKI-инфраструктуры (например, для взаимного TLS (mTLS) между микросервисами).
  2. Проверка сертификатов и подключений: Валидация цепочки сертификатов, проверка срока действия, имени хоста (SAN).

  3. Шифрование и хеширование данных: Используется в скриптах для безопасного хранения паролей, создания дайджестов файлов для проверки целостности.

Практические примеры команд:

Генерация самоподписанного сертификата (для внутреннего сервиса):

# Генерация приватного ключа RSA и самоподписанного сертификата за одну команду
openssl req -x509 -newkey rsa:4096 
  -keyout /etc/ssl/private/nginx.key 
  -out /etc/ssl/certs/nginx.crt 
  -days 365 -nodes 
  -subj "/C=RU/ST=Moscow/L=Moscow/O=MyCompany/CN=internal-app.mycompany.local"

Создание CSR для получения сертификата от публичного CA (например, Let's Encrypt):

openssl req -new -newkey rsa:2048 
  -nodes -keyout domain.key 
  -out domain.csr 
  -subj "/C=RU/O=MyCompany/CN=*.mycompany.com"

Проверка SSL-сертификата удаленного хоста:

# Полезно для мониторинга истечения срока действия сертификатов
openssl s_client -connect github.com:443 -servername github.com 2>/dev/null | openssl x509 -noout -dates
# Вывод: notBefore=... notAfter=...

Создание дайджеста файла (например, для верификации загруженного артефакта):

openssl dgst -sha256 my-application.jar
# Вывод: SHA256(my-application.jar)= a1b2c3...

Важно для DevOps: Современные практики (например, использование HashiCorp Vault, cert-manager в Kubernetes) автоматизируют выпуск и ротацию сертификатов, но OpenSSL остается незаменимым инструментом для отладки, создания первоначальной инфраструктуры и написания скриптов.