Создание закрытого ключа для сертификата

Создание закрытого ключа для сертификата

Сохранность приватного ключа SSL

Организации, выдающие SSL сертификаты безопасности, не имеют доступа к вашему закрытому (или приватному) ключу шифрования – и не должны иметь – поскольку закрытые ключи создаются на уровне пользователя, то есть на вашем сервере или компьютере. Даже если Вы генерируете CSR запрос и приватный ключ на нашем сайте, Вы должны сохранить его у себя, так как на нашем сервере информация о ключе не сохраняется. Два главных фактора, от которых зависит криптографическая безопасность закрытого ключа, – это количество и случайная последовательность простых чисел, используемых при его создании. По сути, закрытый ключ — это файл с набором чисел, сгенерированных случайным образом. Конфиденциальность этой информации является гарантией безопасности вашего ключа на протяжении всего периода использования SSL-сертификата. Чтобы обеспечить сохранность вашего закрытого ключа, доступ к нему следует разрешать только тем членам вашей организации, кому он действительно необходим, например, системному администратору, который занимается установкой SSL сертификата. Кроме того, рекомендуется изменять закрытый ключ (и перевыпускать соответствующий SSL сертификат) всякий раз, когда сотрудник, располагавший доступом к нему, покидает вашу организацию.

Как найти приватный ключ SSL?

Ваш приватный ключ создается, как правило, в тот момент, когда Вы генерируете CSR запрос, или же непосредственно перед этим. Если для управления вашими приватными ключами вы используете OpenSSL (например, вы пользуетесь дистрибутивами Linux на основе Debian или Red Hat), то при выполнении команды OpenSSL req приватный ключ обычно сохраняется в том же каталоге, где была инициирована команда. Если вы используете веб-сервер Microsoft IIS, то ваш закрытый ключ SSL хранится в скрытой папке на сервере-отправителе запроса на выпуск SSL сертификата (который еще называется Certificate Signing Request или сокращенно CSR-запрос). При правильной установке, сертификат сервера будет совпадать с приватным ключом. Если приватный ключ отсутствует, это может означать:

  • Сертификат не был установлен на сервере, использовавшемся для генерации CSR-запроса (актуально для серверов Microsoft IIS и некоторых других).
  • Ожидающий обработку CSR запрос был сброшен веб-сервером IIS.
  • Сертификат был установлен с помощью мастера импорта сертификатов, а не средствами IIS.

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

Как создать закрытый ключ?

Если вы не смогли найти ваш закрытый ключ SSL или еще не создали его, вам нужно будет это сделать, если вы хотите получить SSL сертификат. Как правило закрытый ключ нужно создавать на сервере, на котором вы планируете установить сертификат. При этом его нужно создать перед тем, как генерировать CSR-запрос или же вместе с ним, если ваше устройство это позволяет. Некоторые программы автоматизируют эти задачи, что значительно ускоряет весь процесс. Чтобы выпустить SSL сертификат, сертификационный центр «подписывает» ваш CSR-запрос, именно поэтому при оформлении сертификата, с Вами будут говорить именно о генерации CSR запроса на получение SSL сертификата, а не о создании приватного ключа. Здесть вам важно понимать, что создание CSR запроса подразумевает и создание приватного ключа. Определенному CSR запросу соответствует только один приватный ключ. Поэтому, если вы утеряли закрытый ключ (не сохранили его или случайно удалили), необходимо инициировать перевыпуск SSL сертификата с новым приватным ключом. Для этого, соответственно, необходимо создать новый CSR запрос. Поставщики SSL-сертификатов, должны предоставлять информацию о генерации приватного ключа и CSR-запроса. Инструкции, по созданию CSR-запроса и приватного ключа вы можете найти на нашем сайте. Вы также можете использовать сервис для создания приватного ключа и CSR-запроса на нашем сайте. Для этого необходимо заполнить соответствующие поля в формуляре на латинице по примеру, как показано на изображении: В поле страна важно указать сокращенное название страны прописными буквами. Далее следует заполнить город и область, в которых вы проживаете или в которых зарегистрирована ваша организация, если сертификат заказываете как юридическое лицо. Если вы заказываете OV SSL сертификат с проверкой компании или еще более надежный EV SSL сертификат с расширенной проверкой, важно, чтобы заполненные данные совпадали с информацией в регистрационных документах вашей фирмы. Если заказываете простой сертификат, это не настолько важно, главное — не оставлять пустых полей. Также при заполнении формы лучше не использовать специальных символов, так как не все центры сертификации принимают содержащие их CSR запросы. В поле "Доменное имя" введите домен, для которого вы оформляете SSL сертификат. Если вы заказали Wildcard SSL сертификат с поддержкой поддоменов, в этом поле следует указать домен со звездочкой вначале, например, *.emaro-ssl.ru. После заполнения всех полей создается CSR запрос и ваш приватный ключ, которые выглядят следующим образом: Очень важно на данном этапе сохранить ваш закрытый ключ, так как в целях обеспечения конфиденциальности он не сохраняется на нашем сервере и восстановить его не будет возможности. Если вы не сохраните закрытый ключ SSL, нужно будет создавать новый CSR запрос и перевыпускать SSL сертификат, что мы делаем для наших клиентов бесплатно.

