Бесплатный SSL-Сертификат на StartSSL


ИНСТРУКЦИЯ БОЛЬШЕ НЕ РАБОТАЕТ


Наконец, я решил отказаться от AS3 в пользу связки HTML+JS с использованием IFrame. Очевидно, для того, что бы это приложение открывалось из Вконтакте, необходимо залить и клиентскую и серверную часть приложения на сервер. Казалось бы, ничего сложного, но залив приложение на хостинг, я обнаружил, что оно не будет открываться в браузере, если Вконтакте работает через HTTPS. Ниже я опишу, как настроить Apache для работы с HTTPS. Все пункты, кроме последнего будут подходить и для любого другого серверного софта.


SSL, TLS, SSH, HTTPS

Немного разъяснений. Интуитивно я всегда видел какую-то зависимость между SSL и SSH, оба использую RSA шифрование для передачи, оба позволяют пробрасывать через себя другие протоколы. Оказалось, что протоколы исторически имеют разные корни, а следовательно не имеют между собой прямой связи, кроме схожести используемых технологий.
И так:
SSL - Secure Sockets Layer. Изначально разработан компанией Netscape Communications для добавления протокола HTTPS в свой веб-браузер Netscape Navigator.
TLS Transport Layer Security. Развитие протокола SSL. Т.е. после SSL версии 3, следом идет TLS. Иногда для обозначения протокола пишут TLS/SSL.
HTTPS -  Расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTP, упаковываются в пакеты SSL или TLS. HTTPS по умолчанию используется TCP-порт 443.
SSH - Secure Shell или Безопасная Оболочка. Этот протокол стоит особняком от первых трех. Первая версия протокола была разработана Тату Улёненом и не имеет отношения к SSL/TLS/HTTPS.

Подробнее о протоколах всегда можно прочитать в Википедии или иных источниках. Описания выше лишь должны объяснить различия между протоколами.

Перед регистрацией

Для регистрации сертификата я воспользовался сервисом http://www.startssl.com. Сервис позволяет бесплатно получить сертификат, подтверждающий владение доменным именем. Такого сертификата вполне достаточно для приложения Вконтакте. Прежде чем приступить к получению сертификата, у вас должны уже быть:
Сервер - лучше всего арендовать VPS, например на OVH, самый дешевый VPS стоит 2 евро. Если вы экспериментируете и не хотите тратиться, есть возможность приобретения бесплатного VPS. Процесс я описал в статье.
Доменное имя - типа www.example.com. Купить доменное имя от 100 руб (.ru) до 500 руб (.com).
Опишу процесс получения сертификата по шагам:
1. Регистрация
2. Подтверждение email
3. Подтверждение владения доменом
4. Получение закрытого ключа
5. Получение сертификата

Регистрация

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

Подтверждение email

Это не должно вызвать трудностей. Переходите на вкладку Validation и выбирайте Email Address Validation и жмите Continue.
StartSSL подтверждение email


Вам на мыло придет код, введите его в соответствующее поле и все.

Подтверждение владения доменом

 К сожалению, это не так тривиально, как звучит. Снова переходим на вкладку Validation и на этот раз выбираем Domain Name Validation.

StartSSL выбор типа проверки
После нажатия на Continue нас попросят ввести доменное имя.

StartSSL ввод доменного имени

Теперь, когда адрес выбран, сервис отправит электронное сообщение на один из адресов ниже и предложит ввести код, содержащийся в сообщении.
Email для проверки

Разумеется, для получения сообщения, необходимо либо иметь почтовый сервер, подключенный к домену, либо воспользоваться чужим. И так, простейшим вариантом является подключение к вашему домену яндекс ящика. Для этого на сервере уже должен быть поднят web-server.
Для начала открываем список сервисов yandex http://www.yandex.ru/all.
В списке необходимо выбрать пункт Почта для домена. Дальше, все интуитивно понятно. Вам предложат разместить на сервере файл с определенным именем и содержимым, после подтверждения владения доменом, вас попросят добавить запись в зону домена.
Теперь, придется подождать, пока DNS сервера подхватят записи. Yandex сообщит вам, когда все заработает. Заведите новый ящик (hostmaster или webmaster) и отдайте команду StarSSL отправить на него сообщение. Ключ из сообщения введите в соответствующее поле, и ваш домен будет считаться подтвержденным.

Получение закрытого ключа

Перейдите на вкладку Certificates Wizard и выберите пункт Web Server SSL/TLS Certificate.
StartSSL тип сертификата
После нажатия на Continue, появится форма ввода пароля, он нужен что бы зашифровать закрытый ключ, на пути от сервиса, к вам на сервер. О нашей безопасности заботятся буквально на каждом шагу. Главное - не забудьте ключ, он пригодится для расшифровки закрытого ключа.
генерация закрытого ключа
После ввода пароля вам покажут поле с зашифрованным приватным ключом. Скопируйте его в файл ssl.key.e.
Сохраняйте файл и нажимайте Continue. Здесь вас попросят ввести имя поддомена(subdomain). Я сюда ввожу свой ник и пока не понял, зачем это нужно. Когда ввели имя поддомена, снова кликайте Continue, и на следующей странице вы получите сертификат. Его следует сохранить в файл ssl.crt. На этом процесс окончен, переходим к установке ключей. )

Установка ключей

К сожалению, просто получить ключи недостаточно, необходимо провести небольшую настройку, если конечно она еще не проведена.
Для начала, любыми способами перетащите файлы ssl.key.e и ssl.crt на сервер. 
Когда файлы попали на сервер, нужно расшифровать закрытый ключ:
# openssl rsa -in ssl.key.e -out ssl.key
Вас попросят ввести тот же пароль что вы вводили при его получении.
После этого, у вас в каталоге будет свеженький закрытый ключ, пригодный для чтения.

Настройка системы

Для настройки hostname на CentOS, проделайте следующее:

Откройте файл /etc/sysconfig/network и установите HOSTNAME="www.example.com".
Затем, выполните команду
# hostname www.example.com
Теперь откройте файл /etc/hosts и добавьте:
127.0.0.1 www.example.com localhost localhost.localdomain
Перезагрузите сервер и переходите к следующему пункту.
# reboot
Для Debian все немного проще.
В файле /etc/hostname введите имя вашего хоста. И затем выполните скрипт /etc/init.d/hostname.sh. После перезагрузки имя хоста подхватят все сервисы в системе.

После настройки системы, все готово к настройке apache. Я описал настройку apache на Ubuntu в следующей статье.



Комментарии

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk