Co to jest `keygen` w HTML?

<keygen> w HTML to specjalny element formularza służący do automatycznego generowania pary kluczy kryptograficznych (prywatnego i publicznego) po stronie użytkownika. Umożliwiał on bezpieczną autoryzację użytkownika za pomocą certyfikatów cyfrowych, dostarczając publiczny klucz serwerowi i pozostawiając prywatny klucz tylko na komputerze użytkownika.

Jak działa <keygen> w HTML?

  • Dodając <keygen> do formularza, podczas wysyłania formularza przeglądarka sama tworzy parę kluczy: publiczny i prywatny,
  • Klucz publiczny zostaje przesłany na serwer jako część formularza, gdzie może być wykorzystany do wygenerowania certyfikatu klienta i późniejszej weryfikacji użytkownika,
  • Klucz prywatny zawsze pozostaje tylko na urządzeniu użytkownika, dzięki czemu rozwiązanie jest wysoce bezpieczne,
  • ten mechanizm pozwalał na łatwe wdrożenie rozwiązań opartych o certyfikaty, np. logowanie klienta bez hasła.

Przykład zastosowania elementu <keygen>

<!DOCTYPE html>
<html>
<head>
  <title>Przykład użycia keygen</title>
</head>
<body>
  <h2>Rejestracja z wykorzystaniem certyfikatu klienta</h2>
  <form action="/rejestracja" method="post">
    Nazwa użytkownika: <input type="text" name="username"><br><br>
    Wygeneruj klucze: <keygen name="userkey"><br><br>
    <input type="submit" value="Wyślij">
  </form>
</body>
</html>

Po wypełnieniu formularza i kliknięciu „Wyślij”, przeglądarka przesyła publiczny klucz na serwer, a prywatny zostaje u użytkownika. Serwer na podstawie przesłanego klucza publicznego generuje certyfikat, który może służyć do późniejszego logowania albo podpisywania elektronicznych operacji.

Najważniejsze atrybuty <keygen>

  • name – definiuje nazwę przesyłanego do serwera klucza publicznego;
  • autofocus – automatycznie ustawia fokus na polu po wczytaniu strony;
  • challenge – łańcuch znaków używany do dodatkowej weryfikacji tożsamości;
  • disabled – dezaktywuje pole generatora;
  • form – przypisuje pole do określonego formularza poza domyślną hierarchią DOM;
  • keytype – pozwala wybrać algorytm kryptograficzny (np. ‘rsa’, ‘dsa’, ‘ec’).

Zastosowania w praktyce

  • Autoryzacja bez haseł – użytkownik po raz pierwszy generuje klucz i uzyskuje certyfikat umożliwiający przyszłe logowanie za pomocą klucza, bez użycia tradycyjnego hasła;
  • Podpisywanie dokumentów i operacji – w zaawansowanych systemach możliwa była obsługa podpisów elektronicznych opartych o lokalnie przechowywany klucz prywatny użytkownika;
  • Systemy wewnętrzne i korporacyjne – ułatwienie dystrybucji certyfikatów i mechanizmów uwierzytelniania.

Obsługa <keygen> przez przeglądarki i status we współczesnych standardach

  • <keygen> było obsługiwane przez popularne przeglądarki (Chrome, Firefox, Safari, Opera),
  • w specyfikacji HTML5 element ten został zdeprecjonowany i jest obecnie wycofany z najnowszych wersji przeglądarek ze względów bezpieczeństwa i zgodności z nowoczesnym podejściem do zarządzania kluczami kryptograficznymi,
  • nowe aplikacje powinny używać Web Crypto API i innych rozwiązań do operacji kryptograficznych po stronie klienta.

Podsumowanie kluczowych informacji

  • <keygen> generuje parę kluczy podczas wypełniania formularza.
  • Klucz publiczny trafia na serwer, prywatny zostaje u użytkownika.
  • Element jest historyczny, obecnie niezalecany i nieobsługiwany w standardzie HTML – stosuj nowoczesne API do obsługi kryptografii.

Alternatywy dla <keygen>

Ze względu na wycofanie <keygen>, obecnie rekomendowane są inne mechanizmy generowania i obsługi kluczy po stronie klienta:

  • Web Crypto API – umożliwia generowanie, zarządzanie i bezpieczne używanie par kluczy oraz podpisów cyfrowych bezpośrednio w przeglądarce przy pełnej kontroli programisty;
  • Rozwiązania serwerowe – generowanie kluczy po stronie serwera i dystrybucja certyfikatów do użytkowników w sposób kontrolowany.

Dzięki tym informacjom wiesz, czym jest <keygen>, jakie było jego zastosowanie i dlaczego dziś nie jest już polecany do nowych projektów webowych.

Programista i twórca serwisu Creative Coding, absolwent Politechniki Warszawskiej (WEiTI). Od 10+ lat łączy front‑end, grafikę generatywną i narzędzia dla twórców; opublikował 120+ projektów i artykułów, prowadził warsztaty dla 2 000+ uczestników. Pracuje z JavaScriptem, Three.js, P5.js i GLSL, bada wydajność i dokumentuje procesy, tworząc praktyczne przewodniki dla osób łączących kod z obrazem, dźwiękiem i interakcją.
Zostaw komentarz

Komentarze

Brak komentarzy. Dlaczego nie rozpoczniesz dyskusji?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *