SSL (Secure Sockets Layer) — это протокол передачи данных. Чаще всего с этим протоколом сталкиваются при посещении разных веб-сайтов. Его вариант для веб-браузеров называется HTTPS. Однако веб-сайтами применение SSL-протокола не ограничивается. Он применим для защиты:
- файлов, передаваемых по протоколу FTP;
- электронных писем, передаваемых по протоколам POP или IMAP;
- сообщений в системах мгновенных сообщений;
- речи в системах интернет-телефонии;
- и т. д.
Для создания защищённого канала связи по SSL-протоколу используется ассиметричное шифрование, основанное на применении двух криптографических ключей: публичного и секретного.
С помощью публичного ключа можно зашифровать данные. Расшифровать их можно будет лишь соответствующим секретным ключом.
Пара этих ключей и некоторая дополнительная информация к ним образуют SSL-сертификат. Для простоты, ключи и SSL-сертификаты можно воспринимать как обычные файлы с набором символов.
Чтобы задействовать HTTPS-протокол на своём веб-сайте или в своём приложении, к ним нужно подключить эти файлы.
SSL-сертификат своими руками
Стандарты, на которых основан SSL-протокол, являются публичными, то есть ими могут свободно пользоваться все желающие. Изучив их, можно самому написать приложение для генерации пары SSL-ключей.
Правда, идти по этому пути не стоит, минимум, по двум причинам:
- криптография — достаточно серьёзная область, требующая высокой квалификации в математике и программировании; даже в долго используемых криптографических приложениях находят ошибки и уязвимости;
- уже существует много приложений, в том числе свободных, для генерации пар криптографических ключей; один из самых известных бесплатных генераторов с открытым исходным кодом — OpenSSL.
С помощью генераторов криптографических ключей можно создавать полноценные пары ключей, которые можно успешно использовать для создания защищённых каналов связи между разными компьютерами и разными приложениями.
Однако если вы установите SSL-сертификат, полученный с помощью своего генератора, на публичный веб-сервер, посетители вашего веб-сайта увидят предупреждающие сообщения. Например, такие.
В них сказано о том, что соединение с запрошенным сайтом может быть небезопасным.
Удостоверение
В чём причина указанного сообщения об ошибке соединения по протоколу HTTPS? — В том, что браузер посетителя не может узнать, кто выпустил SSL-сертификат, установленный на веб-сервер.
Представьте, что некий иностранец предъявляет вам свой паспорт, а вы ничего не знаете о стране, выпустившей этот паспорт.
Совсем необязательно, что этот иностранец — жулик. Вполне возможно, что это вы забыли школьный курс географии. Как бы то ни было, разрешить иностранцу какие-то действия лично вы в этой ситуации не можете. Так же поступают и веб-браузеры.
Проблему можно решить, если некто, кому вы доверяете, подтвердит либо действительность паспорта, либо хотя бы существование страны, выпустившей предъявленный паспорт. — Нужен свидетель!
Вернёмся к HTTPS. Самостоятельно созданные криптографические ключи не содержат в себе сведений о том, кому они принадлежат.
Например, если мы придём в интернет-магазин «Печеньки» даже по защищённому каналу связи, мы не сможем быть уверенными в том, что это — сайт того самого магазина, в который мы хотели попасть.
Чтобы подтвердить сайт, также нужен свидетель, который удостоверит SSL-сертификат, установленный на веб-сервер, на котором находится этот веб-сайт.
В качестве свидетелей, подтверждающих SSL-сертификаты, выступают центры сертификации (Certification Authority). Они своей электронной подписью удостоверяют SSL-сертификаты, а также их владельцев.
По этим подписям можно узнать, кто выдал сертификат, кому, с какой глубиной проверки получателя и т.д.
Для публичного использования SSL-сертификата требуется, чтобы он был получен официально в одном из доверенных центров сертификации.
Где купить?
Публичных международных доверенных центров сертификации не очень много, в пределах сотни. Однако для официального приобретения SSL-сертификата не требуется ехать в другой город или в другую страну. Центры сертификации обеспечивают выдачу сертификатов через своих партнёров.
Например, SSL-сертификат можно приобрести здесь.
Заключение
Самостоятельно созданные SSL-сертификаты можно использовать в частных ситуациях, например, внутри корпоративной компьютерной сети. Но если вам требуется удостоверить публичный веб-сайт, сертификат нужно приобрести официально.
P.S. О чем еще мы пишем в нашем блоге 1cloud:
- ОК, Google! Зачем переходить на HTTPS в 2017 году?
- SSL SSL-ю рознь: какой сертификат выбрать?
- «Зелёные замочки» в разных браузерах