Вы здесь

Авторизация с помощью клиентских emcSSL сертификатов. Часть 1. Готовим сервер

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

Авторизация с помощью клиентских emcSSL сертификатов. Часть 1. Готовим сервер

Чтобы реализовать авторизацию пользователей на сайте через 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.

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

vesta

Если не используете панель, отредактируйте файл конфига 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>

В моем случае файл конфига полностью выглядит так:

Spoiler: Highlight to view

<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 сертификата. Выглядеть должно как на моей тестовой страничке

Надеюсь, у вас все получилось. Если нет, пишите в комментариях - буду помогать.

Категория: 
Tutorial
Технология: 
4
Ваша оценка: Нет Средняя: 3.7 (3 оценок)
30204 / 0
Аватар пользователя admin
Публикацию добавил: admin
Дата публикации: пт, 06/26/2015 - 21:27

Что еще почитать:

Комментарии:

Emer

Просьба админу - починить emcSSL Login! Очень удобно и по теме - очень классное наглядное пособие, комментить в теме про emcSSL используя его же.

вт, 12/08/2015 - 22:38

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

ср, 12/09/2015 - 09:37