Temat: autoryzacja za pośrednictwem podpisu elektronicznego
Robert M.:
Witam ;-)
Mam jeszcze pytanie czy ktoś ma doświadczania związane z podpisem elektronicznym i autoryzacją do strony www, mianowicie chciałbym aby dostęp do logowania był dopiero po autoryzacji przez podpis elektroniczny, o ile problem przy użyciu karty chipowej z której pobierany jest podpis, w sieci znalazłem materiały to w przypadku o którym pisze nie wygooglowowałem :( dobrze by było aby takie rozwiązanie było oparte o php (ew inne choć)
z góry dziękuję ;-)
Hej, postaram się to wytłumaczyć najprościej jak potrafię. Otóż nie do końca rozumiem czego chcesz użyć jako nośnika certyfikatów - jednakże nie ma tutaj znaczenia czy chcesz używać jako nośnika certyfikatów kart SC, czy też plików, jeśli zdecydujesz się na karty musisz na każdym systemie klienckim dostarczyć odpowiednie biblioteki Crypto Service Provider (CSP), oraz PKCS#11 pozwalające na komunikację z kartą.
Z tego co rozumiem chcesz zrobić two factor authentication. Jeśli dobrze zrozumiałem miało by to wyglądać w sposób następujący. Masz wygenerowane certyfikaty dla webserwera i dla wszystkich użytkowników. Pierwszym krokiem dostania się do chronionej podstrony była by autentykacja certyfikatem klienta - jeśli certyfikat klienta jest wydany przez to samo centrum certyfikacji, przez które wydano certyfikat dla webserwera, oraz jeśli certyfikat klienta nie znajduję się na liście certyfikatów unieważnionych (CRL) ustanawiana jest sesja HTTPS pomiędzy serwerem i klientem.
Po poprawnym ustanowieniu sesji użytkownikowi pokazuje się formularz do logowania np. login, hasło po wprowadzeniu których dane powędrują do serwera szyfrowanym kanałem. Jeśli właśnie w taki sposób chcesz to zrobić potrzebujesz zrobić dwie rzeczy tzn. skonfigurować serwer http aby obsługiwał połączenia po SSL oraz zakodować w PHP bądź też użyć gotowca do autentykacji użytkowników loginem i hasłem. Obsługi certyfikatów i autentykacji certyfikatem leży po stronie serwera HTTP i nie trzeba jej kodować.
Poniżej podaję Ci link jak skonfigurować SSL dla serwera apache:
http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html
najprostsza konfiguracja wymagająca aby klient i serwer posiadał certyfikat wydany przez to samo centrum:
httpd.conf
SSLVerifyClient none
SSLCACertificateFile conf/ssl.crt/ca.crt
<Location /secure/area>
SSLVerifyClient require
SSLVerifyDepth 1
</Location>
Przy takiej konfiguracji wymagana będzie autentykacja klienta certyfikatem aby dostać się do zasobów umieszczonych w katalogu
/secure/area, jeśli autentykacja przejdzie pomyślnie wtedy klient uzyska szyfrowane połączenie do podstron w katalogu
/secure/area i jeśli chcesz zrobić drugi stopień autentykacji np. login hasło w PHP to musisz po prostu stworzyć tam podstronę która będzie wymagała od użytkownika aby podał te dane.
Przykłady autentykacji użytkowników można znaleźć w internecie chociażby na stronie:
http://pl.php.net/manual/sl/features.http-auth.php
Czy o to Ci chodziło, czy nie do końca ?
pozdrawiam
g.