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

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

Почему OpenSSL?

Я решил использовать OpenSSL, потому что он доступен на всех платформах (Linux, macOS, Windows), что означает, что этот учебник можно использовать на любых платформах.

О шагах

Хотя в этом процессе много шагов, пожалуйста, не беспокойтесь. Моя цель — сделать это как можно более простым для вас, и поэтому я разбил каждое действие на один шаг. Таким образом, все должно быть ясно, и я надеюсь, что вы не будете терять время или расстраиваться по пути. Есть одно требование, прежде чем начать все это, вам нужно иметь OpenSSL . Хорошо готов? Давайте начнем!

Шаг 1 — Центр сертификации

Шаг 1.1 — Генерация закрытого ключа центра сертификации (ЦС)

Каждый сертификат должен иметь соответствующий закрытый ключ. Создайте это с помощью следующей командной строки:

Это создаст 256-битный закрытый ключ по эллиптической кривой, которая является отраслевым стандартом. Мы знаем, что Curve25519 считается более безопасным, чем эта кривая NIST P-256, но она стандартизирована только в TLS 1.3, которая пока не получила широкого распространения.

Шаг 1.2 — Генерация сертификата центра сертификации

CA генерирует и выдает сертификаты.

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

Вам будет предложено предоставить некоторую информацию о ЦС. Вот как выглядит запрос:

Ниже приведен пример использования информации, относящейся к okolokompa (замените ее собственной конкретной информацией):

Ваш ЦС будет создан после ввода вашей информации.

Шаг 2: Сертификат сервера

Этот шаг может быть повторен для каждого сервера, который вам нужен.

Шаг 2.1 — Генерация закрытого ключа сертификата сервера

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

Это создаст имя файла server.key.

Шаг 2.2 — Генерация запроса на подпись сертификата сервера

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

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

Вам будет предложено предоставить некоторую информацию о сертификате сервера. Вы можете ввести ту же информацию, которую вы использовали для сертификата CA. Например:

Кроме того, вам будет предложено создать пароль. Убедитесь, что вы используете длинный, надежный и уникальный пароль. Вот пример (не используйте этот!):

Шаг 2.3 — Генерация сертификата сервера

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

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

Шаг 3: Сертификат клиента

Этот шаг может быть повторен для каждого клиента, который вам нужен.

Шаг 3.1 — Генерация закрытого ключа сертификата клиента

Используйте следующую командную строку для создания закрытого ключа сертификата клиента:

Это создаст файл с именем «client1.key».

Шаг 3.2 — Создание запроса на подпись сертификата клиента  

Вам необходимо создать запрос на подпись для создания сертификата с CA. Используйте следующую командную строку:

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

Далее вам будет предложено предоставить информацию о клиентском сертификате. Вы можете ввести ту же информацию, что и сертификат CA, за исключением двух последних записей: Common Name и Email Address. Это должны быть имя и адрес электронной почты человека, а не вашей компании. Например:

Вам также будет предложено установить пароль в запросе на подпись сертификата. Еще раз убедитесь, что вы выбрали надежный и безопасный пароль. Вот пример (не используйте этот!):

Шаг 3.3 — Генерация клиентского сертификата

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

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

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

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

Войти с помощью: