ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

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

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

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

–уководство по 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-сертификат?

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