Apache a indivializovane adresare
Karel Salavec
karels na pc163.gr.ph.ct.cz
Pondělí Březen 14 08:55:59 CET 2005
On Sunday 13 of March 2005 16:25, Petr Vileta wrote:
> Karel Salavec wrote:
> > Zdravim!
> >
> > Mam takovy problemek:
> > Mejme nekolik uzivatelu (treba aaa,bbb,ccc), kterym je treba predavat
> > zabezpecenym pusobem citliva data (kazdy ma jina). Klient by mel byt
> > libovolny browser.
> >
> > Zvolil jsem reseni SSL a klientske certifikaty. Generovani certifikatu a
> > zbytek hry na CA zvladnuto bez problemu, ale zbyva posledni prekazka:
> > Jak namapovat napr. /var/www/data/<user> na https://nas_server/data,
> > kde pro kazdeho usera bude jiny adresar.
> > Priklad:
> > pro usera aaa budu servirovat data z /var/www/data/aaa
> > pro usera bbb z /var/www/data/bbb
> >
> > Predpokladam, ze bych se ridil podle promenne SSL_CLIENT_S_DN_CN.
>
> No ja bych to udelal nejak takhle (pro Apache 1.3.x co provozuji):
> V konfiguraku Apache udelat
> ---CUT---
> <Directory "/var/www/data">
> AllowOverride Options ExecCGI
> <Files ~ "^\.ht">
> Order allow,deny
> Deny from all
> Satisfy All
> </Files>
> </Directory>
> <Directory "/var/www/data/Karel">
> AllowOverride Options AuthConfig FileInfo
> </Directory>
> <Directory "/var/www/data/Franta">
> AllowOverride Options AuthConfig FileInfo
> </Directory>
> ---CUT---
>
> Do adresare /var/www/data umistit soubor .htaccess s timto obsahem
> ---CUT---
> AuthType Basic
> AuthName "Zadej prihlasovaci jmeno a heslo"
> AuthUserFile /var/www/data/.htpasswd
> require valid-user
> ---CUT---
>
> Pak pomoci
> htpasswd -c /var/www/data/.htpasswd Karel
> vytvorit soubor hesel s prvnim uzivatelem Karel
> Dale opet pomoci htpasswd pridat druheho uzivatele.
> htpasswd /var/www/data/.htpasswd Franta
>
> Pak zkopirovat
> /var/www/data/.htaccess
> a
> /var/www/data/.htpasswd
> do adresaru Karel a Franta a upravit obsah .htaccess
> pro Franta
> ---CUT---
> AuthType Basic
> AuthName "Zadej prihlasovaci jmeno a heslo"
> AuthUserFile /var/www/data/Franta/.htpasswd
> require valid-user
> ---CUT---
>
> pro Karel
> ---CUT---
> AuthType Basic
> AuthName "Zadej prihlasovaci jmeno a heslo"
> AuthUserFile /var/www/data/Karel/.htpasswd
> require valid-user
> ---CUT---
>
> a v souborech /var/www/data/Franta/.htpasswd (a Karel/.htpasswd) nechat jen
> heslo pro toho jedineho uzivatele.
> Treba by slo na to napsat jednoduchy skript, ktery by to udelal ze
> zakladnich souboru pomoci grepu nebo tak nejak.
Pokud budeme uvazovat (jak v puvodnim receno), ze zabezpeceny kanal (SSL +
klientske certifikaty), pak staci
<Directory "/var/www/data/Karel">
SSLOptions +StdEnvVars +FakeBasicAuth +StrictRequire
SSLRequire ( %{SSL_CLIENT_I_DN_CN} eq "Moje CA" \
and %{SSL_CLIENT_I_DN_OU} eq "Zakaznici" \
and %{SSL_CLENT_S_DN_CN} eq "Karel" )
</Directory>
a nemusim resit udrzbu a synchronizaci .htpasswd.
Drobny problem nastava v okamziku, kdy zakazniku jsou desity ci stovky.
>
> No a nakonec do /var/www/data umistit soubor index.cgi, ktery bude mit
> tento obsah (a bude spustitelny)
> ---CUT---
> #!/usr/bin/perl
> $redir='https://nas_server/data/' . $ENV{REMOTE_USER};
> print "Location: $user\n\n";
> ---CUT---
Nojo, ale to uz jsme mimo standardni prostredky Apache (coz jsem nechtel).
>
> A to je vsechno.
> Pro uzivatele to bude vypadat tak, ze napise URL https://nas_server/data a
> bude dotazan na Jmeno a Heslo. To vyplni a ono ho to presmeruje do jeho
> adresare. Pokud by se pokusil prejit do adresare nekoho jineho, tak se ho
> to zepta znovu na jmeno/heslo toho jineho uzivatele a pokud ho nebude znat,
> vykopne ho to.
>
Diky za snahu, ale jak vidno, az tak uplne to puvodni problem neresi :-(
> --
> Petr
Karel
Další informace o konferenci Linux