LINUX-BG Адрес : http://www.linux-bg.org |
Ограничаване на достъпа чрез mod_ssl |
От: Пейо Попов Публикувана на: 9-09-2005 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=programs&key=375405388 |
Увод Mod_SSL е интерфейс на apache httpd към openssl. Той може да се използва както за шифриране на комуникацията между уеб сървъра и клиента, удостоверяване на идентичността на сървъра, а така и за ограничение на достъпа до ресурсите, които предлага. В тази статия ще се опитам да представя основите на конфигуриране на тези ограничения по начин подобен на този, по който ще бъдат ползвани на новата машина на Linux-BG. За подръжката на mod_ssl mod_ssl е стандартна част от всички дистрибуции, които предлагат apache httpd. Особеност при Дебиан, е че пакетът се казва libapache-mod-ssl. В дистрибуцията съществува и пакет apache-ssl, който представлява отделен уеб сървър използващ проекта apache-ssl.org, който проект не се разработва от години и е изместен почти навсякъде от mod_ssl, който се зарежда като модул на основния уеб сървър. Въпреки, че няма разлики във функционалността на mod_ssl в 1.3.x и 2.0.x клоновете има проблем, който прави невъзможно изпращането на POST заявки при определени изисквания за сертификатна автентикация. Този проблем е породен от различния начин, по който 2.0.x клона обработва POST заявките и е описан в този коментар. Съществува и пач, който решава този проблем и аз съм компилирал и стартирал httpd с него, но тъй като автор на пача е Joe Orton, който поддържа пакета httpd в RHEL и Fedora и той не го е включил в дистрибуцията, предполагам, че има причини за това и не го ползвам, а и не препоръчвам на вас да го ползвате. Ще спомена по-долу конфигурациите, които са приложими засега само за 1.3.x клона, а на тези, които ползват 2.0.x клона, им препоръчвам да следят changelog-а на httpd пакета на своята дистрибуция както и следните два доклада в системите за доклад на грешки на: Това са проблеми специфични за apache httpd 2.0.x клона, а ние ползваме доказалата се за стабилна 1.3.х версия и затова можем да ползваме пълните възможности на модула. Начална конфигурация Започваме с генерирането на сертификат за уеб сървъра, подписването му от нашата CA и поставянето им в конфгурационните директории:
Горният пример ще създаде частен ключ, който ще бъде криптиран и ще се иска парола при зареждането му от уеб сървъра. Първоначално така го бяхме направили, но бързо ни мина и го декриптирахме. За да не бъде криптиран използвайте опцията -nodes. Дебиан не включва никаква примерна конфигурация на модула и затова е нужно да си я създадем сами. Това е нетипично за другите дистрибуци и аз ви съветвам да погледнете съдържанието на пакета си, примерните конфигурационни файлове и коментарите в тях. За останалите дистрибуции ви съветвам да не се отклонявате от стойностите, с които е конфигурирана общата част на модула по подразбиране. Долните настройки са мое дело и са правени като съм търсел консервативните и работещи със сигурност стойности, но в действителност може и да са възможни по-добри решения. Продължаваме с общата конфигурация на mod_ssl, за която създаваме файла /etc/apache/conf.d/mod_ssl.conf.
Конфигурационните директиви за заключени между <IfModule mod_ssl.c> и </IfModule>, за да не предизвикат грешки, ако модулът не е зареден. Специфични настройки за виртуалния хост Минаваме към специфичните настройки за виртуалния хост:
Настройки за ограничаване на достъпа Тези настройки също се правят в рамките на виртуалния хост, но тук ще са отделно, за да илюстрират някои от възможностите. За тях се изисква предоставянето на PKCS#12 сертификат от страна на потребителя. Как се създава той може да прочетете в статията за Postfix и TLS. Отново поясненията ще бъдат като коментари:
За да прегледаме сертификатните полета може да използваме командата:
Ако искаме да видим целия сертификат в текстови вид ползваме:
Понякога може да ни се наложи да ограничим достъпа до някоя директория във виртуален хост, който е достъпен и по http. За да пренасоча всички заявки към https аз ползвам mod_rewrite:
Възможности на SSLRequire Синтаксисът
на SSLRequire директивата е изключително гъвкав и ни позволява да
въвеждаме изключително разнообразни ограничения и съм сигурен, че всеки
ще намери нужните средства, за да задоволят нуждите му. Нека само
спомена, че освен всички параметри на сертификата разполагаме и със
стандартните променливи на обкръжението (CGI 1.0) и apache и може да ги
включваме и тях в изрази като викаме променливата под формата на
%{ИмеНаПроменлива}. Имайки предвид тези богати възможности горните примери са само начално въведение, за запознаване със синтаксиса им и аз не виждам смисъл да се опитвам да изброявам всичките им възможни приложения. За четене |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|