Openssl windows openssl config

Содержание
  1. Open SSL
  2. Cryptography and SSL/TLS Toolkit
  3. config
  4. DESCRIPTION
  5. OPENSSL LIBRARY CONFIGURATION
  6. ASN1 Object Configuration Module
  7. Engine Configuration Module
  8. EVP Configuration Module
  9. SSL Configuration Module
  10. NOTES
  11. EXAMPLES
  12. ENVIRONMENT
  13. SEE ALSO
  14. COPYRIGHT
  15. 1.1.1 manpages
  16. This manpage
  17. ИТ База знаний
  18. Полезно
  19. Навигация
  20. Серверные решения
  21. Телефония
  22. Корпоративные сети
  23. Курс по сетям
  24. 15 примеров команды PING для диагностики сети
  25. Руководство по команде grep в Linux
  26. Рекурсивно найти слово в файлах и папках Linux
  27. Как проверить дисковое пространство в Linux
  28. Переменные окружения в Linux: как посмотреть, установить и сбросить
  29. Установка Gnome на CentOS 6
  30. Как пользоваться утилитой screen в Linux?
  31. Руководство по OpenSSL: SSL-сертификаты, ключи и CSR
  32. Что такое сертификат SSL? Как работает SSL?
  33. В чем разница между TLS и SSL?
  34. Как я могу узнать, защищена ли веб-страница с помощью SSL?
  35. Зачем мне нужен SSL-сертификат?
  36. Где получить сертификат SSL?
  37. Типы SSL-сертификатов
  38. Уровни проверки SSL-сертификатов
  39. Проверка домена (DV SSL — Domain Validation)
  40. Расширенная проверка (EV SSL — Extended Validation)
  41. Как создать сертификат SSL
  42. Установка OpenSSL в Debian и Ubuntu
  43. Установка OpenSSL в Red Hat и CentOS
  44. Что такое запрос на подпись сертификата (CSR)?
  45. Как создать CSR
  46. Вариант 1: создать CSR
  47. Вариант 2. Создание CSR для существующего закрытого ключа
  48. Вариант 3. Создание CSR для существующего сертификата и закрытого ключа
  49. Вариант 4: Генерация самоподписанного(self-signed) сертификата
  50. Вариант 5: Генерация самоподписанного сертификата из существующего закрытого ключа и CSR
  51. Как скопировать содержимое файла CSR
  52. Продление сертификата — не используйте старые CSR повторно
  53. Как проверить свой CSR, SSL-сертификат и ключ
  54. SSL сертификат
  55. Закрытый ключ
  56. Проверьте, совпадают ли сертификат и закрытый ключ
  57. Устранение проблем с SSL
  58. Система не извлекает закрытый ключ автоматически
  59. Как найти свой ранее установленный закрытый ключ?
  60. Как переместить SSL-сертификат с сервера Windows на сервер, отличный от Windows?
  61. Команды OpenSSL для конвертации CSR
  62. Преобразовать PEM CSR и закрытый ключ в PKCS12 (.pfx .p12)
  63. Конвертировать PKCS12 в PEM CSR
  64. Конвертировать PEM в DER
  65. Конвертировать DER в PEM
  66. Зашифровать незашифрованный закрытый ключ
  67. Расшифровать зашифрованный закрытый ключ
  68. Проверить версию OpenSSL
  69. Заключение
  70. Полезно?
  71. Почему?

Open SSL

Cryptography and SSL/TLS Toolkit

config

config — OpenSSL CONF library configuration files

DESCRIPTION

The OpenSSL CONF library can be used to read configuration files. It is used for the OpenSSL master configuration file openssl.cnf and in a few other places like SPKAC files and certificate extension files for the x509 utility. OpenSSL applications can also use the CONF library for their own purposes.

A configuration file is divided into a number of sections. Each section starts with a line [ section_name ] and ends when a new section is started or end of file is reached. A section name can consist of alphanumeric characters and underscores.

The first section of a configuration file is special and is referred to as the default section. This section is usually unnamed and spans from the start of file until the first named section. When a name is being looked up it is first looked up in a named section (if any) and then the default section.

The environment is mapped onto a section called ENV.

Comments can be included by preceding them with the # character

Other files can be included using the .include directive followed by a path. If the path points to a directory all files with names ending with .cnf or .conf are included from the directory. Recursive inclusion of directories from files in such directory is not supported. That means the files in the included directory can also contain .include directives but only inclusion of regular files is supported there. The inclusion of directories is not supported on systems without POSIX IO support.

It is strongly recommended to use absolute paths with the .include directive. Relative paths are evaluated based on the application current working directory so unless the configuration file containing the .include directive is application specific the inclusion will not work as expected.

There can be optional = character and whitespace characters between .include directive and the path which can be useful in cases the configuration file needs to be loaded by old OpenSSL versions which do not support the .include syntax. They would bail out with error if the = character is not present but with it they just ignore the include.

Each section in a configuration file consists of a number of name and value pairs of the form name=value

The name string can contain any alphanumeric characters as well as a few punctuation symbols such as . , ; and _.

The value string consists of the string following the = character until end of line with any leading and trailing white space removed.

The value string undergoes variable expansion. This can be done by including the form $var or $ : this will substitute the value of the named variable in the current section. It is also possible to substitute a value from another section using the syntax $section::name or $ . By using the form $ENV::name environment variables can be substituted. It is also possible to assign values to environment variables by using the name ENV::name, this will work if the program looks up environment variables using the CONF library instead of calling getenv() directly. The value string must not exceed 64k in length after variable expansion. Otherwise an error will occur.

It is possible to escape certain characters by using any kind of quote or the \ character. By making the last character of a line a \ a value string can be spread across multiple lines. In addition the sequences \n, \r, \b and \t are recognized.

All expansion and escape rules as described above that apply to value also apply to the path of the .include directive.

OPENSSL LIBRARY CONFIGURATION

Applications can automatically configure certain aspects of OpenSSL using the master OpenSSL configuration file, or optionally an alternative configuration file. The openssl utility includes this functionality: any sub command uses the master OpenSSL configuration file unless an option is used in the sub command to use an alternative configuration file.

To enable library configuration the default section needs to contain an appropriate line which points to the main configuration section. The default name is openssl_conf which is used by the openssl utility. Other applications may use an alternative name such as myapplication_conf. All library configuration lines appear in the default section at the start of the configuration file.

The configuration section should consist of a set of name value pairs which contain specific module configuration information. The name represents the name of the configuration module. The meaning of the value is module specific: it may, for example, represent a further configuration section containing configuration module specific information. E.g.:

The features of each configuration module are described below.

ASN1 Object Configuration Module

This module has the name oid_section. The value of this variable points to a section containing name value pairs of OIDs: the name is the OID short and long name, the value is the numerical form of the OID. Although some of the openssl utility sub commands already have their own ASN1 OBJECT section functionality not all do. By using the ASN1 OBJECT configuration module all the openssl utility sub commands can see the new objects as well as any compliant applications. For example:

It is also possible to set the value to the long name followed by a comma and the numerical OID form. For example:

Engine Configuration Module

This ENGINE configuration module has the name engines. The value of this variable points to a section containing further ENGINE configuration information.

The section pointed to by engines is a table of engine names (though see engine_id below) and further sections containing configuration information specific to each ENGINE.

Each ENGINE specific section is used to set default algorithms, load dynamic, perform initialization and send ctrls. The actual operation performed depends on the command name which is the name of the name value pair. The currently supported commands are listed below.

The command engine_id is used to give the ENGINE name. If used this command must be first. For example:

The command dynamic_path loads and adds an ENGINE from the given path. It is equivalent to sending the ctrls SO_PATH with the path argument followed by LIST_ADD with value 2 and LOAD to the dynamic ENGINE. If this is not the required behaviour then alternative ctrls can be sent directly to the dynamic ENGINE using ctrl commands.

The command init determines whether to initialize the ENGINE. If the value is 0 the ENGINE will not be initialized, if 1 and attempt it made to initialized the ENGINE immediately. If the init command is not present then an attempt will be made to initialize the ENGINE after all commands in its section have been processed.

The command default_algorithms sets the default algorithms an ENGINE will supply using the functions ENGINE_set_default_string().

If the name matches none of the above command names it is assumed to be a ctrl command which is sent to the ENGINE. The value of the command is the argument to the ctrl command. If the value is the string EMPTY then no value is sent to the command.

Читайте также:  После перезагрузки ноутбука не работает клавиатура windows 10

EVP Configuration Module

This modules has the name alg_section which points to a section containing algorithm commands.

Currently the only algorithm command supported is fips_mode whose value can only be the boolean string off. If fips_mode is set to on, an error occurs as this library version is not FIPS capable.

SSL Configuration Module

This module has the name ssl_conf which points to a section containing SSL configurations.

Each line in the SSL configuration section contains the name of the configuration and the section containing it.

Each configuration section consists of command value pairs for SSL_CONF. Each pair will be passed to a SSL_CTX or SSL structure if it calls SSL_CTX_config() or SSL_config() with the appropriate configuration name.

Note: any characters before an initial dot in the configuration section are ignored so the same command can be used multiple times.

The system default configuration with name system_default if present will be applied during any creation of the SSL_CTX structure.