Читайте также:  Как поставить точки на карте по координатам

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

1. Экспорт из хранилища Личные.

Для этого необходимо проделать следующие действия:

  • Выбрать меню Пуск (Настройки) / Панель управления / Свойства обозревателя (либо Свойства браузера)​. Перейти на вкладку Содержание и нажать на кнопку Сертификаты (см. рис. 1). Рис. 1. Окно «Свойства обозревателя»/вкладка «Содержание».
  • Найти в списке нужный сертификат и нажать на кнопку Экспорт (см. рис. 2).

Если в списке отсутствует нужный сертификат, необходимо перейти к пункту 2.

Рис. 3. Параметры экспорта закрытого ключа.

  • В окне Мастер экспорта сертификатов нажать на кнопку Далее. Затем отметить пункт Нет, не экспортировать закрытый ключ и выбрать Далее (см. рис. 3).
  • В окне Формат экспортируемого файла выбрать Файлы X.509 (.CER) в кодировке DER и нажать на кнопку Далее (см. рис. 4). Рис. 4. Формат экспортируемого файла.
  • В следующем окне необходимо кликнуть по кнопке Обзор, указать имя и каталог для сохранения файла. Затем нажать на кнопку Сохранить (см. рис. 5). Рис. 5. Сохранение файла.
  • В следующем окне нажать на кнопку Далее, затем Готово. Дождаться сообщения об успешном экспорте.

2. Экспорт файла открытого ключа с помощью Крипто Про.

Для этого необходимо проделать следующие действия:

Рис. 6. Окно «Свойства КриптоПро CSP».

  • Выбрать меню Пуск / Панель управления / Крипто Про CSP. Перейти на вкладку Сервис и нажать на кнопку Просмотреть сертификаты в контейнере (см. рис. 6).
  • В открывшемся окне нажать на кнопку Обзор, чтобы выбрать контейнер для просмотра. После выбора контейнера нажать на кнопку Ок (см. рис. 7). Рис. 7. Окно выбора контейнера для просмотра.
  • В следующем окне кликнуть по кнопке Далее.

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

  • В окне Сертификат для просмотра необходимо нажать кнопку Свойства (см. рис. 8). Рис. 8. Окно просмотра сертификата

Рис. 9. Вкладка «Состав».

  • В открывшемся файле сертификата следует перейти на вкладку Состав и нажать кнопку Копировать в файл (см. рис. 9).
  • В открывшемся окне Мастер экспорта сертификатов нажать на кнопку Далее. Затем отметить пункт Нет, не экспортировать закрытый ключ и выбрать Далее (см. рис. 10). Рис. 10. Параметры экспорта закрытого ключа.
  • В окне Формат экспортируемого файла выбрать Файлы X.509 (.CER) в кодировке DER и нажать на кнопку Далее (см. рис. 11). Рис. 11. Формат экспортируемого файла.
  • В следующем окне необходимо кликнуть по кнопке Обзор, указать имя и каталог для сохранения файла. Затем нажать на кнопку Сохранить (см. рис. 12). Рис. 12. Сохранение файла.
  • В следующем окне нажать на кнопку Далее, затем Готово. Дождаться сообщения об успешном экспорте. Закрыть все окна программы Крипто Про.
Читайте также:  Настройка планшета самсунг галакси таб 2

В наши дни очень часто для повышения безопасности сетевых соединений или просто для аутентификации используются ssl сертификаты. Одна из самых популярных свободных программ для создания сертификатов — это OpenSSL. Это утилита командной строки, которая позволяет создавать различные виды сертификатов, например, PKI или HTTPS.

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

Что такое сертификаты?

Думаю нужно начать с самого начала. Сертификаты в первую очередь позволяют идентифицировать человека, подтвердить что вы тот, за кого себя выдаете. А работает это так — есть два ключа — закрытый и открытый. Зашифровать сообщение можно с помощью открытого ключа, но чтобы его расшифровать нужен только закрытый ключ. Если у вас нет закрытого ключа, то вы попросту не сможете расшифровать зашифрованное сообщение. Фактически зашифровать сообщение может каждый, но расшифровать его способен только владелец закрытого (секретного ключа).

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

В этой инструкции мы будем иметь дело с такими видами ключей:

  • .pem, .crt, .cer — готовый, подписанный центром сертификации сертификат, расширения разные, но означают одно и то же. Если совсем просто, то сертификат, это подписанный открытый ключ, плюс немного информации о вашей компании;
  • .key — закрытый или открытый ключ;
  • .csr — запрос на подпись сертификата, в этом файле хранится ваш открытый ключ плюс информация, о компании и домене, которую вы указали.

А теперь рассмотрим как создать сертификат openssl, как его подписать и что для этого нужно сделать. Генерация ключей openssl — это довольно простая задача, если во всем разобраться.

Создание закрытого ключа и запроса на подпись

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

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

openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

Опция -newkey указывает, что нужно создать новую пару ключей, а в параметрах мы сообщаем тип rsa и сложность 2048 байт. Опция -nodes указывает, что шифровать ключ не нужно, опция -new указывает что нужно создать запрос csr. Если у вас уже есть закрытый ключ, то вы можете создать для него csr запрос такой командой:

openssl req -key domain.key -new -out domain.csr

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

openssl genrsa -des3 -out domain.key 2048

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

openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr

Параметр -x509toreq указывает, что нужно использовать сертификат для X509 для получения CSR. X509, это сертификаты, подписанные сами собой. Обычно сертификат подписывается другим сертификатом, а этот был подписан сам собой. Если вы получили сертификат от CA, то этот параметр не нужен.

Читайте также:  Отзывы о минивэнах 7 мест

Подпись сертификатов OpenSSL

Допустим, у вас есть приватный ключ и запрос на подпись, фактически, открытый ключ. Теперь вам нужно его подписать чтобы получить сертификат, который можно использовать. Тут есть несколько вариантов. Можно отправить csr файл на подпись какому-либо центру сертификации, например, LetsEncrypt. Можно подписать сертификат тем же ключом, с помощью которого он был создан, и третий вариант — создать свой центр сертификации.

Первый способ я рассматривать не буду. Здесь все просто. Либо используете утилиту сервиса, либо заполняете веб форму и получаете готовый сертификат. Второй вариант гораздо интереснее. Мы подпишем наш сертификат сами, ключом, на основе которого он был создан:

openssl x509 -signkey domain.key -in domain.csr -req -days 365 -out domain.crt

С помощью параметра -days мы указываем что сертификат будет действительным в течение 365 дней, то есть в течение года. Вы можете объединить все в одну команду и сразу создать закрытый ключ, csr и подписанный сертификат:

openssl req -newkey rsa:2048 -nodes -keyout domain.key
-x509 -days 365 -out domain.crt

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

openssl req -key domain.key -new -x509 -days 365 -out domain.crt

Опция -new говорит, что нужно запросить информацию о csr у пользователя. Чтобы браузер доверял ключу нужно этот же сертификат импортировать в список доверенных. А теперь рассмотрим третий способ выполнить создание сертификата OpenSSL — подписать его с помощью собственного CA, центра сертификации.

Вот вы сейчас думаете что это что-то такое сложное, да? А нет, это обычная папка, в которой лежит защищенный паролем закрытый ключ, с помощью которого мы будем подписывать все другие ключи. А открытая пара этого ключа должна быть добавлена во все браузеры, которые будут ему доверять.

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

Дальше нужно создать самоподписанный сертификат openssl для нашего CA:

openssl req -newkey rsa:4096 -x509 -extensions x509_ca -keyout /etc/ca/certs/ca.key -out /etc/ca/certs/ca.crt -days 3654

Параметр -extensions загружает необходимые расширения для создания сертификата центра сертификации. Мы устанавливаем долгий строк действия — десять лет. Осталось подписать наш сертификат, созданный ранее:

openssl ca -extensions x509_client -in

Готово, теперь наш сертификат подписан. Но теперь, чтобы браузеры ему доверяли нужно добавить сертификат CA в список доверенных браузера.

Просмотр сертификатов

Сертификаты сохраняются в формате pem, а это значит, что вы не сможете их открыть как текстовый файл и нужно использовать специальные команды для просмотра информации о них. Сначала смотрим содержимое csr:

openssl req -text -noout -verify -in domain.csr

Смотрим содержимое сертификата в режиме обычного текста:

openssl x509 -text -noout -in domain.crt

Проверяем действительно ли сертификат подписан нужным CA:

openssl verify -verbose -CAfile ca.crt domain.crt

Просмотр закрытого ключа:

openssl rsa -check -in domain.key

Чтобы проверить связаны ли между собой закрытый ключ, сертификат и открытый ключ можно подсчитать сумы md5 для этих ключей, если значения совпадут, то есть вероятность что это ключи из одной пары:

openssl rsa -noout -modulus -in domain.key | openssl md5
$ openssl x509 -noout -modulus -in domain.crt | openssl md5
$ openssl req -noout -modulus -in domain.csr | openssl md5

Выводы

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

Ссылка на основную публикацию
Adblock detector