Prihlásenie na SSH s občianskym preukazom
Naše občianske preukazy majú uložené RSA kľúče, ktoré pomocou technológie PKCS11 používame na prihlasovanie do portálov verejnej správy a na podpisovanie digitálnych dokumentov. Čo možno každý nevie, tieto sa dajú jednoducho použiť aj na prihlásenie cez SSH.
Čo k tomu potrebujeme:- čítačku čipových kariet (externú alebo zabudovanú), ktorá podporuje naše občianske preukazy
- občiansky preukaz s nahratými certifikátmi
- Linux alebo Mac OS (je to možné ale aj na Windows)
- openssh (je súčasťou takmer každej inštalácie)
- aplikáciu pre eID
Na linuxových distribúciách Debian, Mint a Ubuntu sa nainštalovaný balík volá eid-klient:
$ dpkg -s eid-klient Package: eid-klient Status: install ok installed Priority: extra Section: x11 Installed-Size: 128400 Maintainer: Ministerstvo vnútra Slovenskej republiky Architecture: all Source: eid-klient Version: 4.1 Replaces: eac-mw-klient Depends: libpcsclite1, pcscd, xterm Conflicts: eac-mw-klient Description: Aplikácia eID KlientTento balík nainštaluje PKCS11 knižnicu, ktorú potrebujeme na prihlasovanie pomocou SSH. Jej štandardné umiestnenie je
/usr/lib/eID_klient/libpkcs11_x64.so
.
Na operačnom systéme Mac OS má tento súbor nasledovné umiestnenie:
/Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylibNa prihlásenie pomocou SSH musíme najprv extrahovať (verejné) certifikáty z občianskeho preukazu. Na toto je potrebné mať zapnutý program "Aplikácia pre eID", ktorý používa grafické rozhranie Qt (KDE). Potrebné knižnicé sú ale pribalené k balíku eid-klient, takže má tento balík iba minimálne závislosti a je použiteľný aj na novších verziách vyššie uvedených linuxových distribúcií.
Zároveň potrebujeme aj občiansky preukaz vložený do čítačky a rozpoznaný aplikáciou pre eID.
Kľúče vo formáte ako sa používajú v súbore
authorized_keys
extrahujeme nasledovným príkazom:Linux:
ssh-keygen -D /usr/lib/eID_klient/libpkcs11_x64.so > authorized_keysMac OS:
ssh-keygen -D /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib > authorized_keys
Aplikácia pre eID si od nás vypýta BOK (bezpečnostný osobný kód) a po jeho úspešnom zadaní sa do súboru
authorized_keys
sa zapíšu tri verejné kľúče z občianskeho preukazu.
Žiaľ tieto kľúče nemajú označenie, takže je potrebné z nich identifikovať ten "pravý", pri ktorom stačí na prihlásenie do SSH zadanie BOK. Ak dáte do súbora
authorized_keys
všetky tri, tak bude prihlásenie vyžadovať aj elektronický podpis pomocou KEP PIN. Postupným vložením jednotlivých kľúčov samostatne a následným pokusom o prihlásenie sa dá ale ten správny kľúč nájsť.
Súbor
authorized_keys
(alebo iba jednotlivé kľúče z neho) je potrebné premiestniť do konfigurácie cieľového účtu, na ktorý sa chceme prihlásiť. Táto je väčšinou v domovskom priečinku vzdialeného používateľa ~/.ssh/authorized_keys
.
Na konkrétne prihlásenie pomocou občianskeho preukazu potom použijeme príkaz:
Linux:
ssh -I ssh-keygen -D /usr/lib/eID_klient/libpkcs11_x64.so > authorized_keys remoteuser@remotehostMac OS:
ssh -I /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib remoteuser@remotehostkde remoteuser je meno vzdialeného používateľa a remotehost je DNS názov alebo IP adresa vzdialeného servera.
Ak chceme túto formu prihlásenia použiť pre určité vzdialené servery permanentne, môžeme v lokálnej konfigurácii pre SSH klienta
~/.ssh/config
urobiť pre tieto servery nastavenie:Linux:
Host remotehost User remoteuser PKCS11Provider /usr/lib/eID_klient/libpkcs11_x64.soMac OS:
Host remotehost User remoteuser PKCS11Provider /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib
AKTUALIZÁCIE:
- 28.12.2022: eac-mw-klient sa premenoval na eid-klient, otestované s verziou 4.4
Pre pridávanie komentárov sa musíte prihlásiť.
Cool, táto možnosť ma ani nenapadla ;)
Paráda.
Tiež to musím vyskúšať.
Super príspevok.
Super clanok, este by si mohol doplnit, druh citacky podporovany GNU Linuxom.
Zdravím, funguje vám v súčasnosti ešte tento postup? Skúšal som na Ubuntu 22.04, eID 4.1 a bohužiaľ nefunguje: dlopen libpkcs11_x64.so failed: libpkcs11_x64.so: cannot open shared object file: No such file or directory cannot read public key from pkcs11 Vďaka.
Zdravím, aktualizoval som článok pre eid-klient 4.4