Авторизация на сайте по Estonian ID card

В данной статье я расскажу, как настроить авторизацию на сайте по Estonian ID card.
Большее внимание будет уделено настройке для тестовых карт, так как с ними больше проблем и меньше всего рассказано.
Так же тестовые карты больше используются для учебных заданий.


1. тестовая ИД карта (MÄNNIK, MARI-LIIS, 47101010033)

id card MÄNNIK, MARI-LIIS
Заказать её можно по этому адресу, укажите какую имеено карточку вы хотите заказать, так как есть 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.
cpanel request sertificate

Теперь вам надо отправить заявку о получении сертификата для тестовых карт (выдается бесплатно), запрос заполняем по этому адресу
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.
Безопасность → Диспетчер 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. Установка поддержки тестовых сертификатов в браузер

В начале убедитесь, что что у вас активированы расшерение и плагин, как показано на картинках:
addon plugin
Так как ID инсталлер устанавливает только сертификаты для реальных ИД карт, то Вам нужно установить 2 тестовых сертификата в браузер FireFox:
Все тестовые сертификаты находятся тут, но нам нужно только 2

a) TEST of ESTEID-SK 2011
b) TEST of KLASS3-SK 2010
У вас должно получиться что-то подобное:
sertificates

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

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) Не забудьте ознакомиться с ценами валидации ИД карт:

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