Ответ
OpenSSL — это полнофункциональный toolkit с открытым исходным кодом и библиотека для протоколов TLS/SSL, а также обширный набор криптографических функций. В DevOps он используется повсеместно для обеспечения безопасности связи, управления ключами и сертификатами.
Основные сценарии использования в DevOps:
-
Генерация и управление SSL/TLS-сертификатами:
- Создание приватных ключей и запросов на подпись сертификата (CSR) для внутренних сервисов или публичных сайтов.
- Генерация самоподписанных (self-signed) сертификатов для development и testing окружений.
- Создание корневых и промежуточных центров сертификации (CA) для приватной PKI-инфраструктуры (например, для взаимного TLS (mTLS) между микросервисами).
-
Проверка сертификатов и подключений: Валидация цепочки сертификатов, проверка срока действия, имени хоста (SAN).
-
Шифрование и хеширование данных: Используется в скриптах для безопасного хранения паролей, создания дайджестов файлов для проверки целостности.
Практические примеры команд:
Генерация самоподписанного сертификата (для внутреннего сервиса):
# Генерация приватного ключа 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 остается незаменимым инструментом для отладки, создания первоначальной инфраструктуры и написания скриптов.