Создаём самоподписанный ssl сертификат с помощью OpenSSL.

Создание самоподписанного SSL сертификат при помощи OpenSSLНедавно возникла необходимость создать самоподписанный сертификат. Использовал я для этого утилиту OpenSSL и Linux. Собственно этим и хочу с вами поделиться.

Создаём самоподписанный ssl сертификат с помощью OpenSSL.

Для начала нам необходима ОС Linux, в принципе данная утилита есть и пот Windows, но так как есть linux пользуюсь им. В ОС необходимо установить пакет OpenSSL. Устанавливаем его следующей командой (если под админом можно без “sudo”):

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

Приступаем к созданию самоподписанного ssl сертификата. Выполняем команду:

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

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

OpenSSL создаём сертификат

Дальше нас попросят ввести пароль к ключу. Вводим пароль, не меньше 4 символов, и повторяем ввод пароля. Затем нас попросят ввести данные о сертификате (информацию о серверной стороне). Если какие-то данные Вам не нужны можете просто ставить точку (“.”).

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

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

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

OpenSSL самоподписанный сертификат

OpenSSL самоподписанный сертификат

Убираем пароль с секретного ключа.

Ещё можно немного модифицировать наш скрипт, например убрать пароль с секретного ключа, это в большинстве случаев не удобно, если сервис стартует в автоматическом режиме, в тот момент когда ему необходимо будет получить доступ к секретному ключу, нужно будет вручную ввести пароль.

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

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

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

Для просмотра сертификата можно воспользоваться этой командой:

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

На этом всё. Не забывайте пользоваться кнопками «Поделиться в соц. сетях», так же подписываться на наш Канал и группы в ВК, Twitter, Facebook.

Всем удачи и море печенек!

0

Автор публикации

не в сети 1 месяц

CrazyKing

0
Печенько-кодер :Р
Комментарии: 50Публикации: 73Регистрация: 30-03-2017

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

CrazyKing

Печенько-кодер :Р

Один комментарий

  1. можно не писать в скрипте значение CN=”печенек нет”, а поставить параметр CN=$COMMON_NAME для автоматической подстановки имени кому принадлежит сертификат, при условии что вы заполнили все пункты при создании те где спрашивалось о вашем имени – оно же отобразиться в параметре.

    0

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

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