Example of a configuration with the system default:

NOTES

If a configuration file attempts to expand a variable that doesn’t exist then an error is flagged and the file will not load. This can happen if an attempt is made to expand an environment variable that doesn’t exist. For example in a previous version of OpenSSL the default OpenSSL master configuration file used the value of HOME which may not be defined on non Unix systems and would cause an error.

This can be worked around by including a default section to provide a default value: then if the environment lookup fails the default value will be used instead. For this to work properly the default value must be defined earlier in the configuration file than the expansion. See the EXAMPLES section for an example of how to do this.

If the same variable exists in the same section then all but the last value will be silently ignored. In certain circumstances such as with DNs the same field may occur multiple times. This is usually worked around by ignoring any characters before an initial . e.g.

EXAMPLES

Here is a sample configuration file using some of the features mentioned above.

This next example shows how to expand environment variables safely.

Suppose you want a variable called tmpfile to refer to a temporary filename. The directory it is placed in can determined by the TEMP or TMP environment variables but they may not be set to any value at all. If you just include the environment variable names and the variable doesn’t exist then this will cause an error when an attempt is made to load the configuration file. By making use of the default section both values can be looked up with TEMP taking priority and /tmp used if neither is defined:

Simple OpenSSL library configuration example to enter FIPS mode:

Note: in the above example you will get an error in non FIPS capable versions of OpenSSL.

Simple OpenSSL library configuration to make TLS 1.2 and DTLS 1.2 the system-default minimum TLS and DTLS versions, respectively:

The minimum TLS protocol is applied to SSL_CTX objects that are TLS-based, and the minimum DTLS protocol to those are DTLS-based. The same applies also to maximum versions set with MaxProtocol.

More complex OpenSSL library configuration. Add OID and don’t enter FIPS mode:

The above examples can be used with any application supporting library configuration if «openssl_conf» is modified to match the appropriate «appname».

For example if the second sample file above is saved to «example.cnf» then the command line:

showing that the OID «newoid1» has been added as «1.2.3.4.1».

ENVIRONMENT

The path to the config file. Ignored in set-user-ID and set-group-ID programs.

The path to the engines directory. Ignored in set-user-ID and set-group-ID programs.

Currently there is no way to include characters using the octal \nnn form. Strings are all null terminated so nulls cannot form part of the value.

The escaping isn’t quite right: if you want to use sequences like \n you can’t use any quote escaping on the same line.

Files are loaded in a single pass. This means that a variable expansion will only work if the variables referenced are defined earlier in the file.

SEE ALSO

Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the «License»). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

1.1.1 manpages

This manpage

Please report problems with this website to webmaster at openssl.org.

Copyright © 1999-2018, OpenSSL Software Foundation.

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Популярное и похожее

Курс по сетям

15 примеров команды PING для диагностики сети

Руководство по команде grep в Linux

Рекурсивно найти слово в файлах и папках Linux

Как проверить дисковое пространство в Linux

Переменные окружения в Linux: как посмотреть, установить и сбросить

Установка Gnome на CentOS 6

Как пользоваться утилитой screen в Linux?

Еженедельный дайджест

Руководство по OpenSSL: SSL-сертификаты, ключи и CSR

Теория и практика

21 минута чтения

Технология Secure Socket Layer (SSL), изначально разработанная Netscape в 1994 году для поддержки возможностей электронной коммерции в Интернете, прошла долгий путь. Теперь SSL-сертификаты стали обычной необходимостью для любого веб-сайта. OpenSSL — криптографическая библиотека с открытым исходным кодом и инструментарий SSL. Приложения, содержащиеся в библиотеке, помогают создать безопасную среду связи для компьютерных сетей.

Обучайся в Merion Academy

Пройди курс по сетевым технологиям

Начать

В этом руководстве разберемся как с теорией, так и узнаем как работать с сертификатами на практике при помощи утилиты OpenSSL.

Что такое сертификат SSL? Как работает SSL?

Сертификат Secure Socket Layer (SSL) — это протокол безопасности, который защищает данные между двумя компьютерами с использованием шифрования.

Проще говоря, сертификат SSL — это файл данных, который в цифровом виде связывает криптографический ключ с сервером или доменом, а также с названием и местонахождением организации.

Как правило, сертификаты SSL используются на веб-страницах, которые передают и получают конфиденциальные данные конечного пользователя, такие как номер социального страхования, данные кредитной карты, домашний адрес или пароль. Онлайн формы оплаты являются хорошим примером и обычно шифруют вышеупомянутую деликатную информацию с использованием 128 или 256-битной технологии SSL.

Сертификаты SSL обеспечивают идентификацию удаленного компьютера, чаще всего сервера, но также подтверждают идентификацию вашего компьютера с удаленным компьютером для установления безопасного соединения. Обеспечение безопасности в Интернете всегда было улицей с двусторонним движением, и благодаря SSL-шифрованию сервер «пожимает руку» вашему персональному компьютеру, и обе стороны знают, с кем они общаются.

В чем разница между TLS и SSL?

Её нет! Transport Layer Security (TLS) — это обновленная версия Secure Socket Layer (SSL). Даже при том, что большинство безопасных соединений через протоколы TLS, люди продолжают называть это SSL.

Как я могу узнать, защищена ли веб-страница с помощью SSL?

Вы, вероятно, заметили, что в вашем браузере в адресной строке загорелся зеленый значок замка, а протокол соединения — это https. Ваш браузер сообщает вам, что веб-сайт защищен с использованием шифрования SSL. Если щелкнуть информационную панель сайта, появится дополнительная информация о подключении, а также информация о самом сертификате SSL.

Зачем мне нужен SSL-сертификат?

Давайте возьмем реальный пример. Допустим являетесь владельцем сайта интернет-магазина, м вы хотите, чтобы ваши посетители чувствовали себя в безопасности при посещении вашего интернет-магазина и, прежде всего, не стеснялись войти в систему и совершить покупку. Сертификат SSL и соединение HTTPS внушают доверие потребителей. Индустрия электронной коммерции тесно связана с доверием потребителей, и мы можем даже сказать, что ваш бизнес зависит от того, насколько ваши клиенты чувствуют себя в безопасности в течение всего процесса покупки.

Помимо очевидных причин безопасности, SSL-сертификат увеличивает SEO вашего сайта и рейтинг в Google, а также повышает доверие клиентов и, следовательно, повышает общий коэффициент конверсии. Если этого недостаточно, чтобы заставить вас задуматься о получении сертификата SSL для вашего домена, Google обязательно убедит вас. А именно, с июля 2018 года Google помечает каждый сайт без SSL как небезопасный.

Где получить сертификат SSL?

Сертификаты SSL проверяются и выдаются Центром сертификации (CA — Certificate Authorities). Вы подаете заявку, генерируя CSR (Certificate Signing Request — запрос на получение сертификата) с парой ключей на вашем сервере, которая в идеале будет содержать сертификат SSL. CSR содержит важные организационные детали, которые CA проверяет.

  1. Сгенерируйте CSR и пару ключей локально на вашем сервере. Пара ключей состоит из открытого (public key) и закрытого (private key) ключей.
  2. Отправьте CSR и открытый ключ в центр сертификации, который проверит вашу личность, а также владеете ли вы доменом, указанным в заявке. Центр сертификации проверяет вашу организацию и проверяет, зарегистрирована ли организация в расположении, указанном в CSR, и существует ли домен.
  3. После проверки организация получает копию своего сертификата SSL, включающего бизнес данные, а также открытый ключ. Теперь организация может установить сертификат на своем сервере.
  4. Когда центр сертификации выдает сертификат, он связывается с сертификатом «доверенного корня» (trusted root) центра сертификации. Корневые сертификаты встроены в каждый браузер и связаны с индивидуально выданными сертификатами для установления HTTPS-соединения.

Нередко популярные браузеры не доверяют всем сертификатам, выпущенным одним центром сертификации. Например, Google Chrome не доверяет корневым сертификатам Symantec, поскольку Symantec несколько раз нарушала отраслевые политики. Это означает, что все сертификаты, укоренившиеся в Symantec, стали недействительными независимо от даты их действия.

Типы SSL-сертификатов

Убедитесь, что вы выбрали центр сертификации, который поддерживает необходимый вам тип сертификата. Для вашего удобства ниже приведено описание каждого типа сертификата:

  • Однодоменный SSL-сертификат (Single Domain SSL Certificate) — Этот тип предназначен для использования в одном домене и не поддерживает субдомены. Например, если сертификат будет использоваться для wiki.merionet.ru, он не будет поддерживать любое другое доменное имя.
  • Несколько доменов (сертификаты SAN / UC) — Несколько сертификатов домена используются для многочисленных доменов и поддоменов. Помимо полного доменного имени, вы можете добавить поддержку других поддоменов, добавив их в поле «Альтернативное имя субъекта». Например, сертификат SAN может включать домен wiki.merionet.ru, его поддомен asterisk.merionet.ru, а также другой домен (например, shop.merionet.ru).
  • Wildcard сертификат — Сертификаты могут использоваться для домена, включая все его поддомены. Основное отличие состоит в том, что вместо выдачи для определенного полного доменного имени сертификаты с подстановочными знаками используются для широкого диапазона поддоменов. Например, сертификат подстановочного знака, выданный *.merionet.ru, может использоваться для широкого диапазона поддоменов в основном домене
Читайте также:  Linux разбить строку по пробелам

Уровни проверки SSL-сертификатов

Центры сертификации имеют различные уровни проверки сертификатов в ответ на растущий спрос на сертификаты. Некоторые организации используют SSL только для шифрования, в то время как другие хотят показать своим клиентам, что они являются доверенной компанией. Различные потребности привели к различным уровням проверки сертификата.

Проверка домена (DV SSL — Domain Validation)

Этот тип сертификата SSL идеально подходит для защиты блогов, приложений социальных сетей и личных веб-сайтов. Центр сертификации не гарантирует идентичность организации, и проверяется только владение доменом.

Расширенная проверка (EV SSL — Extended Validation)

Центр сертификации проверяет право собственности на домен и проводит тщательное расследование организации, связанной с сертификатом EV. При рассмотрении расширенного запроса проверки соблюдаются строгие правила, и центр сертификации должен проверить следующее:

  1. Информация об организации соответствует официальным данным
  2. Физическое, юридическое и эксплуатационное существование субъекта
  3. Организация имеет исключительные права на использование домена, указанного в сертификате SSL
  4. Организация надлежащим образом санкционировала выдачу сертификата EV SSL

Как создать сертификат SSL

То, как сгенерировать запрос на подпись сертификата (CSR), зависит исключительно от платформы, которую вы используете, и конкретного выбранного вами инструмента.

Мы будем генерировать CSR с использованием OpenSSL.

OpenSSL — это широко используемый инструмент для работы с CSR-файлами и SSL-сертификатами, который можно загрузить с официального сайта OpenSSL. Это инструмент реализации с открытым исходным кодом для SSL/TLS, который используется примерно на 65% всех активных интернет-серверов, что делает его неофициальным отраслевым стандартом.

Установка OpenSSL в Debian и Ubuntu

Сначала проверим, установлена ли у нас утилита OpenSSL при помощи команды:

Если пакет OpenSSL установлен, мы получим следующий результат:

Если вы не видите такого результата, выполните следующую команду для установки OpenSSL:

Установка OpenSSL в Red Hat и CentOS

Red Hat (версия 7.0 и более поздние) должна поставляться с предустановленной ограниченной версией OpenSSL. Он предлагает только ограниченную поддержку для IDEA, RC5 и MDC2, поэтому вы можете установить недостающие функции.

Чтобы проверить, установлен ли OpenSSL на сервере yum (например, Red Hat или CentOS), выполните следующую команду:

Эта команда должна вернуть следующий результат:

Если ваш формат вывода отличается, это означает, что OpenSSL не установлен на вашем сервере. Выполните следующую команду для установки OpenSSL:

Что такое запрос на подпись сертификата (CSR)?

Запрос на подпись сертификата (CSR — Certificate Signing Request) содержит наиболее важную информацию о вашей организации и домене. Это зашифрованный блок текста, который включает информацию о вашей организации, такую как страна, адрес электронной почты, полное доменное имя и так далее Он отправляется в центр сертификации при подаче заявки на сертификат SSL.

Обычно вы генерируете пару CSR и ключ локально на сервере, где будет установлен сертификат SSL. Однако это не строгое правило. Вы можете сгенерировать пару CSR и ключ на одном сервере и установить сертификат на другом. Однако это усложняет ситуацию. Мы рассмотрим и этот сценарий.

SSL использует две длинные строки случайно сгенерированных чисел, которые известны как закрытые и открытые ключи. Открытый ключ доступен для публичного домена, так как он является частью вашего SSL-сертификата и сообщается вашему серверу.

Закрытый ключ должен соответствовать CSR, с которым он был создан, и, в конечном счете, он должен соответствовать сертификату, созданному из CSR. Если закрытый ключ отсутствует, это может означать, что сертификат SSL не установлен на том же сервере, который сгенерировал запрос на подпись сертификата.

CSR обычно содержит следующую информацию:

Параметр Описание Пример
Common Name или FQDN FQDN (fully qualified domain name) — это полное доменное имя вашего сайта.
Он должен совпадать с тем, что пользователи вводят в веб-браузере
wiki.merionet.ru
Organization Name (e.g., company) Полное юридическое название вашей организации, включая суффиксы, такие как LLC, Corp и так далее Merion Networks LTD
Organizational Unit Name Отдел в вашей организации, который занимается этим сертификатом Technology Division
Locality Name Город, в котором находится ваша организация Moscow
State/Region/Province (full name) Штат или регион, в котором находится ваша организация Moscow
Country Code (2 letter code) Страна, в которой находится ваша организация. Всегда вводится в виде двухбуквенного кода ISO RU
Email Address Адрес электронной почты, используемый для связи с веб-мастером сайта info@merionet.ru
Public Key втоматически созданный ключ, который создается с помощью CSR и входит в сертификат. Закодированный текстовый блок похож на закрытый ключ.
Смотрите пример закрытого ключа ниже.

Обратите внимание, что существуют определенные соглашения об именах, которые необходимо учитывать. Название организации и название организационной единицы не должны содержать следующие символы:

Как создать CSR

Запросы на подпись сертификата (CSR) создаются с помощью пары ключей — открытого и закрытого ключа. Только открытый ключ отправляется в центр сертификации и включается в сертификат SSL, и он работает вместе с вашим личным ключом для шифрования соединения. Любой может иметь доступ к вашему открытому ключу, и он проверяет подлинность SSL-сертификата.

Закрытый ключ — это блок закодированного текста, который вместе с сертификатом проверяет безопасное соединение между двумя компьютерами. Он не должен быть общедоступным, и его не следует отправлять в ЦС.

Целостность сертификата зависит от того, что только вы знаете закрытый ключ. Если вы когда-либо скомпрометированы или утеряны, как можно скорее введите новый сертификат с новым закрытым ключом. Большинство ЦС не взимают плату за эту услугу.

Большинство пар ключей состоят из 2048 битов. Хотя пары ключей длиной 4096 бит более безопасны, они замедляют SSL-рукопожатия и создают нагрузку на серверные процессоры. Из-за этого большинство сайтов по-прежнему используют 2048-битные пары ключей.

Вариант 1: создать CSR

Первое, что нужно сделать, — это создать 2048-битную пару ключей RSA локально. Эта пара будет содержать как ваш закрытый, так и открытый ключ. Вы можете использовать инструмент Java key или другой инструмент, но мы будем работать с OpenSSL.

Чтобы создать открытый и закрытый ключ с запросом на подпись сертификата (CSR), выполните следующую команду OpenSSL:

Что эта команда означает:

  • openssl — активирует программное обеспечение OpenSSL
  • req — указывает, что мы хотим CSR
  • –out — указывает имя файла, в котором будет сохранен ваш CSR. У нас в примере это certificatesigningrequest.csr
  • –new –newkey — создать новый ключ
  • rsa:2048 — cгенерировать 2048-битный математический ключ RSA
  • –nodes — нет DES, то есть не шифровать закрытый ключ в PKCS#12 файл
  • –keyout — указывает домен, для которого вы генерируете ключ

Далее ваша система должна запустить текстовую анкету для заполнения, которую мы описывали в таблице выше:

После завершения работы программы вы сможете найти файл CSR в вашем рабочем каталоге. Запрос на подпись сертификата, сгенерированный с помощью OpenSSL, всегда будет иметь формат файла .csr . Чтобы найти в папке все файлы этого формата используйте команду

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

Также вы можете открыть файл .csr в текстовом редакторе, например nano, чтобы просмотреть сгенерированный буквенно-цифровой код.

После того, как вы сгенерировали CSR с парой ключей, сложно увидеть, какую информацию она содержит, поскольку она не будет в удобочитаемом формате. Вы можете легко декодировать CSR на своем сервере, используя следующую команду OpenSSL:

Далее можно декодировать CSR и убедиться, что он содержит правильную информацию о вашей организации, прежде чем он будет отправлен в центр сертификации. В Интернете существует множество CSR-декодеров, которые могут помочь вам сделать то же самое, просто скопировав содержимое файла CSR, например sslshopper.

Читайте также:  Svn ��� ������������ linux

Вариант 2. Создание CSR для существующего закрытого ключа

Рекомендуется выдавать новый закрытый ключ всякий раз, когда вы генерируете CSR. Если по какой-либо причине вам необходимо сгенерировать запрос на подпись сертификата для существующего закрытого ключа, используйте следующую команду OpenSSL:

Вариант 3. Создание CSR для существующего сертификата и закрытого ключа

Один маловероятный сценарий, в котором это может пригодиться, — это если вам нужно обновить существующий сертификат, но ни у вас, ни у вашего центра сертификации нет первоначального CSR. Это позволит извлечь информацию о вашем домене и организации из сертификата SSL и использовать его для создания нового CSR, что позволит вам сэкономить время. Параметр -x509toreq преобразует сертификат в запрос сертификата.

Вариант 4: Генерация самоподписанного(self-signed) сертификата

Самозаверяющий сертификат обычно используется для сред тестирования и разработки, а также в интрасети. Давайте создадим самозаверяющий сертификат, используя следующую команду OpenSSL:

Параметр –days установлен на 365 , что означает, что сертификат действителен в течение следующих 365 дней. Параметр x509 указывает, что это будет самозаверяющий сертификат. Временный CSR генерируется, и он используется только для сбора необходимой информации. Если вы не хотите защищать свой закрытый ключ паролем, вы можете добавить параметр –nodes .

Центры сертификации не проверяют самоподписанные сертификаты. Таким образом, они не так безопасны, как проверенные сертификаты. Если ЦС не подписал сертификат, каждый основной браузер отобразит сообщение об ошибке «Ненадежный сертификат», как показано на рисунке ниже.

Вариант 5: Генерация самоподписанного сертификата из существующего закрытого ключа и CSR

Если у вас уже есть CSR и закрытый ключ и вам нужно создать самозаверяющий сертификат, используйте следующую команду:

Параметр –days установлен на 365 , что означает, что сертификат действителен в течение следующих 365 дней.

Как скопировать содержимое файла CSR

Откройте каталог, в котором находится ваш CSR-файл. Введите следующую команду:

Замените domain параметром FQDN вашего CSR. Эта команда отобразит содержимое файла CSR. Скопируйте весь контент, начиная с BEGIN CERTIFICATE REQUEST и заканчивая END CERTIFICATE REQUEST .

Продление сертификата — не используйте старые CSR повторно

То, что некоторые веб-серверы позволяют использовать старые CSR для обновления сертификатов, не означает, что вы должны их использовать. В качестве меры безопасности всегда генерируйте новый CSR и закрытый ключ при обновлении сертификата. Привязка к одному и тому же секретному ключу — это дорога, вымощенная уязвимостями безопасности.

Также рекомендуется обновить SSL-сертификат до истечения срока его действия. В противном случае потребуется покупать новый сертификат.

Как проверить свой CSR, SSL-сертификат и ключ

Как мы уже упоминали, было бы разумно проверить информацию, представленную в CSR, прежде чем подавать заявку на сертификат. Используйте следующие команды для проверки вашего запроса на подпись сертификата, SSL-сертификата и ключа:

Эта команда проверит CSR и отобразит данные, указанные в запросе:

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

SSL сертификат

Когда вам нужно проверить сертификат, дату его истечения и кто его подписал, используйте следующую команду OpenSSL:

Закрытый ключ

Закрытый ключ кодируется и создается в формате PEM на основе Base-64, который не читается человеком. Вы можете открыть его в любом текстовом редакторе, но все, что вы увидите, это несколько десятков строк, которые кажутся случайными символами, заключенными в открывающие и закрывающие заголовки. Ниже приведен пример закрытого ключа:

В большинстве случаев вам не нужно импортировать код закрытого ключа в файловую систему сервера, так как он будет создан в фоновом режиме, пока вы создаете CSR, а затем автоматически сохраняется на сервере. Во время установки SSL-сертификата система извлекает ключ.

Проверьте, совпадают ли сертификат и закрытый ключ

Для проверки вам нужно вывести контрольные суммы md5 и сравнить их. Выполните следующую команду:

Устранение проблем с SSL

Система не извлекает закрытый ключ автоматически

Некоторые системы не автоматизируют процедуру извлечения закрытого ключа. Кроме того, если вам нужно установить существующий сертификат на другом сервере, вы, очевидно, не можете ожидать, что он получит закрытый ключ. Основная сложность здесь заключается в том, как найти точное местоположение ключа. Способ получения ключа зависит от используемой ОС сервера и от того, использовался ли интерфейс командной строки или панель управления веб-хостинга определенного типа для генерации CSR.

Как найти свой ранее установленный закрытый ключ?

Если дело в том, что ваш сертификат уже установлен, выполните следующие действия, которые помогут вам найти свой закрытый ключ в популярных операционных системах.

Nginx

Вы сможете найти местоположение личного ключа вашего сервера в файле виртуального хоста вашего домена.

Перейдите к местоположению корневого сервера сайта (обычно это каталог /var/www/ ) и откройте основной файл конфигурации сайта. Найдите директиву ssl_certificate_key , которая предоставит путь к файлу закрытого ключа.

Если вы не можете найти директиву ssl_certificate_key , возможно, существует отдельный файл конфигурации для деталей SSL. Ищите что-нибудь вроде ssl.conf .

Apache

При использовании библиотеки OpenSSL в Apache закрытый ключ по умолчанию сохраняется в /usr/local/ssl . Запустите openssl version –a , команду OpenSSL, которая определяет, какую версию OpenSSL вы используете.

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

Последняя строка OPENSSLDIR определяет путь к файлу. В приведенном примере это местоположение по умолчанию /usr/lib/ssl .

