Difference between revisions of "Karty"

From NMS
Jump to: navigation, search
(Získání kerberos ticketu v linuxu)
(Přihlašování pomocí smartcard do linuxu (CentOS7))
Line 156: Line 156:
 
  # /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
 
  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
 
Konfigurace NSS

Revision as of 11:06, 28 April 2016

Tato stránka obsahuje různé informace k použití ČVUT karet resp. certifikátů, které na ní mohou být uloženy.

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 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

Přihlašování do Windows v doméně

zatím neotestováno

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, crl_online;
  }
  ...
  # 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