Как сгенерировать самоподписанный сертификат с помощью OpenSSL на Linux

Защищенное соединение SSL

Возникла необходимость (для внутренних целей) сгенерировать самоподписанный сертификат. Для этого был использован OpenSSL (Linux).

Итак, создаём самоподписанный SSL сертификат с помощью OpenSSL. Для начала нам необходимо установить пакет OpenSSL. Устанавливаем его так:

# apt-get install openssl

После установки OpenSSL, создадим директории, в которых будут лежать сертификаты и ключи:

# mkdir /home/ssl/

Создаем самоподписанный SSL сертификат так:

# openssl req -x509 -newkey rsa:2048 -days 365 -keyout /home/ssl/my_key.key -out /home/ssl/my_cert.crt

Описание параметров:

req — это генерация запросов на подпись сертификата, но если мы задаём ключ «-x509», это означает, что мы генерируем самоподписанный сертификат.
-newkey rsa:2048 — если у нас ещё нет ключа, мы добавляем данный параметр, что бы ключ был создан автоматически. Указываем параметры ключа.
-days 365 — указываем количество дней, в течении которых будет действовать данный сертификат.
-keyout /home/devuser/cert/mykey.key — параметр нужен, так как мы указали newkey и генерируем новый ключ. Указываем в какой фал положим ключ.
-out /home/devuser/cert/cert.crt — сюда положим наш сертификат.

Нас попросят ввести пароль к ключу. Вводим пароль, не менее 4 символов (и еще раз). Затем нас попросят ввести данные о сертификате. Если какие-то данные Вам не нужны можете просто пропустить и нажать Enter, будет использовано значение по-умолчанию (в квадратных скобках).

Давайте рассмотрим по порядку, что нам предлагают ввести:

Country Name (2 letter code) [AU]: — страна/регион
State or Province Name (full name) [Some-State]: — штат (у нас их нет, поэтому пропускаем)
Locality Name (eg, city) []: — город
Organization Name (eg, company) [Internet Widgits Pty Ltd]: — имя организации
Organizational Unit Name (eg, section) []: — подразделение организации, пропускаем.
Common Name (e.g. server FQDN or YOUR name) []: — Обязательное поле, это имя по которому к серверу будут обращаться.
Email Address []: — адрес электронной почты, тоже можно пропустить.

В итоге мы получили два файла, ключ и сертификат. Ключ — это секретный ключ, публичный ключ находиться в теле самого сертификата.

Ключ без пароля

Если Вы, например, используете сертификат и ключ в веб-сервере, то пароль на ключе будет мешать нормальной работе. Поэтому лучше сгенерировать ключ без пароля. Добавляем параметр -nodes, в результате секретный ключ не будет зашифрован паролем.

# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/ssl/my_key.key -out /home/ssl/my_cert.crt

Так же можно ещё добавить параметр -subj — этот тот кому принадлежит сертификат, то что мы вводили в интерактивном режиме (название организации, мыло и так далее). Можно эти параметры сразу указать в команде.

# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/ssl/my_key.key -out /home/ssl/my_cert.crt -subj /C=/ST=/L=/O=/CN=unlix.ru

В примере выше пропускаем все поля, кроме CN (Common Name).

Чтобы просмотреть сертификат выполняем:

# openssl x509 -noout -text -in /home/ssl/my_cert.crt

-noout — выводим данные не в файл а в консоль.
-text — выводим данные в текстовом виде.
-in /home/devuser/cert/cert.crt — откуда берём сертификат


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

UNLIX © 2019

При копировании материалов ОБЯЗАТЕЛЬНО указывать актуальную ссылку на сайт.