Создать SSL-сертификат самостоятельно или купить: что лучше?

SSL (Secure Sockets Layer) — это протокол передачи данных. Чаще всего с этим протоколом сталкиваются при посещении разных веб-сайтов. Его вариант для веб-браузеров называется HTTPS. Однако веб-сайтами применение SSL-протокола не ограничивается. Он применим для защиты:

  • файлов, передаваемых по протоколу FTP;
  • электронных писем, передаваемых по протоколам POP или IMAP;
  • сообщений в системах мгновенных сообщений;
  • речи в системах интернет-телефонии;
  • и т. д.

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

С помощью публичного ключа можно зашифровать данные. Расшифровать их можно будет лишь соответствующим секретным ключом.

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

Чтобы задействовать HTTPS-протокол на своём веб-сайте или в своём приложении, к ним нужно подключить эти файлы.

SSL-сертификат своими руками

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

Правда, идти по этому пути не стоит, минимум, по двум причинам:

  • криптография — достаточно серьёзная область, требующая высокой квалификации в математике и программировании; даже в долго используемых криптографических приложениях находят ошибки и уязвимости;
  • уже существует много приложений, в том числе свободных, для генерации пар криптографических ключей; один из самых известных бесплатных генераторов с открытым исходным кодом — OpenSSL.

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

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

 

предупреждающее сообщение Firefox

предупреждающее сообщение IE

предупреждающее сообщение Chrome

 

В них сказано о том, что соединение с запрошенным сайтом может быть небезопасным.

Удостоверение

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

Представьте, что некий иностранец предъявляет вам свой паспорт, а вы ничего не знаете о стране, выпустившей этот паспорт.

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

Проблему можно решить, если некто, кому вы доверяете, подтвердит либо действительность паспорта, либо хотя бы существование страны, выпустившей предъявленный паспорт. — Нужен свидетель!

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

Например, если мы придём в интернет-магазин «Печеньки» даже по защищённому каналу связи, мы не сможем быть уверенными в том, что это — сайт того самого магазина, в который мы хотели попасть.

Чтобы подтвердить сайт, также нужен свидетель, который удостоверит SSL-сертификат, установленный на веб-сервер, на котором находится этот веб-сайт.

В качестве свидетелей, подтверждающих SSL-сертификаты, выступают центры сертификации (Certification Authority). Они своей электронной подписью удостоверяют SSL-сертификаты, а также их владельцев.

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

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

Где купить?

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

Например, SSL-сертификат можно приобрести здесь.

Заключение

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

 

P.S. О чем еще мы пишем в нашем блоге 1cloud: