SSL и производные.



Бесплатный сыр, то есть бесплатные сервисы и продукты — предмет вечной и азартной охоты Интернет-обитателей. Но нигде выбор бесплатного так не ограничен, как в области SSL-сертификатов.
Причины этого понятны: криптография предполагает некий уровень доверия к тому, кто поручился за реквизиты (ключ шифрования). Ктому охота брать на себя ответственность за анонимного в общем случае пользователя?
Тем не менее, способ приобрести SSL-сертификат бесплатно есть; что касается платных вариантов, то поищите сами-знаете-где строку вида «SSL 9.95» и найдёте способ купить вполне настоящий сертификат за 9.95 американских рублей.
Резонный вопрос: отчего попросту не использовать самоподписанный сертификат? Простой ответ: вопрос того же доверия. Перечисленные ниже сертификаты пусть и не несут никакой особой гарантии, но всё же предполагают пусть и малый, но уровень ответственность выпускающего центра. В случае самоподписанного сертификата за вас никто не поручится. Если речь о сертификате для ваших внутренних нужд, скажем, для целей разработки, то и тут сложностей не предвидится: уж сами себе вы, скорее всего, доверяете.
Если же нет, то ниже приведены два центра сертификации, предлагающие SSL сертификаты бесплатно.
CACert является одной из самых известных некоммерческих организаций, не только предлагающей свободные сертификаты, но и предоставляющий сервис «кольца доверия» (WoT, Web of Trust), в котором за каждого человека поручились как минимум два существующих участника, и личность человека установлена и подтверждена документально.
Концепция WoT очень популярна сейчас; в киберпространстве понять, с кем именно имеешь дело, крайне трудно. Но саму эту тему я разовью в последующих статьях.
У сертификатов CACert три недостатка:
— корневой сертификат отсутствует в большинстве браузеров по умолчанию, его туда нужно устанавливать; следствие — браузер по умолчанию будет выдавать предупреждение, если будет попытка установить защищённое соединение с сайтом, использующим сертификат от CACert
— выпускаются на срок полгода
— не содержат ничего, по сути, кроме доменного имени – иными словами, без поручительства
StartSSL: в данном случае мы имеем дело с действительно бесплатными, полноценными SSL сертификатами, сроком действия в один год. При этом с поручительством в 10 тысяч всё тех же американских рублей, хотя в данных сертификата всё равно будет написано, что личность владельца не подтверждена.
Компания StartCom, которая владеет сервисом StartSSL, с самого начала предоставляет бесплатные сертификаты — правда, требуется пройти такую небольшую проверку, как сертификацию (право владения) электронной почтой. Которая выполняется автоматически и не требует передачи никаких документов.
Почему я упомянул CACert? По той простой причине, что, если вам нужен сертификат для некоммерческой организации, логично получать его именно в CACert. Это больше соответствует духу тамошней политики и принципам доверия CACert. Ноб разумеется, решать вам.
Одно скажу: не используйте для своего сайта публичные (предоставляемые провайдером и выданные не для вашего доменного имени) сертификаты. Равно как и самоподписанные: и те, и другие хороши только для тестирования; никакого серьёзного уровня доверия они не предоставляют, и, если вы продаёте что-либо, и только высшие соображения экономии не позволяют вам приобрести вовсе не дорогие сертификаты для организаций — «самоподтверждённые» гарантии вряд ли вызовут энтузиазм у ваших посетителей.
Доверие и забота требуются не только покупателям в Интернете. Всем, кому дорого здоровье своих питомцев, требуется надёжная ветеринарная служба, готовая прийти на помощь в беде или помочь советом специалиста.
Иногда возникает необходимость создания самоподписанного SSL-сертификата (для обеспечения надёжного доступа к сервисам интранета и т.п.). Делается это таким образом:
В дальнейшем 'server' — условная строка, используйте любую, рекомендуется делать её мнемонической, чтобы она сообщала о том, где и для чего будет использоваться сертификат — например, 'example.com-smtp').
1. Создаём ключ (потребуется ввод пароля, введите любой):
openssl genrsa -des3 -out server-tmp.key
2. Если не хочется вводить пароль при запуске сервиса, пароль нужно убрать (примите меры после этого, чтобы доступ к ключу был только у суперпользователя):
openssl rsa -in server-tmp.key -out server.key
3. Создаём файл запроса о подписи (certificate signing request, CSR):
openssl req -new -key server.key -out server.csr
Программа запросит ряд параметров для сертификата, отвечайте примерно таким образом:
Country Name (2 letter code) [GB]:RU
State or Province Name (full name) [Berkshire]:Tmutarakan region
Locality Name (eg, city) [Newbury]:Tmutarakan
Organization Name (eg, company) [My Company Ltd]:FooBar Tmutarakanian
Organizational Unit Name (eg, section) []:Bystronet
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:admin [at] example [dot] com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
В случае 'Common Name' необходимо указать доменное имя сервера. Внимание: при настройке сервиса доменное имя должно быть в точности таким же, иначе будет как минимум выдаваться предупреждение о том, что сертификат выдан на другой сервер.
Дополнительные ('extra') параметры можно не вводить (просто нажмите Enter).
4. На этом этапе можно получить сертификат от доверенного источника (платный). Если достаточно самоподписанного (достаточно для нужд интранета), то генерируем сертификат сами:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Параметр после '-days' - время годности сертификата в днях, считая от текущего момента. В примере выше мы создаём сертификат, годный в течение примерно 10 лет.
Всё готово. Файл server.key - ключ, файл server.crt - собственно сертификат.