Протокол SSL (Secure Sockets Layer) помимо обеспечения безопасной передачи данных позволяет также реализовать авторизацию клиентов на сервере с помощью клиентских SSL сертификатов. Ниже приведена инструкция по подготовке сервера к авторизации через сертификаты emcSSL.

Чтобы реализовать авторизацию пользователей на сайте через emcSSL, понадобится SSL сертификат для сайта, кошелек emercoin на сервере и клиентский emcSSL сертификат для проверки работоспособности системы.
Как установить emercoin кошелек на Debian можно прочитать здесь. Подробная инструкция по генерации сертификатов так же есть на нашем сайте.
Получение бесплатного SSL сертификата для сайта
Если на вашем сайте уже стоит бесплатный сертификат от cloudflare.com, то хочу вас огорчить. Чтобы реализовать авторизацию по SSL сертификатам через CloudFlare понадобится тарифный план Enterprise, поэтому проще отказаться от этого сервиса и получить бесплатный SSL для сайта через другой сервис.
Я рекомендую китайский WoSign, который дает бесплатный сертификат на 3 года. Получить сертификат очень просто:
- Заходим на сайт WoSign
- Step 1:Set certificate parameter. Вводим свой домен и больше ничего не меняем
- Step 2: Domain name control verification. На этом шаге нужно подтвердить владение доменом. Сервис сам определит почту из whois и предложит несколько стандартных почтовых аккаунтов на вашем домене. Выберите адрес, на который хотите получить код подтверждения.
- Step 3:Please Select Certificate Signing Request method - выбираем Option 1:Generated by the system. Дальше нужно ввести пароль. Этот пароль понадобится при скачивании архива с сертификатом и для открытия архива.
- Step 4:Enter Email to receive the certificate collcetion link - тут указываем почту для получения сертификата и задаем пароль для входа в аккаунт WoSign.
Если все сделано верно, то через 6-12 часов на почту придет ссылка на скачивание архива с сертификатом.
Установка SSL сертификата на сервер
В архиве вы найдете файлы для разных систем - Nginx, Tomcat и др. Нас интересует for Apache.zip. Там будет 3 файла - сертификат, ключ и файл 1_root_bundle.crt. Нам нужно загрузить все 3 файла на наш сервер.
Если вы как и я используете бесплатную панель управления хостингом Vesta, то сделать это очень просто:
- Перейдите в настройки сайта, нажмите Редактировать и поставьте галочку Поддержка SSL.
- В поле SSL сертификат скопируйте содержимое файла yourdomain.ru.crt, в поле Ключ SSL сертификата скопируйте содержимое файла yourdomain.ru.key, в поле Центр сертификации SSL / Intermediate скопируйте содержимое файла 1_root_bundle.crt
Если не используете панель, отредактируйте файл конфига apache, указав путь к сертификату и ключу:
SSLCertificateFile /path/to/yourdomain.ru.crt
SSLCertificateKeyFile /path/to/yourdomain.ru.key
SSLCertificateChainFile /path/to/1_root_bundle.crt
Для проверки пользовательских сертификатов нам понадобится сертификат сервера emcssl_ca.crt. Скачайте архив с сайта emercoin, сертификат лежит в папке X509/CA. Загрузите сертификат на свой сервер в папку к остальным сертификатам. Если пользуетесь Vesta, положите файл в папку /home/user/conf/web/
Далее необходимо отредактировать файл конфига apache. Для Vesta это /home/user/conf/web/sapache2.conf
Нам нужно указать сертификат сервера для проверки пользовательских сертификатов:
SSLCACertificateFile /path/to/emcssl_ca.crt
Далее нам нужно указать директорию, для доступа к которой будет запрашиваться пользовательский сертификат. Для проверки, я рекомендую создать папку на сайте и загрузить туда файлы из архива emcssl_login_example.tar.gz (нам нужна папка bitcoinController, а так же файлы InfoCard.php и config.php). В config.php можно сразу указать данные emercoind - rpcUserName, rpcPassword и хост. Эти данные нужно взять из файла emercoin.conf.
Вернемся к конфигу apache и укажем нашу папку для тестов:
<Directory /path/to/testssl>
SSLOptions +StdEnvVars +ExportCertData
SSLVerifyClient optional
SSLVerifyDepth 1
</Directory>
В моем случае файл конфига полностью выглядит так:
<VirtualHost 188.226.132.46:443>
ServerName cryptor.net
ServerAlias www.cryptor.net
ServerAdmin [email protected]
DocumentRoot /home/cryptor/web/cryptor.net/public_html
ScriptAlias /cgi-bin/ /home/cryptor/web/cryptor.net/cgi-bin/
Alias /vstats/ /home/cryptor/web/cryptor.net/stats/
Alias /error/ /home/cryptor/web/cryptor.net/document_errors/
#SuexecUserGroup cryptor cryptor
CustomLog /var/log/apache2/domains/cryptor.net.bytes bytes
CustomLog /var/log/apache2/domains/cryptor.net.log combined
ErrorLog /var/log/apache2/domains/cryptor.net.error.log
<Directory /home/cryptor/web/cryptor.net/public_html>
AllowOverride All
SSLRequireSSL
Options +Includes -Indexes +ExecCGI
</Directory>
<Directory /home/cryptor/web/cryptor.net/stats>
AllowOverride All
</Directory>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile /home/cryptor/conf/web/ssl.cryptor.net.crt
SSLCertificateKeyFile /home/cryptor/conf/web/ssl.cryptor.net.key
SSLCertificateChainFile /home/cryptor/conf/web/ssl.cryptor.net.ca
SSLCACertificateFile /home/cryptor/conf/web/emcssl_ca.crt
<Directory /home/cryptor/web/cryptor.net/public_html/testssl>
SSLOptions +StdEnvVars +ExportCertData
SSLVerifyClient optional
SSLVerifyDepth 1
</Directory>
<IfModule mod_ruid2.c>
RMode config
RUidGid cryptor cryptor
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID cryptor cryptor
</IfModule>
Include /home/cryptor/conf/web/sapache2.cryptor.net.conf*
</VirtualHost>
Теперь осталось лишь создать папку для хранения данных InfoCard:
mkdir /var/tmp/infocard
Укажем владельца папки (для Vesta это пользователь-владелец сайта):
chown -R user:group /var/tmp/infocard
И выставим права:
chmod 0700 /var/tmp/infocard
На всякий случай перезапустим apache:
service apache2 restart
На этом все. Если все настроено верно, то при открытие странички вашсайт/тестовая_папка/InfoCard.php сервер отобразит информацию из вашего emcSSL сертификата. Выглядеть должно как на моей тестовой страничке
Надеюсь, у вас все получилось. Если нет, пишите в комментариях - буду помогать.
Комментарии:
Emer
#
Просьба админу - починить emcSSL Login! Очень удобно и по теме - очень классное наглядное пособие, комментить в теме про emcSSL используя его же.
вт, 12/08/2015 - 22:38
admin
#
Сделаем. Разработчик модуля под друпал сейчас пытается разобраться, почему на этом сайте он работает неправильно.
ср, 12/09/2015 - 09:37