Если вы не создавали CSR с OpenSSL, вам нужно найти и получить доступ к вашему основному файлу конфигурации Apache, который является apache2.conf или httpd.conf . Директива SSLCertficateKeyFile будет указывать путь к файлу закрытого ключа.

Windows (IIS)

На серверах, работающих под управлением Windows Internet Information Services, операционная система сохраняет закрытый ключ в скрытой папке, так же как любая обычная ОС Windows хранит важные системные данные.

Однако, экспортируя файл .pfx , вы можете получить закрытый ключ и сертификаты. Для этого выполните следующие действия:

  1. Откройте консоль управления MMC (Microsoft Management Console).
  2. Разверните дерево Сертификаты (локальный компьютер), расположенное в корне консоли.
  3. Ваш сертификат находится либо в личной папке, либо в папке веб-хостинга. Вы можете идентифицировать каждый сертификат по его Common name (домену)
  4. Щелкните правой кнопкой мыши сертификат, который вы хотите экспортировать, и выберите Все задачи -> Экспорт.
  5. Следуйте инструкциям мастера для экспорта файла .pfx .

Теперь у вас есть то, что вам нужно, если вы хотите сохранить резервную копию или установить сертификат на другом сервере Windows.

Если вам нужно установить сертификат на другом сервере, который не работает под управлением Windows (например, Apache), вам необходимо сконвертировать файл .pfx и разделить файлы .key и .crt или .cer . Вы можете сделать это с OpenSSL.

Как переместить SSL-сертификат с сервера Windows на сервер, отличный от Windows?

Чтобы переместить сертификат с сервера Windows на сервер, отличный от Windows, необходимо извлечь закрытый ключ из файла .pfx с помощью OpenSSL.

  1. После скачивания файла .pfx , как описано в разделе выше, выполните следующую команду OpenSSL, чтобы извлечь закрытый ключ из файла: Где mypfxfile.pfx — это резервная копия сертификатов вашего сервера Windows.
  2. Эта команда создаст выходной файл privatekey.txt . Используйте текстовый редактор, чтобы открыть файл, и вы увидите закрытый ключ в верхней части списка в стандартном формате:
  3. Скопируйте закрытый ключ, включая теги BEGIN и END , и вставьте его в новый текстовый файл. Сохраните текстовый файл как Your_Domain_Name.key .

Команды OpenSSL для конвертации CSR

Если вы работаете с серверами Apache, запросы на подпись сертификатов (CSR) и ключи хранятся в формате PEM . Но что, если вы хотите перенести CSR на сервер Tomcat или Windows IIS ? Вам придется конвертировать стандартный файл PEM в файл PFX . Следующие команды помогут вам сделать это.

Примечание: Используйте параметр -nodes , если вы не хотите шифровать файл .key . Если вы не используете этот параметр, вам нужно будет указать пароль.

Преобразовать PEM CSR и закрытый ключ в PKCS12 (.pfx .p12)

Файлы FKCS12 используются для экспорта или импорта сертификатов в Windows IIS.

Эта команда возьмет закрытый ключ и CSR и преобразует его в один файл .pfx . Вы можете настроить экспортную фразу-пароль, но также можете оставить это поле пустым. Обратите внимание, что, объединив строки символов сертификата в конец одного файла PEM , вы можете экспортировать цепочку сертификатов в формат файла .pfx .

Конвертировать PKCS12 в PEM CSR

Если файл .pfx содержит цепочку сертификатов, файл .crt PEM также будет содержать несколько элементов.

Конвертировать PEM в DER

DER — это двоичный формат, обычно используемый с Java. Чтобы преобразовать файл ASCII PEM в DER , используйте следующую команду OpenSSL:

Конвертировать DER в PEM

Если вам нужно преобразовать файл .der в PEM , используйте следующую команду OpenSSL:

Зашифровать незашифрованный закрытый ключ

Следующая команда OpenSSL возьмет незашифрованный закрытый ключ и зашифрует его с помощью определенной вами парольной фразы.

Определите ключевую фразу для шифрования закрытого ключа.

Расшифровать зашифрованный закрытый ключ

Следующая команда OpenSSL возьмет зашифрованный закрытый ключ и расшифрует его.

При появлении запроса введите кодовую фразу для расшифровки закрытого ключа.

Проверить версию OpenSSL

Эта команда отображает версию OpenSSL, и ее параметры, с которыми она была скомпилирована:

Получим примерно такой вывод:

Заключение

Теперь вы знаете, как сгенерировать запрос на подпись сертификата с помощью OpenSSL, а также устранить наиболее распространенные ошибки.

Обучайся в Merion Academy

Пройди курс по сетевым технологиям

Начать

Полезно?

Почему?

😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Оцените статью