Как создать сертификат SSL без интерактивного режима с помощью OpenSSL
Создание и управление сертификатами SSL являются важными аспектами обеспечения безопасности веб-сайтов. Однако, если вам нужно регулярно генерировать новые сертификаты, взаимодействие с командной строкой может быть утомительным. На счастье, существует способ сделать этот процесс автоматизированным и неинтерактивным. В этой статье мы рассмотрим, как настроить OpenSSL для создания сертификатов SSL без необходимости вводить данные вручную.
Подготовка конфигурационного файла
Для начала, убедитесь, что у вас есть корректно настроенный конфигурационный файл ssl.config
. В этом файле вы можете указать всю необходимую информацию для вашего сертификата, такую как провинция, штат и организация. Однако, чтобы сделать процесс неинтерактивным, вам нужно будет внести некоторые изменения.
Добавьте следующие строки в ваш конфигурационный файл:
[req]
distinguished_name = req_dn
prompt = no
[req_dn]
countryName = IT
organizationName = Some org
commonName = foo.example.com
Здесь мы задаем prompt = no
, что сигнализирует OpenSSL о том, что не нужно запрашивать ввод у пользователя.
Создание сертификата без интерактивного ввода
Теперь, когда ваш конфигурационный файл настроен, вы можете использовать следующие команды для автоматического создания ключей и сертификатов. Обратите внимание на параметры, которые должны быть указаны для каждой команды. Это поможет вам избежать интерактивного режима.
Вот пример сценария, который вы можете использовать:
set -e
DOMAIN=blu.priv
HOSTNAME=`hostname`
openssl req -new -config ssl.config -newkey rsa:4096 -days 3650 -x509 -nodes -keyout demoCA/$DOMAIN.key -out demoCA/$DOMAIN.crt -batch
openssl genrsa -aes256 -passout file:passphrase.txt -out demoCA/private/$DOMAIN.key 4096
openssl req -new -config ssl.config -x509 -days 3650 -key demoCA/private/$DOMAIN.key -passin file:passphrase.txt -keyout demoCA/$DOMAIN.key -out demoCA/$DOMAIN.crt -batch
openssl req -config ssl.config -passout file:passphrase.txt -newkey rsa:4096 -keyout $HOSTNAME.key -out $HOSTNAME.req -batch
yes | openssl ca -config ssl.config -passin file:passphrase.txt -out $HOSTNAME.crt -infiles $HOSTNAME.req
for i in *key; do openssl rsa -passin file:passphrase.txt -in $i -out $i; done
Объяснение команд
set -e
: эта команда заставляет сценарий завершаться при любой ошибке.openssl req -new
: создает новый сертификат.-newkey rsa:4096
: генерирует новый RSA-ключ длиной 4096 бит.-days 3650
: задает срок действия сертификата равным 10 годам.-x509
: позволяет создавать самозаверяющий сертификат вместо CSR.-batch
: отключает интерактивный режим.openssl genrsa
: генерирует закрытый ключ с заданным паролем.openssl ca
: подписывает сертификат с помощью вашего Центра сертификации.
Заключение
Автоматизация процесса создания сертификатов SSL с использованием OpenSSL значительно упрощает задачу администрирования. Правильная настройка конфигурационного файла и использование команд, не требующих интерактивного ввода, позволяют сэкономить время и повысить эффективность. Теперь вы можете генерировать сертификаты быстро и без лишних хлопот.