img

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

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

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

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

Руководство по OpenSSL

Про Linux за 5 минут


Что такое сертификат 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-сертификат?

Давайте возьмем реальный пример. Допустим являетесь владельцем сайта интернет-магазина, м вы хотите, чтобы ваши посетители чувствовали себя в безопасности при посещении вашего интернет-магазина и, прежде всего, не стеснялись войти в систему и совершить покупку. Сертификат 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, может использоваться для широкого диапазона поддоменов в основном домене

Уровни проверки 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 при помощи команды:

dpkg -l |grep openssl

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

ii libgnutls-openssl27:amd64   2.12.23-12ubuntu2.4   amd64   GNU TLS library - OpenSSL wrapper

ii openssl   1.0.1f-1ubuntu2.16   amd64   Secure Sockets Layer toolkit - cryptographic utility

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

apt-get install openssl

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

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

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

rpm -qa | grep -i openssl

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

openssl-1.0.1e-48.el6_8.1.x86_64
openssl-devel-1.0.1e-48.el6_8.1.x86_64
openssl-1.0.1e-48.el6_8.1.i686

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

yum install openssl openssl-devel

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

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

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

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

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

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

Параметр
ОписаниеПример
Common Name или FQDNFQDN (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)Страна, в которой находится ваша организация. Всегда вводится в виде двухбуквенного кода ISORU
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 req –out certificatesigningrequest.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key

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

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

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

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

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

ls *.csr

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

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

sudo nano your_domain.csr
nano

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

openssl req -in server.csr -noout -text

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

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

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

openssl req -out CSR.csr -key privateKey.key -new

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

openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key

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

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

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

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

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

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

Ненадежный сертификат

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

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

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

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

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

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

sudo cat domain.csr

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

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

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

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


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

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

CSR

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

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

Ключ

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

openssl rsa -in server.key -check

SSL сертификат

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

openssl x509 -in server.crt -text –noout

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

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

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCVqGpH2S7F0CbEmQBgmbiDiOOGxhVwlG+yY/6OBQoPKcx4Jv2h
vLz7r54ngjaIqnqRNP7ljKjFLp5zhnAu9GsdwXbgLPtrmMSB+MVFHTJvKjQ+eY9p
dWA3NbQusM9uf8dArm+3VrZxNHQbVGXOIAPNHTO08cZHMSqIDQ6OvLma7wIDAQAB
AoGAbxKPzsNh826JV2A253svdnAibeSWBPgl7kBIrR8QWDCtkH9fvqpVmHa+6pO5
5bShQyQSCkxa9f2jnBorKK4+0K412TBM/SG6Zjw+DsZd6VuoZ7P027msTWQrMBxg
Hjgs7FSFtj76HQ0OZxFeZ8BkIYq0w+7VQYAPBWEPSqCRQAECQQDv09M4PyRVWSQM
S8Rmf/jBWmRnY1gPPEOZDOiSWJqIBZUBznvOPOOQSH6B+vee/q5edQA2OIaDgNmn
AurEtUaRAkEAn7/65w+Tewr89mOM0RKMVpFpwNfGYAj3kT1mFEYDq+iNWdcSE6xE
2H0w3YEbDsSayxc36efFnmr//4ljt4iJfwJAa1pOeicJhIracAaaa6dtGl/0AbOe
f3NibugwUxIGWkzlXmGnWbI3yyYoOta0cR9fvjhxV9QFomfTBcdwf40FgQJAH3MG
DBMO77w8DK2QfWBvbGN4NFTGYwWg52D1Bay68E759OPYVTMm4o/S3Oib0Q53gt/x
TAUq7IMYHtCHZwxkNQJBAORwE+6qVIv/ZSP2tHLYf8DGOhEBJtQcVjE7PfUjAbH5
lr++9qUfv0S13gXj5weio5dzgEXwWdX2YSL/asz5DhU=
-----END RSA PRIVATE KEY-----

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

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

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

openssl x509 -noout -modulus -in server.crt| openssl md5
openssl rsa -noout -modulus -in server.key| openssl 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 вы используете.

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

OpenSSL 1.0.2g  1 Dec 2016

built on: reproducible build, date unspecified

platform: debian-amd64

options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)

compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -

D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-

strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-

Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -

DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -

DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -

DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM

OPENSSLDIR: "/usr/lib/ssl"

Последняя строка 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, чтобы извлечь закрытый ключ из файла:
    openssl pkcs12 -in mypfxfile.pfx -out privatekey.txt –nodes
    Где mypfxfile.pfx- это резервная копия сертификатов вашего сервера Windows.
  2. Эта команда создаст выходной файл privatekey.txt. Используйте текстовый редактор, чтобы открыть файл, и вы увидите закрытый ключ в верхней части списка в стандартном формате:
    -----BEGIN RSA PRIVATE KEY-----
    (Encrypted Text Block)
    -----END RSA PRIVATE KEY-----
    		
  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.

openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx

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

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

openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt

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

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

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

openssl x509 -in domain.crt -outform der -out domain.der

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

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

openssl x509 -inform der -in domain.der -out domain.crt

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

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

openssl rsa -des3 -in unencrypted.key -out encrypted.key

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


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

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

openssl rsa -in encrypted.key -out decrypted.key

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


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

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

openssl version -a

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

OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Apr  7 21:22:23 UTC 2014
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"

Заключение

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

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
21 ноября
20:00
Бесплатный вебинар
Введение в Docker