В этой статье объясняется, как создать самоподписанный сертификат SSL с помощью инструмента openssl
.
Содержание
Что такое самоподписанный сертификат SSL?
Самозаверяющий сертификат SSL — это сертификат, подписанный лицом, создавшим его, а не доверенным центром сертификации. Самозаверяющие сертификаты могут иметь тот же уровень шифрования, что и доверенный сертификат SSL, подписанный ЦС.
Веб-браузеры не распознают самозаверяющие сертификаты как действительные. При использовании самозаверяющего сертификата веб-браузер показывает посетителю предупреждение о том, что сертификат веб-сайта не может быть проверен.
Обычно самозаверяющие сертификаты используются для целей тестирования или внутреннего использования. Вы не должны использовать самозаверяющий сертификат в производственных системах, подключенных к Интернету.
Подготовка
Набор инструментов OpenSSL необходим для создания самозаверяющего сертификата.
Чтобы проверить, установлен ли пакет openssl
в вашей системе Linux, откройте терминал, введите openssl version
и нажмите Enter. Если пакет установлен, система распечатает версию OpenSSL, иначе вы увидите что-то вроде openssl command not found
.
Если пакет openssl не установлен в вашей системе, вы можете установить его с помощью диспетчера пакетов вашего дистрибутива:
-
Ubuntu и Debian
sudo apt install openssl
-
Centos и Fedora
sudo yum install openssl
Создание самоподписанного сертификата SSL
Чтобы создать новый самоподписанный сертификат SSL, используйте команду openssl req
:
openssl req -newkey rsa:4096
-x509
-sha256
-days 3650
-nodes
-out example.crt
-keyout example.key
Давайте разберем команду и поймем, что означает каждая опция:
-newkey rsa:4096
— Создает новый запрос сертификата и 4096-битный ключ RSA. По умолчанию — 2048 бит.-
-x509
— Создает сертификат X.509. -
-sha256
— использовать 265-битный SHA (алгоритм безопасного хеширования). -
-days 3650
— количество дней, в течение которых сертификат должен быть сертифицирован. 3650 — это десять лет. Вы можете использовать любое положительное целое число. -
-nodes
— создает ключ без ключевой фразы. -
-out example.crt
— указывает имя файла, в которое будет записан вновь созданный сертификат. Вы можете указать любое имя файла. -
-keyout example.key
— указывает имя файла, в которое будет-keyout example.key
только что созданный закрытый ключ. Вы можете указать любое имя файла.
Для получения дополнительной информации о параметрах команды openssl req
посетите страницу документации OpenSSL req.
Как только вы нажмете Enter, команда сгенерирует закрытый ключ и задаст вам ряд вопросов. Предоставленная вами информация используется для создания сертификата.
Generating a RSA private key
......................................................................++++
........++++
writing new private key to 'example.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Введите запрошенную информацию и нажмите Enter
.
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Alabama
Locality Name (eg, city) []:Montgomery
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linuxize
Organizational Unit Name (eg, section) []:Marketing
Common Name (e.g. server FQDN or YOUR name) []:linuxize.com
Email Address []:[email protected]
Сертификат и закрытый ключ будут созданы в указанном месте. Используйте команду ls, чтобы убедиться, что файлы были созданы:
ls
example.crt example.key
Это оно! Вы создали новый самоподписанный сертификат SSL.
Всегда рекомендуется создавать резервную копию нового сертификата и ключа на внешнем хранилище.
Создание самозаверяющего SSL-сертификата без запроса
Если вы хотите сгенерировать самозаверяющий сертификат SSL без запроса на какой-либо вопрос, используйте параметр -subj
и укажите всю информацию о теме:
openssl req -newkey rsa:4096
-x509
-sha256
-days 3650
-nodes
-out example.crt
-keyout example.key
-subj "/C=SI/ST=Ljubljana/L=Ljubljana/O=Security/OU=IT Department/CN=www.example.com"
Generating a RSA private key
......................................................................++++
........++++
writing new private key to 'example.key'
-----
Поля, указанные в строке -subj
, перечислены ниже:
C=
— Название страны. Двухбуквенное сокращение ISO.-
ST=
— Название штата или провинции. -
L=
— Название населенного пункта. Название города, в котором вы находитесь. -
O=
— полное название вашей организации. -
OU=
— Организационная единица. -
CN=
— полное доменное имя.
Выводы
В этом руководстве мы показали вам, как сгенерировать самоподписанный сертификат SSL с помощью инструмента openssl. Теперь, когда у вас есть сертификат, вы можете настроить приложение для его использования.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
во всех вариантах запуска openssl происходит запрос пароля, и после повторного ввода оного выплескивается простыня:
Generating a RSA private key
……………++++
…………………………………………………………………………………………++++
writing new private key to ‘privkey.pem’
Enter PEM pass phrase:
Verifying — Enter PEM pass phrase:
Verify failure
139794422411328:error:2807106B:UI routines:UI_process:processing error:../crypto/ui/ui_lib.c:493:while reading strings
139794422411328:error:0906406D:PEM routines:PEM_def_callback:problems getting password:../crypto/pem/pem_lib.c:66:
139794422411328:error:0907E06F:PEM routines:do_pk8pkey:read key:../crypto/pem/pem_pk8.c:83:
Пробовал все варианты запуска, приведенные в статье