Сертификаты SSL используются для облегчения аутентификации и шифрования в Интернете.
Обычно эти сертификаты выдаются доверенными сторонними центрами сертификации, такими как Let’s Encrypt.
Самоподписанный сертификат – это сертификат, который формируется без подтверждения стороннего центра сертификации.
TLS/SSL – это комбинация открытого сертификата и закрытого ключа.
Закрытый ключ надежно хранится на сервере или на балансировщике нагрузки, тогда как сертификат общедоступен.
В этом руководстве мы объясним, как создать самоподписанный сертификат SSL с помощью инструмента OpenSSL.
- Предпосылки
- Установка OpenSSL
- На Ubuntu и Debian:
- На Red Hat дистрибутивах:
- Синтаксис команды openssl:
- Создадим самоподписанный сертификат SSL с помощью OpenSSL
- Создадим самоподписанный сертификат, используя существующий закрытый ключ и CSR
- Как создать закрытый ключ OpenSSL
- Как создать запрос на подпись сертификата
- Подпишем сертификат самостоятельно
- Проверим сертификат
- Заключение
Предпосылки
Машина Linux и пользователь с привилегиями sudo.
Установка OpenSSL
OpenSSL доступен по умолчанию во всех основных дистрибутивах Linux.
Выполните приведенную ниже команду, чтобы убедиться, что OpenSSL уже установлен на вашем компьютере с Linux.
$ openssl version
Создадим самоподписанный сертификат SSL с помощью OpenSSL
Убедившись, что инструмент OpenSSL установлен на вашем компьютере с Linux, вы можете приступить к созданию сертификата.
Информация CSR требуется для создания закрытого ключа.
Поскольку мы генерируем самоподписанный сертификат, на самом деле не требуется выводить файл CSR, поскольку он требуется только в том случае, если вы отправляете информацию CSR в сторонний удостоверяющий центр.
Чтобы создать самоподписанный сертификат SSL, введите:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout my_key.key -out my_cert.crt
Эта команда создаст самоподписанный сертификат, который будет действителен в течение 365 дней.
Сертификат и файл ключа будут созданы в текущем каталоге, если явно не указан другой каталог.
Вот что обозначает каждый флаг:
- req – сделать запрос на подпись сертификата
- -newkey rsa: 4096 – Создает ключ RSA длиной 4096 бит. Если не указано иное, по умолчанию будет создан ключ длиной 2048 бит.
- -keyout – имя файла закрытого ключа, в котором будет храниться ключ
- -out – указывает имя файла для хранения нового сертификата
- -nodes – пропустить шаг по созданию сертификата с парольной фразой.
- -x509 – Создать сертификат формата X.509.
- -days – количество дней, в течение которых сертификат действителен
Поля CSR:
- C = – Название страны. (двухбуквенный код).
- ST = – Название штата или провинции.
- L = – Название населенного пункта.
- O = – полное название вашей организации.
- OU = – Название организационной единицы.
- CN = – полное доменное имя.
Создадим самоподписанный сертификат, используя существующий закрытый ключ и CSR
В некоторых ситуациях, когда у вас есть закрытый ключ и csr, будет достаточно следующих шагов.
Как создать закрытый ключ OpenSSL
Сначала выполните команду, показанную ниже, чтобы создать и сохранить свой закрытый ключ.
Этот закрытый ключ необходим для подписи вашего SSL-сертификата.
Вы можете изменить my_key в приведенной ниже команде на свое собственное значение.
$ sudo openssl genrsa -out my_key.key
Вот что означают флаги команды:
- genrsa Создать закрытый ключ RSA
- -out Выходной файл
Если вы не указали другое местоположение, ваш закрытый ключ будет храниться в текущем рабочем каталоге.
Как создать запрос на подпись сертификата
Следующим шагом является создание запроса на подпись сертификата (CSR).
CSR – это то, что вы обычно отправляете в УЦ.
Но в этом случае вы собираетесь подписать его самостоятельно.
При создании CSR вас попросят предоставить некоторую информацию.
Некоторые поля можно оставить пустыми, нажав клавишу ETCD_CLIENT_CERT_AUTH
Теперь запустите команду, показанную ниже, чтобы начать создание CSR.
$ sudo openssl req -new -key my_key.key -out my_csr.csr
Вот что обозначает каждый флаг команды
- req Сделать запрос на подпись сертификата
- -new Новый запрос
- -key Путь, где хранится ваш файл закрытого ключа
- -out Выходной файл
Подпишем сертификат самостоятельно
Когда вы запустите команду, показанную ниже, будет создан самоподписанынй сертификат, который будет действителен в течение 365 дней.
$ openssl x509 -req -days 365 -in my_csr.csr -signkey my_key.key -out my_cert.crt
Проверим сертификат
Вы можете проверить детали сертификата в текстовом формате с помощью команды:
openssl x509 -text -noout -in my_cert.crt
Заключение
В этом руководстве мы описали, как создать самоподписанный сертификат SSL с помощью инструмента openssl.
Учитывая, что основные браузеры не доверяют самоподписанным сертификатам, рекомендуется использовать его только для внутренних целей или в целях тестирования.
Мне помогло
openssl genrsa -out CA.key 4096
openssl req -x509 -new -key CA.key -days 365 -out CA.crt
openssl genrsa -out web-server.key 4096
openssl req -new -key web-server.key -out web-server.csr
openssl x509 -req -in web-server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out web-server.crt -days 365