Strona internetowa PKSC # 11 uwierzytelnianie kart inteligentnych i certyfikaty klientów SSL

Tworzymy uwierzytelnianie trzyskładnikowe dla strony internetowej ze względu na wymogi prawne w jednym skandynawskim kraju. Klient korzysta z wtyczek przeglądarki marki NetID do uwierzytelniania certyfikatu PKCS #11 w przeglądarce. Smartcards są dostarczane centralnie przez partnera na klienta.

Ten temat nie ma zbyt wielu dostępnych zasobów i samouczków on-line. Czy ktoś ma jakieś wskazówki do przykładowych implementacji lub tutoriali jak zrobić uwierzytelnianie PKCS11 w przeglądarka internetowa?

EDIT: Found about SSL client certificates

  • Wygląda na to, że metoda uwierzytelniania to certyfikat klienta SSL

  • Jak zarządzać relacjami między użytkownikami i ich kartami SmartCard?

  • Czy użytkownicy dostarczają nam swoje klucze publiczne i uwierzytelniamy się na ich podstawie?

  • Czy musimy podpisywać / dostarczać każdemu użytkownikowi indywidualnie za pomocą własnego certyfikatu?

  • Czy wszystkie karty użytkownika zawierają " ogólne" klucz, który testujemy z certyfikatem dostawcy?

Http://www.garex.net/apache/

Http://www.impetus.us / ~rjmooney/projects/misc/clientcertauth.html

Https://en.wikipedia.org/wiki/PKCS11

Https://service.secmaker.com/examples/plugin.aspx

Author: Mikko Ohtamaa, 2012-01-09

3 answers

Nie rób tego z JavaScript. kryptografia JavaScript ma wiele problemów i nie sądzę, że wiele przeglądarek pozwoli ci uzyskać dostęp do PKCS#11 bezpośrednio z JavaScript (działającego z wewnątrz strony) łatwo.

Wiele przeglądarek obsługuje PKCS#11 do uwierzytelniania HTTPS, to znaczy używa PKCS#11 do uwierzytelniania klient-certyfikat jako część połączenia SSL / TLS (jako część HTTPS).

Zakładając, że masz już dostępną bibliotekę PKCS#11 (powiedzmy OpenSC w /usr/lib/opensc.so), Możesz skonfigurować Firefoksa tak, aby go używał:

  • Preferences - > Advanced - > Encryption, go in "Security Devices"
  • Kliknij na 'Load'
  • wybierz nazwę modułu (dla własnego odniesienia na liście) i wskaż plik /usr/lib/opensc.so (lub jakikolwiek odpowiedni moduł PKCS#11 jest w Twoim przypadku).

Następnie, gdy łączysz się z witryną, która żąda certyfikatu klienta, przeglądarka powinna zaoferować Ci wybór certyfikatu z włączonego PKCS#11 urządzenie.

Mechanizm konfiguracji PKCS#11 różni się w zależności od przeglądarki, ale zazwyczaj jest to kwestia ustawienia ścieżki modułu PKCS#11.

Z tego co wiem, Internet Explorer nie używa PKCS#11 (przynajmniej nie bez dodatkowego wsparcia), ale zamiast tego powinien polegać na ms CryptoAPI i InfoCard.

Po stronie serwera należy skonfigurować wymóg uwierzytelniania klienta-certyfikatu. Nic konkretnego do PKCS#11 tam.


Po twoja edycja, powinieneś przeczytać o urzędach certyfikacji (CAs) i infrastrukturach klucza publicznego (PKIs). Możesz wdrożyć własne wewnętrzne PKI, ale wygląda na to, że Twoje wymagania są zintegrowane z istniejącym PKI. Jest to głównie problem administracyjny, więc sprawdź u tych, którzy stawiają ten wymóg, aby zobaczyć, na którym CA chcą polegać (prawdopodobnie ich).

Podczas korzystania z uwierzytelniania client-certificate, klient przedstawi swój certyfikat (który zawiera klucz publiczny użytkownika i inne atrybuty, w tym identyfikator: nazwa wyróżniająca obiekt) oraz uścisk dłoni SSL / TLS zapewni, że Klient ma klucz prywatny dla tego certyfikatu klucza publicznego. Następnie serwer weryfikuje ten certyfikat pod kątem zaufania CAs (jest to również ustawienie SSL po stronie serwera).

Po skonfigurowaniu, któremu CAs chcesz zaufać, mapowanie jest zwykle wykonywane przy użyciu przedmiotu certyfikatu DN do wewnętrznej nazwy użytkownika w razie potrzeby. Nie ma na to twardej reguły, ponieważ zależy to od wewnętrznego schematu nazewnictwa użytkownika. Biorąc to pod uwagę, często rozsądne jest użycie pełnego tematu DN jako nazwy użytkownika.

 8
Author: Bruno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-09 18:15:12

Obecnie nie można wykonać PKCS#11 wewnątrz procesu przeglądarki. Cała odpowiednia natywna technologia albo umiera (NPAPI), albo nie jest zaimplementowana przez wszystkie przeglądarki. Musisz to zrobić poza przeglądarką i stworzyć jakąś wzajemną komunikację.

 3
Author: hasa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-04 15:48:24

Teraz możesz to zrobić. Uwierzytelnianie internetowe przy użyciu kart lub tokenów PKCS#11 może być zaimplementowane przy użyciu wersji Silverlight NCryptoki. Zobacz http://www.ncryptoki.com

Masz dwa chanche:

1) korzystając z wersji Silverlight NCryptoki i rozwijając własną kontrolę użytkownika Silverlight, która implementuje Twój protokół uwierzytelniania przy użyciu funkcji PKCS#11 dostarczanych przez kartę inteligentną

2) Korzystanie z wtyczki JQuery opartej na powyższej wersji Silverlight i zaimplementować protokół uwierzytelniania w JavaScript, wywołując funkcje PKCS#11 W JavaScript

 2
Author: Ugo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-19 15:12:30