Karty
Tato stránka obsahuje různé informace k použití ČVUT karet resp. certifikátů, které na ní mohou být uloženy.
Contents
- 1 Oficiální FJFI návod
- 2 Zpřístupnění informací na ČVUT kartě
- 3 Použítí certifikátů z ČVUT karty
- 3.1 Připojení přes SSH
- 3.2 Podpora smartcard v OpenSSL knihovně
- 3.3 Práce s certifikáty pomoci pkcs11-tool
- 3.4 Práce s certifikáty pomoci p11tool
- 3.5 Podpora smartcard pro obecné NSS úložiště certifikátů
- 3.6 Úložiště certifikátů pro Firefox
- 3.7 Úložiště certifikátů pro Thunderbird
- 3.8 Podepisování PDF dokumentu v Acrobat Readeru
- 3.9 Podepisování dokumentu v LibreOffice
- 3.10 Vzdálené podepisovaní z linuxu na Windows Terminal Serveru
- 3.11 Podpisy v aplikaci PES na linuxu
- 3.12 Přihlašování do Windows v doméně
- 3.13 Získání kerberos ticketu v linuxu
- 3.14 Přihlašování pomocí smartcard do linuxu (CentOS7)
Oficiální FJFI návod
Zpřístupnění informací na ČVUT kartě
Pro práci s certifikáty na ČVUT kartě je potřeba knihovna od OKSystems, která komunikuje s aplikací na kartě starající se o správu certifikátů a poskytující PKCS11 rozhraní.
Na linuxu budete potřebovat konkrétně libokpkcs11.so, jejíž základní funkce v aktuální verzi knihovny 3.0.0 fungovaly minimálně na RHEL7 a Fedora 22. Podporována je ale pouze 64bitová varianta linuxu resp. aplikací, které jsou na něm provozovány (tj. např. v 32bit Adobe Acrobatu si na linuxu nic nepodepíšete).
Na Mac OS X se dají smart karty používat prakticky stejným způsobem jako v linuxu jen je nutné použít libokpkcs11.dylib (místo linuxové libokpkcs11.so)
Použítí certifikátů z ČVUT karty
Připojení přes SSH
Linux
Certifikát na kartě lze použít pro přihlášení k serveru pomocí SSH. Využívá se principu běžných uživatelských klíčů (privátní+veřejný), kde jako privátní klíč se místo ~/.ssh/id_algroritmus použije přímo privátní klíč uložený na kartě. Pro přihlášení pak nutně potřebujete fyzicky vlastnit konkrétní kartu pro níž jste na serveru přidali do ~/.ssh/authorized_keys odpovídající veřejné klíče z karty.
# vypsání seznamu všech public klíčů na kartě ssh-keygen -D /plna/cesta/k/libokpkcs11.so
Vypsaný a vybraný veřejný klíč uložte na server kam se chcete přihlašovat pomocí ČVUT karty do ~/.ssh/authorized_keys stejně, jako se to dělá při práci s lokálními SSH klíči vygenerovanými příkazem ssh-keygen.
# přihlášení na server pomocí privátního klíče na kartě ssh -I /plna/cesta/k/libokpkcs11.so username@nazev.pocitace.cz
Po zadání tohoto příkazů budete dotázání na PIN pro "OKsmart 3.0 MiniOs" a po jeho správném zadání dojde k přihlášení.
Windows
Windows přístup pomocí karty funguje na stejném principu použití privátního a veřejného klíče jako je tomu na linuxu. Je jen potřeba použít SSH klienta s podporou karet, jako je například PuTTY-CAC. To je standardní aktuální verze putty, která v možnostech konfigurace SSH autentizace nabízí další položku CAPI, kde lze vybrat certifikát uložený na kartě a po nahrání zobrazeného veřejného klíče do ~/.ssh/authorized_keys na server je možné pro přihlášení použít ČVUT kartu a PIN.
Podpora smartcard v OpenSSL knihovně
Přístup přímo z CLI
openssl OpenSSL> engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/plna/cesta/k/libokpkcs11.so -pre PIN:1234 OpenSSL> ...
Přístup s konfiguračním souborem openssl.conf
openssl_conf = openssl_def [openssl_def] engines = engine_section [engine_section] pkcs11 = pkcs11_section [pkcs11_section] engine_id = pkcs11 dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so MODULE_PATH = /plna/cesta/k/libokpkcs11.so PIN = 1234 init = 0
# použití konfiguračního souboru OPENSSL_CONF=openssl.conf openssl ...
Práce s certifikáty pomoci pkcs11-tool
pkcs11-tool --module /plna/cesta/k/libokpkcs11.so ...
Práce s certifikáty pomoci p11tool
export GNUTLS_PIN=1234 p11tool --provider /plna/cesta/k/libokpkcs11.so ...
Podpora smartcard pro obecné NSS úložiště certifikátů
Aplikacím používajícím k práci s certifikáty knihovnu NSS lze (pravděpodobně) přidat podporu práce s certifikáty na kartě i ručně pomocí CLI rozhraní
# kořenové certifikáty CESNETu jsou dostupné na https://pki.cesnet.cz certutil -N -d /directory/with/your/nssdb certutil -A -d /directory/with/your/nssdb -i CESNET_CA_Root.pem -n 'CESNET CA Root' -t 'TC,,' certutil -A -d /directory/with/your/nssdb -i PersonalSigning.pem -n 'CESNET Personal Signing CA' -t 'TC,,' certutil -L -d sql:/directory/with/your/nssdb -h all certutil -L -d sql:/directory/with/your/nssdb -n 'CESNET CA Root' certutil -L -d sql:/directory/with/your/nssdb -n 'CESNET Personal Signing CA' modutil -add "OKsmart 3.0 PKCS#11 Module" -dbdir /directory/with/your/nssdb -libfile /path/to/oksystems/library/libokpkcs11.so modutil -list -dbdir /directory/with/your/nssdb
Úložiště certifikátů pro Firefox
V menu zvolte "Preferences" -> "Advanced" -> "Security devices" a v zobrazeném dialogu klikněte na tlačítko "load". Zobrazí se další dialog a v něm musíte vyplnit jméno modulu (libovolně) a hlavně cestu ke knihovně sloužící pro vytvoření PKCS11 rozhraní pro ČVUT kartu (tj. např. /plna/cesta/k/libokpkcs11.so). Po přidání tohoto nového bezpečnostního zařízení budete moci začít používat (všechny) certifikáty uložené na ČVUT kartě podobně jako ty, které máte uloženy v lokalním úložišti certifikatů. Před prvním použitím privátního klíče z karty budete muset zadat PIN.
TODO: info o podepisování v PES
Úložiště certifikátů pro Thunderbird
Konfiguruje se prakticky stejně jako Firefox, certifikáty lze poté používat k podepisování mailů. Tento use-case bych ale moc nedporučoval, protože když vám někdo pošle odpověď zašifrovanou Vaším veřejným klíčem z ČVUT karty (veřejný klíč je součástí Vámi podepsaných mailů), tak pro přečtení takového mailu samozřejmě budete opět potřebovat privátní klíč z Vaší ČVUT karty. Ten si ale nemužete (z principu fungovaní těchto karet) nikam zálohovat, takže když o kartu přijdete, tak se k takto zašifrovaným mailům už nikdy nedostanete.
Podepisování PDF dokumentu v Acrobat Readeru
Na Windows lze v Akrobatu jednoduše otestovat, jestli máte na počítači korektní instlaci driverů a ČVUT karta funguje. Stačí zvolit menu "View" -> "Fill & Sign" a v zobrazeném panelu vybrat "Sign with Certificate" a postupovat dle informací v zobrazeném dialogu.
Podepisování dokumentu v LibreOffice
LibreOffice používá pro podepisování úložiště certifikátů z Firefoxu, který je nejprve nutné zkonfigurovat podle výše uvedeného návodu. Potom lze dokukmenty podepisovat přes "File" -> "Digital Signatures...". Pří výběru "signature" budete dotázáni na heslo, kterým máte zabezpečeno uložiště certifikátů Firefoxu.
Vzdálené podepisovaní z linuxu na Windows Terminal Serveru
Jak rdesktop tak i xfreerdp mají podporu redirectu pro smartcards (hlavně to nehledejte pod redirectem USB zařízení, což nebude fungovat, jelikož tyto aplikace maji implemenovan specialní způsob práce přímo se smartcards). V praxi bohužel (ne)funkčnost zavisí nejen na verzi klientů, ale i na verzi terminál serveru k němuž se připojujete. Zde je stručný přehled stavu z konce roku 2015.
- freerdp-1.0.2 (default package in RHEL7)
- cmd: xfreerdp --plugin rdpdr --data scard: -- jmeno_ts_serveru.fjfi.cvut.cz
- pouziti karty: windows 7 OK, ani tuk s w2k12r2 (kompletne nefunkcni redirect?)
- freerdp-1.2 (GIT be8f8f72387e7878717b6f04c9a87f999449d20d, CentOS7 balicky http://yum.fjfi.cvut.cz/clean-epel-7-x86_64)
- cmd: xfreerdp /sec:nla /u:username /smartcard /v:jmeno_ts_serveru.fjfi.cvut.cz
- pouziti karty: windows 7 OK, w2k12r2 podpis OK (nefunkcni vydavani noveho certifikatu)
vylepseny cmd: xfreerdp /size:1500x1100 /bpp:32 /smart-sizing /compression /decorations /clipboard /auto-reconnect /fonts /microphone:sys:alsa /sound:sys:alsa /multimedia:sys:alsa /sec:nla /cert-ignore /drive:work,/home/username/work /drive:mnt,/mnt /smartcard /u:username /v:jmeno_ts_serveru
- rdesktop-1.8.3 (default package in Fedora 23)
- cmd: rdesktop -r scard jmeno_ts_serveru.fjfi.cvut.cz
- pouziti karty: windows 7 OK, w2k12r2 nelze pripojit (FJFI konfigurace nepodporuje starou "rdp" autentizaci a rdesktop neumi ani "tls" ani "nla")
Podpisy v aplikaci PES na linuxu
- použití karty přímo v linuxu (podpora pouze x86_64)
- instalace: Oracle java (http://java.com/en/download/manual.jsp)
- knihovna:
- konfigurace: about:preferences#advanced -> security devices -> Load -> zadat cestu k libokpkcs11.so
- použití karty: podpis OK (nefunkční vydávání nového certifikátu)
Troubleshooting
- použijte nový čisty profil firefoxu
- smažte Java cache (např. odstraňte celý `rm -rf ~/.java` adresář)
- z neznámého důvodu firefox resp. java applet začal hlásit, že nemůže načíst neexistující knihovnu libeatpkss.so
Přihlašování do Windows v doméně
zatím neotestováno, návod
Získání kerberos ticketu v linuxu
Zatím nezprovozněno (nutné provést odpovídající konfigurace na straně AD)!!!
# zjištění certid pro odpovídající certifikát na smartcard pkcs11-tool --module /plna/cesta/k/libokpkcs11.so --list-objects # získání kerberos ticketu kinit -X X509_user_identity=PKCS11:module_name=/plna/cesta/k/libokpkcs11.so:slotid=0:certid=a0aa370d68e55f27db19c07878326062 \ -X X509_anchors=FILE:ca-chain.crt username@FJFI.CVUT.CZ # výše uvedené parametry je možné specifikovat v konfiguraci kerbera /etc/krb5.conf [realms] FJFI.CVUT.CZ = { kdc = krb1.fjfi.cvut.cz:88 kdc = krb2.fjfi.cvut.cz:88 kdc = krb3.fjfi.cvut.cz:88 admin_server = krb.fjfi.cvut.cz:749 default_domain = fjfi.cvut.cz pkinit_anchors = FILE:/etc/pki/tls/certs/cesnet-ca-chain.crt pkinit_identities = PKCS11:/plna/cesta/k/libokpkcs11.so pkinit_eku_checking = kpServerAuth pkinit_kdc_hostname = wc.fjfi.cvut.cz pkinit_cert_match =&&<EKU>msScLogin,<KU>digitalSignature }
Přihlašování pomocí smartcard do linuxu (CentOS7)
Instalace potřebných balíčků (předem musí být zprovozněn pcscd daemon, který zprostředkovává přístup ke smartcard)
yum install pam_pkcs11
Konfigurace PKCS11 PAM modulu
# /etc/pam_pkcs11/pam_pkcs11.conf pam_pkcs11 { ... use_pkcs11_module = oksmart; ... pkcs11_module oksmart { module = /plna/cesta/k/libokpkcs11.so slot_num = 0; nss_dir = /etc/pki/nssdb; cert_policy = ca, signature; } ... # až bude zprovozněno získávání kerberos ticketů pomocí smartcard # pak bude vyhédnější použít mapování na kerberos principal a nebude # tím pádem nutné udržovat mapování subjektu certifikátu na jméno use_mappers = subject; ... mapper subject { module = internal; ignorecase = false; mapfile = file:///etc/pam_pkcs11/subject_mapping; } ... }
# /etc/pam_pkcs11/subject_mapping DC=cz,DC=cesnet-ca,DC=personal-signing,O=CTU in Prague,CN=Ing. Petr Vokáč,serialNumber=252509@cvut.cz -> vokacpet
# /etc/pam_pkcs11/pkcs11_eventmgr.conf # v tomto souboru lze zkonfigurovat aktivaci screensaveru při vytažení # karty ze čtečky ... netestováno, protože způsob zalockování obrazovky # se v linuxu každou chvíli měni
Konfigurace NSS
# kořenové certifikáty CESNETu jsou dostupné na https://pki.cesnet.cz certutil -N -d /etc/pki/nssdb chmod +r /etc/pki/nssdb/* certutil -A -d /etc/pki/nssdb -i CESNET_CA_Root.pem -n 'CESNET CA Root' -t 'TC,,' certutil -A -d /etc/pki/nssdb -i PersonalSigning.pem -n 'CESNET Personal Signing CA' -t 'TC,,'
Konfigurace přihlašování pomocí PAMu
# /etc/pam.d/system-auth auth required pam_env.so auth [success=1 default=ignore] pam_succeed_if.so service notin login:gdm:xdm:kdm:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid auth sufficient pam_pkcs11.so card_only auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so
Testování konfigurace
pkcs11_setup list_modules pkcs11_setup use_module pkcs11_inspect debug pkcs11_listcerts debug # otestování pam_pkcs11.conf včetně mapování na lokální účet pklogin_finder debug