Настройка авторизации на веб-сервере Apache по сертификату пользователя [2009]
Исходные данные: OC – FreeBSD или Linux, в наличии должен быть
openssl Веб-сервер – Apache 2.2 + mod_ssl (http://test.lan)
Необходимо: Настроить SSL – издать сертификаты, настроить
веб-сервер При доступе к определенной директории веб-сервер должен
запрашивать авторизацию по сертификату клиента.
Исходим из того что веб-сервер корректно установлен, у хоста есть полное FQDN
и он корректно резолвится и доступен извне по портам 80/tcp и 443/tcp.
В первую очередь необходимо будет: 1) Настроить свой CA (Certificate
Authority) для издания сертификатов веб-сервера и клиентов. 2) Сгенерировать
ключ и сертификат веб-сервера 3) Сгенерировать и импортировать ключи и
сертификаты веб-клиентов.
Приступим:
Создадим директорию доступную
только суперпользователю:
Запускаем вебсервер, проверяем работает ли, заходим по https, смотрим. Если
все работает идем далее: Издадим сертификат пользователя, настроим доступ к
определенной веб-папке по сертификату.
Внесем изменения в httpd-ssl.conf, добавим строки:
<Directory /usr/local/www/apache22/data/ssl> #путь к веб-корню у меня /usr/local/www/apache22/data/
SSLVerifyClient require
SSLVerifyDepth 1
</Directory>
В процессе создания и импорта закрытого ключа, запрашивается пароль –
необходимо внести. Затем переносим файл.p12 на ту систему где планируется его
использование, переносим его либо в личное хранилище сертификатов, если ОС
клиента – Windows, либо импортируем в хранилище Firefox`a, либо заливаем в
аппаратный ключ или смарткарту. Проверям. Пользуемся.
P.S. Немного сумбурно описал, но это в первую очередь для себя =)
P.P.S: Есть такой момент – при перезапуске вебсервера будет требоваться
ввести пароль закрытого ключа вебсервера в консоли. Это определяется
параметром
SSLPassPhraseDialog builtin
Решается следующим образом: в каталоге доступном только пользователю root
создаем скрипт.