Авторизация на сайте по Estonian ID card
В данной статье я расскажу, как настроить авторизацию на сайте по Estonian ID card.
Большее внимание будет уделено настройке для тестовых карт, так как с ними больше проблем и меньше всего рассказано.
Так же тестовые карты больше используются для учебных заданий.
1. тестовая ИД карта (MÄNNIK, MARI-LIIS, 47101010033)

Заказать её можно по этому адресу, укажите какую имеено карточку вы хотите заказать, так как есть 2 типа тестовых карт.
Это платная услуга, которая стоит 32 EUR + KM = 38,4 EUR
2. Сертификат, подписанный Sertifitseerimiskeskus`ом
2.1 Cгенерировать request sertificate из коммандой строки
Команда сгенерировать ключ:openssl genrsa -out my_key_2014.key 2048
Снять с ключа пароль:
openssl rsa -in my_key_2014.key -out my_key_2014.key
Сгенерировать request sertificate:
openssl req -new -key my_key_2014.key -out myreq.pem
2.2 Cгенерировать request sertificate через CPanel
Безопасность → Диспетчер SSL/TLS → Запросы подписи сертификата (CSR) → Генерировать, просмотреть или удалить запросы подписи сертификата SSL.
Теперь вам надо отправить заявку о получении сертификата для тестовых карт (выдается бесплатно), запрос заполняем по этому адресу
a) адрес сайта рекомендую указать с суб доменом id например: id.e-health.ee
так как, если захотите использовать на своем сайте(www.e-health.ee) SSL сертификат, то 2 SSL сертификата одновременно использовать не сможете.
b) на 3-ем шаге, в поле для пометок, пишем «tegemist on testsertifikaadiga» иначе придется заплатить ещё и за выдачу сертификата.
На это у вас может уйти 1-7 дней, в зависимости от оперативности Sertifitseerimiskeskus.
Предположим, что вы успешно проделали эти 2 шага.
3. Настройка apache сервера.
3.1 Настройка apache сервера через CPanel.
a) Если ваш сайт находится у хостера например Tantum или любой другой, который поддерживает Cpanel.Заходим в Cpanel и выбираем: Безопасность → Диспетчер SSL/TLS → Manage SSL sites.


b) Заполняем поля, как показано на картинке:

В поле «Сертификат: (ЭЛТ)» - нужно скопировать тот сертифика, который вы получили от Sertifitseerimiskeskus
В поле «Private Key: (KEY)» - ваш секретный ключ
В поле «Пакет сертификации: (CABUNDLE)» - нужно скопировать содержание 2 тестовых сертификатов TEST of KLASS3-SK 2010 и TEST of EE Certification Centre Root CA
3.2 Настройка apache сервера с правами root
Если у вас нет CPanel, но есть права root вы можете сами добавить в конфигурацию apache сервера, пример:<VirtualHost 212.47.196.48:443> SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:!LOW ServerName id.e-health.ee ServerAlias www.id.e-health.ee DocumentRoot /home/ehealth/public_html/id ServerAdmin webmaster@id.e-health.ee UseCanonicalName Off ## User ehealth # Needed for Cpanel::ApacheConf UserDir disabled UserDir enabled ehealth. ScriptAlias /cgi-bin/ /home/ehealth/public_html/id/cgi-bin/ SSLEngine on SSLCertificateFile /var/cpanel/ssl/installed/certs/id_e_health_ee.crt SSLCertificateKeyFile /var/cpanel/ssl/installed/keys/my_private.key SSLCACertificateFile /var/cpanel/ssl/installed/cabundles/AS_Sertifitseerimiskeskus.cabundle SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown <Directory "/home/ehealth/public_html/id/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost>
4. Настройка папки файлов.
Предположим, что файлы авторизации находятся у вас в папке /home/ehealth/public_html/idЕсли в этой папке ещё нет файла «.htaccess» - то создайте его.
В этом файле должны быть следующие настройки:
SSLVerifyClient require SSLVerifyDepth 10 <Files ~ "\.(cgi|shtml|phtml|php?)$" SSLOptions +StdEnvVars +ExportCertData +StrictRequire </Files>
5. Установка поддержки тестовых сертификатов в браузер
В начале убедитесь, что что у вас активированы расшерение и плагин, как показано на картинках:

Так как ID инсталлер устанавливает только сертификаты для реальных ИД карт, то Вам нужно установить 2 тестовых сертификата в браузер FireFox:
Все тестовые сертификаты находятся тут, но нам нужно только 2
a) TEST of ESTEID-SK 2011
b) TEST of KLASS3-SK 2010
У вас должно получиться что-то подобное:

Так же можно поставить "TEST of EE Certification Centre Root CA", если он не установлен, то после первой авторизаци и ввода PIN кода - будет установлен автоматически.
Если вы сделали всё правильно, то вставьте тестовую ИД карту в считыватель и зайдите по своему адресу например (https://id.e-health.ee/) и вы должны увидеть:


6. Проверка действительности ИД карты.
6.1 Запрос в Sertifitseerimiskeskus
На вашем сайте будет спрашивать ИД карту и PIN код. Но ведь ИД карту могут потерять или украсть, тогда её блокируют.Разумно, если вы сможете проверять не заблокирована ИД-карта?
Пример кода на php можно скачать тут
6.2 Смена статуса тестовой карты.
Для тестов нам надо менять состояние тестовой карты на Good, Revoked, Unknownэто можно делать по адресу https://www.openxades.org/upload_cert.php
7. Авторизация на сайте с реальными ИД картами
Если вы захотите добавить возможность авторизации по ИД карте реальных ИД карт, то вам нужно будет:a) Заключить договор с Sertifitseerimiskeskus.
b) Сообщить им ваш IP адрес, с других IP адресов запросы блокируются
c) Не забудьте ознакомиться с ценами валидации ИД карт:

Автор статьи: Денис Жадан