ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

ืกื™ืกืžืื•ืช ืคืฉื•ื˜ื•ืช ืื™ื ืŸ ืžืื•ื‘ื˜ื—ื•ืช, ื•ืื™ ืืคืฉืจ ืœื–ื›ื•ืจ ืกื™ืกืžืื•ืช ืžื•ืจื›ื‘ื•ืช. ืœื›ืŸ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ื ืžื’ื™ืขื™ื ืœืคืชืง ื ื“ื‘ืง ืžืชื—ืช ืœืžืงืœื“ืช ืื• ืขืœ ื”ืžืกืš. ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉืกื™ืกืžืื•ืช ื™ื™ืฉืืจื• ื‘ืžื•ื—ื ืฉืœ ืžืฉืชืžืฉื™ื "ืฉื›ื—ื ื™ื" ื•ืฉืืžื™ื ื•ืช ื”ื”ื’ื ื” ืœื ืชืื‘ื“, ื™ืฉ ืื™ืžื•ืช ื“ื•-ื’ื•ืจืžื™ (2FA).

ื‘ืฉืœ ื”ืฉื™ืœื•ื‘ ืฉืœ ื‘ืขืœื•ืช ืขืœ ืžื›ืฉื™ืจ ื•ื”ื›ืจืช ื”-PIN ืฉืœื•, ื”-PIN ืขืฆืžื• ื™ื›ื•ืœ ืœื”ื™ื•ืช ืคืฉื•ื˜ ื•ืงืœ ื™ื•ืชืจ ืœื–ื›ื•ืจ. ื”ื—ืกืจื•ื ื•ืช ื‘ืื•ืจืš ืื• ื‘ืืงืจืื™ื•ืช ืฉืœ PIN ืžืงื•ื–ื–ื™ื ืขืœ ื™ื“ื™ ื“ืจื™ืฉืช ื”ื”ื—ื–ืงื” ื”ืคื™ื–ื™ืช ื•ื”ื”ื’ื‘ืœื•ืช ืขืœ ื›ื•ื— ื’ืก PIN.

ื‘ื ื•ืกืฃ, ื–ื” ืงื•ืจื” ื‘ืกื•ื›ื ื•ื™ื•ืช ืžืžืฉืœืชื™ื•ืช ืฉื”ื ืจื•ืฆื™ื ืฉื”ื›ืœ ื™ืขื‘ื•ื“ ืœืคื™ GOST. ืืคืฉืจื•ืช 2FA ื–ื• ืœื›ื ื™ืกื” ืœืœื™ื ื•ืงืก ืชื™ื“ื•ืŸ. ืื ื™ ืืชื—ื™ืœ ืžืจื—ื•ืง.

ืžื•ื“ื•ืœื™ PAM

ืžื•ื“ื•ืœื™ ืื™ืžื•ืช ื ื™ืชื ื™ื ืœื—ื™ื‘ื•ืจ (PAM) ื”ื ืžื•ื“ื•ืœื™ื ืขื API ืกื˜ื ื“ืจื˜ื™ ื•ื”ื˜ืžืขื•ืช ืฉืœ ืžื ื’ื ื•ื ื™ ืื™ืžื•ืช ืฉื•ื ื™ื ื‘ื™ื™ืฉื•ืžื™ื.
ื›ืœ ื›ืœื™ ื”ืฉื™ืจื•ืช ื•ื”ื™ื™ืฉื•ืžื™ื ืฉื™ื›ื•ืœื™ื ืœืขื‘ื•ื“ ืขื PAM ืงื•ืœื˜ื™ื ืื•ืชื ื•ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ื”ื ืœืื™ืžื•ืช ืžืฉืชืžืฉื™ื.
ื‘ืคื•ืขืœ ื–ื” ืขื•ื‘ื“ ื‘ืขืจืš ื›ืš: ืคืงื•ื“ืช ื”-login ืงื•ืจืืช ืœ-PAM, ืฉืžื‘ืฆืขืช ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช ื”ื ื“ืจืฉื•ืช ื‘ืืžืฆืขื•ืช ื”ืžื•ื“ื•ืœื™ื ื”ืžืฆื•ื™ื ื™ื ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ื•ืžื—ื–ื™ืจื” ืืช ื”ืชื•ืฆืื” ืœืคืงื•ื“ืช ื”-login.

librtpam

ื”ืžื•ื“ื•ืœ ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ื—ื‘ืจืช Aktiv ืžื•ืกื™ืฃ ืื™ืžื•ืช ื“ื•-ื’ื•ืจืžื™ ืฉืœ ืžืฉืชืžืฉื™ื ื‘ืืžืฆืขื•ืช ื›ืจื˜ื™ืกื™ื ื—ื›ืžื™ื ืื• ืืกื™ืžื•ื ื™ USB ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช ืืกื™ืžื˜ืจื™ื™ื ืœืคื™ ื”ืกื˜ื ื“ืจื˜ื™ื ื”ืขื“ื›ื ื™ื™ื ื‘ื™ื•ืชืจ ืฉืœ ืงืจื™ืคื˜ื•ื’ืจืคื™ื” ืžืงื•ืžื™ืช.

ื”ื‘ื” ื ืกืชื›ืœ ืขืœ ืขื™ืงืจื•ืŸ ืคืขื•ืœืชื•:

  • ื”ืืกื™ืžื•ืŸ ืžืื—ืกืŸ ืืช ื”ืื™ืฉื•ืจ ืฉืœ ื”ืžืฉืชืžืฉ ื•ื”ืžืคืชื— ื”ืคืจื˜ื™ ืฉืœื•;
  • ื”ืื™ืฉื•ืจ ื ืฉืžืจ ื‘ืกืคืจื™ื™ืช ื”ื‘ื™ืช ืฉืœ ื”ืžืฉืชืžืฉ ื›ืืžื™ืŸ.

ืชื”ืœื™ืš ื”ืื™ืžื•ืช ืžืชืจื—ืฉ ื‘ืื•ืคืŸ ื”ื‘ื:

  1. Rutoken ืžื—ืคืฉ ืืช ื”ืื™ืฉื•ืจ ื”ืื™ืฉื™ ืฉืœ ื”ืžืฉืชืžืฉ.
  2. ื”-PIN ื”ืืกื™ืžื•ืŸ ืžืชื‘ืงืฉ.
  3. ื ืชื•ื ื™ื ืืงืจืื™ื™ื ื—ืชื•ืžื™ื ืขืœ ื”ืžืคืชื— ื”ืคืจื˜ื™ ื™ืฉื™ืจื•ืช ื‘ืฉื‘ื‘ Rutoken.
  4. ื”ื—ืชื™ืžื” ื”ืžืชืงื‘ืœืช ืžืื•ืžืชืช ื‘ืืžืฆืขื•ืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืžื”ืื™ืฉื•ืจ ืฉืœ ื”ืžืฉืชืžืฉ.
  5. ื”ืžื•ื“ื•ืœ ืžื—ื–ื™ืจ ืืช ืชื•ืฆืืช ืื™ืžื•ืช ื”ื—ืชื™ืžื” ืœื™ื™ืฉื•ื ื”ืžืชืงืฉืจ.

ืืชื” ื™ื›ื•ืœ ืœืืžืช ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST R 34.10-2012 (ืื•ืจืš 256 ืื• 512 ืกื™ื‘ื™ื•ืช) ืื• GOST R 34.10-2001 ื”ืžื™ื•ืฉืŸ.

ืืชื” ืœื ืฆืจื™ืš ืœื“ืื•ื’ ืœื’ื‘ื™ ื”ืื‘ื˜ื—ื” ืฉืœ ื”ืžืคืชื—ื•ืช - ื”ื ื ื•ืฆืจื™ื ื™ืฉื™ืจื•ืช ื‘- Rutoken ื•ืœืขื•ืœื ืœื ืขื•ื–ื‘ื™ื ืืช ื”ื–ื™ื›ืจื•ืŸ ืฉืœื• ื‘ืžื”ืœืš ืคืขื•ืœื•ืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื•ืช.

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

Rutoken EDS 2.0 ืžืื•ืฉืจ ืขืœ ื™ื“ื™ ื”-FSB ื•ื”-FSTEC ืœืคื™ NDV 4, ืœื›ืŸ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืžืขืจื›ื•ืช ืžื™ื“ืข ื”ืžืขื‘ื“ื•ืช ืžื™ื“ืข ืกื•ื“ื™.

ืฉื™ืžื•ืฉ ืžืขืฉื™

ื›ืžืขื˜ ื›ืœ ืœื™ื ื•ืงืก ืžื•ื“ืจื ื™ืช ืชืชืื™ื, ืœืžืฉืœ ื ืฉืชืžืฉ ื‘-xUbuntu 18.10.

1) ื”ืชืงืŸ ืืช ื”ื—ื‘ื™ืœื•ืช ื”ื“ืจื•ืฉื•ืช

sudo apt-get install libccid pcscd opensc
ืื ื‘ืจืฆื•ื ืš ืœื”ื•ืกื™ืฃ ื ืขื™ืœืช ืฉื•ืœื—ืŸ ืขื‘ื•ื“ื” ืขื ืฉื•ืžืจ ืžืกืš, ื”ืชืงืŸ ืืช ื”ื—ื‘ื™ืœื” ื‘ื ื•ืกืฃ libpam-pkcs11.

2) ื”ื•ืกืฃ ืžื•ื“ื•ืœ PAM ืขื ืชืžื™ื›ืช GOST

ื˜ื•ืขืŸ ืืช ื”ืกืคืจื™ื™ื” ืž https://download.rutoken.ru/Rutoken/PAM/
ื”ืขืชืง ืืช ื”ืชื•ื›ืŸ ืฉืœ ืชื™ืงื™ื™ืช PAM librtpam.so.1.0.0 ืœืชื™ืงื™ื™ืช ื”ืžืขืจื›ืช
/usr/lib/ ืื• /usr/lib/x86_64-linux-gnu/ืื• /usr/lib64

3) ื”ืชืงืŸ ืืช ื”ื—ื‘ื™ืœื” ืขื librtpkcs11ecp.so

ื”ื•ืจื“ ื•ื”ืชืงืŸ ืืช ื—ื‘ื™ืœืช DEB ืื• RPM ืžื”ืงื™ืฉื•ืจ: https://www.rutoken.ru/support/download/pkcs/

4) ื‘ื“ืงื• ืฉ- Rutoken EDS 2.0 ืขื•ื‘ื“ ื‘ืžืขืจื›ืช

ื‘ื˜ืจืžื™ื ืœ ืื ื—ื ื• ืžื‘ืฆืขื™ื
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
ืื ืืชื” ืจื•ืื” ืืช ื”ืงื• Rutoken ECP <no label> - ื–ื” ืื•ืžืจ ืฉื”ื›ืœ ื‘ืกื“ืจ.

5) ืงืจื ืืช ื”ืชืขื•ื“ื”

ื‘ื•ื“ืงื™ื ืฉืœืžื›ืฉื™ืจ ื™ืฉ ืชืขื•ื“ื”
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
ืื ืื—ืจื™ ื”ืฉื•ืจื”:
Using slot 0 with a present token (0x0)

  • ืžื™ื“ืข ืžื•ืฆื’ ืœื’ื‘ื™ ืžืคืชื—ื•ืช ื•ืื™ืฉื•ืจื™ื, ืขืœื™ืš ืœืงืจื•ื ืืช ื”ืื™ืฉื•ืจ ื•ืœืฉืžื•ืจ ืื•ืชื• ื‘ื“ื™ืกืง. ืœืฉื ื›ืš, ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”, ื›ืืฉืจ ื‘ืžืงื•ื {id} ืขืœื™ืš ืœื”ื—ืœื™ืฃ ืืช ืžื–ื”ื” ื”ืื™ืฉื•ืจ ืฉืจืื™ืช ื‘ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื” ื”ืงื•ื“ืžืช:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    ืื ืงื•ื‘ืฅ cert.crt ื ื•ืฆืจ, ื”ืžืฉืš ืœืฉืœื‘ 6).
  • ืื™ืŸ ืฉื ื›ืœื•ื, ืื– ื”ืžื›ืฉื™ืจ ืจื™ืง. ืฆื•ืจ ืงืฉืจ ืขื ืžื ื”ืœ ื”ืžืขืจื›ืช ืฉืœืš ืื• ืฆื•ืจ ืืช ื”ืžืคืชื—ื•ืช ื•ื”ืื™ืฉื•ืจ ื‘ืขืฆืžืš ืขืœ ื™ื“ื™ ื‘ื™ืฆื•ืข ื”ืฉืœื‘ ื”ื‘ื.

5.1) ืฆื•ืจ ืชืขื•ื“ืช ื‘ื“ื™ืงื”

ืชืฉื•ืžืช ื”ืœื‘! ื”ืฉื™ื˜ื•ืช ื”ืžืชื•ืืจื•ืช ืœื™ืฆื™ืจืช ืžืคืชื—ื•ืช ื•ืชืขื•ื“ื•ืช ืžืชืื™ืžื•ืช ืœื‘ื“ื™ืงื” ื•ืื™ื ืŸ ืžื™ื•ืขื“ื•ืช ืœืฉื™ืžื•ืฉ ื‘ืžืฆื‘ ืœื—ื™ืžื”. ืœืฉื ื›ืš, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืžืคืชื—ื•ืช ื•ื‘ืื™ืฉื•ืจื™ื ืฉื”ื•ื ืคืงื• ืขืœ ื™ื“ื™ ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ื”ืžื”ื™ืžื ื” ืฉืœ ื”ืืจื’ื•ืŸ ืฉืœืš ืื• ืจืฉื•ืช ืื™ืฉื•ืจื™ื ืžื•ืกืžื›ืช.
ืžื•ื“ื•ืœ PAM ื ื•ืขื“ ืœื”ื’ืŸ ืขืœ ืžื—ืฉื‘ื™ื ืžืงื•ืžื™ื™ื ื•ื ื•ืขื“ ืœืขื‘ื•ื“ ื‘ืืจื’ื•ื ื™ื ืงื˜ื ื™ื. ืžื›ื™ื•ื•ืŸ ืฉื™ืฉ ืžืขื˜ ืžืฉืชืžืฉื™ื, ื”ืžื ื”ืœ ื™ื›ื•ืœ ืœืคืงื— ืขืœ ื‘ื™ื˜ื•ืœ ืื™ืฉื•ืจื™ื ื•ืœื—ืกื•ื ื—ืฉื‘ื•ื ื•ืช ื‘ืื•ืคืŸ ื™ื“ื ื™, ื›ืžื• ื’ื ืืช ืชืงื•ืคืช ื”ืชื•ืงืฃ ืฉืœ ื”ืื™ืฉื•ืจื™ื. ืžื•ื“ื•ืœ PAM ืขื“ื™ื™ืŸ ืœื ื™ื•ื“ืข ืœืืžืช ืื™ืฉื•ืจื™ื ื‘ืืžืฆืขื•ืช CRL ื•ืœื‘ื ื•ืช ืฉืจืฉืจืื•ืช ืืžื•ืŸ.

ื”ื“ืจืš ื”ืงืœื” (ื“ืจืš ื”ื“ืคื“ืคืŸ)

ืœืงื‘ืœืช ืชืขื•ื“ืช ืžื‘ื—ืŸ, ื”ืฉืชืžืฉ ืฉื™ืจื•ืช ืื™ื ื˜ืจื ื˜ "ืžืจื›ื– ืจื™ืฉื•ื Rutoken". ื”ืชื”ืœื™ืš ื™ื™ืงื— ืœื ื™ื•ืชืจ ืž-5 ื“ืงื•ืช.

ื“ืจื›ื• ืฉืœ ื”ื’ื™ืง (ื“ืจืš ื”ืงื•ื ืกื•ืœื” ื•ืื•ืœื™ ื”ืžื”ื“ืจ)

ื‘ื“ื•ืง ืืช ื’ืจืกืช OpenSC
$ opensc-tool --version
ืื ื”ื’ืจืกื” ื”ื™ื ืคื—ื•ืช ืž-0.20, ืื– ืขื“ื›ืŸ ืื• ื‘ื ื” ืกื ื™ืฃ pkcs11-tool ืขื ืชืžื™ื›ื” ื‘-GOST-2012 ืžื”-GitHub ืฉืœื ื• (ื‘ื–ืžืŸ ืคืจืกื•ื ืžืืžืจ ื–ื”, ื’ืจืกื” 0.20 ืขื“ื™ื™ืŸ ืœื ืฉื•ื—ืจืจื”) ืื• ืžื”ืขื ืฃ ื”ืจืืฉื™ ืฉืœ ืคืจื•ื™ืงื˜ OpenSC ื”ืจืืฉื™ ืœื ืžืื•ื—ืจ ื™ื•ืชืจ ืœื‘ืฆืข 8cf1e6f

ืฆื•ืจ ื–ื•ื’ ืžืคืชื—ื•ืช ืขื ื”ืคืจืžื˜ืจื™ื ื”ื‘ืื™ื:
--key-type: GOSTR3410-2012-512:ะ (ะ“ะžะกะข-2012 512 ะฑะธั‚ c ะฟะฐั€ะฐะผัะตั‚ะพะผ ะ), GOSTR3410-2012-256:A (ะ“ะžะกะข-2012 256 ะฑะธั‚ ั ะฟะฐั€ะฐะผัะตั‚ะพะผ A)

--id: ืžื–ื”ื” ืื•ื‘ื™ื™ืงื˜ (CKA_ID) ื›ืžืกืคืจื™ ืชื• hex ื“ื• ืกืคืจืชื™ื™ื ืžื˜ื‘ืœืช ASCII. ื”ืฉืชืžืฉ ืจืง ื‘ืงื•ื“ื™ ASCII ืขื‘ื•ืจ ืชื•ื•ื™ื ื”ื ื™ืชื ื™ื ืœื”ื“ืคืกื”, ื›ื™... id ื™ื”ื™ื” ืฆื•ืจืš ืœื”ืขื‘ื™ืจ ืœ-OpenSSL ื›ืžื—ืจื•ื–ืช. ืœื“ื•ื’ืžื”, ืงื•ื“ ASCII "3132" ืžืชืื™ื ืœืžื—ืจื•ื–ืช "12". ืœื ื•ื—ื•ืช, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ืฉื™ืจื•ืช ืžืงื•ื•ืŸ ืœื”ืžืจืช ืžื—ืจื•ื–ื•ืช ืœืงื•ื“ื™ ASCII.

$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

ื‘ืฉืœื‘ ื”ื‘ื ื ื™ืฆื•ืจ ืชืขื•ื“ื”. ืฉืชื™ ื“ืจื›ื™ื ื™ืชื•ืืจื• ืœื”ืœืŸ: ื”ืจืืฉื•ื ื” ื”ื™ื ื‘ืืžืฆืขื•ืช CA (ื ืฉืชืžืฉ ื‘-CAs ืžื‘ื—ืŸ), ื”ืฉื ื™ื™ื” ื‘ื—ืชื™ืžื” ืขืฆืžื™ืช. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืชื—ื™ืœื” ืขืœื™ืš ืœื”ืชืงื™ืŸ ื•ืœื”ื’ื“ื™ืจ ืืช OpenSSL ื’ืจืกื” 1.1 ื•ืื™ืœืš ืœืขื‘ื•ื“ ืขื Rutoken ื‘ืืžืฆืขื•ืช ืžื•ื“ื•ืœ rtengine ืžื™ื•ื—ื“ ื‘ืืžืฆืขื•ืช ื”ืžื“ืจื™ืš ื”ืชืงื ื” ื•ื”ื’ื“ืจื” ืฉืœ OpenSSL.
ืœื“ื•ื’ืžื”: ืขื‘ื•ืจ '--id 3132' ื‘-OpenSSL ืืชื” ืฆืจื™ืš ืœืฆื™ื™ืŸ "pkcs11:id=12".

ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืฉื™ืจื•ืชื™ื ืฉืœ CA ื‘ื“ื™ืงื”, ืฉื™ืฉ ื”ืจื‘ื” ืžื”ื, ืœืžืฉืœ, ื›ืืŸ, ื›ืืŸ ะธ ื›ืืŸ, ืœืฉื ื›ืš ื ื™ืฆื•ืจ ื‘ืงืฉื” ืœืื™ืฉื•ืจ

ืืคืฉืจื•ืช ื ื•ืกืคืช ื”ื™ื ืœื”ื™ื›ื ืข ืœืขืฆืœื ื•ืช ื•ืœื™ืฆื•ืจ ื—ืชื™ืžื” ืขืฆืžื™ืช
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

ื”ืขืœืืช ื”ืื™ืฉื•ืจ ืœืžื›ืฉื™ืจ
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) ืจื™ืฉื•ื ื”ืื™ืฉื•ืจ ื‘ืžืขืจื›ืช

ื•ื“ื ืฉื”ืื™ืฉื•ืจ ืฉืœืš ื ืจืื” ื›ืžื• ืงื•ื‘ืฅ base64:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

ืื ื”ืชืขื•ื“ื” ืฉืœืš ื ืจืื™ืช ื›ืš:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

ืื– ืืชื” ืฆืจื™ืš ืœื”ืžื™ืจ ืืช ื”ืื™ืฉื•ืจ ืžืคื•ืจืžื˜ DER ืœืคื•ืจืžื˜ PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
ืื ื—ื ื• ื‘ื•ื“ืงื™ื ืฉื•ื‘ ืฉื”ื›ืœ ืชืงื™ืŸ ืขื›ืฉื™ื•.

ื”ื•ืกืฃ ืืช ื”ืื™ืฉื•ืจ ืœืจืฉื™ืžืช ื”ืื™ืฉื•ืจื™ื ื”ืžื”ื™ืžื ื™ื
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื” ืžื’ื ื” ืขืœ ืจืฉื™ืžืช ื”ืื™ืฉื•ืจื™ื ื”ืžื”ื™ืžื ื™ื ืžืคื ื™ ืฉื™ื ื•ื™ ื‘ื˜ืขื•ืช ืื• ื‘ื›ื•ื•ื ื” ืขืœ ื™ื“ื™ ืžืฉืชืžืฉื™ื ืื—ืจื™ื. ื–ื” ืžื•ื ืข ืžืžื™ืฉื”ื• ืœื”ื•ืกื™ืฃ ืืช ื”ืื™ืฉื•ืจ ืฉืœื• ืœื›ืืŸ ื•ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื”ืชื—ื‘ืจ ื‘ืฉืžืš.

7) ื”ื’ื“ืจ ืื™ืžื•ืช

ื”ื’ื“ืจืช ืžื•ื“ื•ืœ PAM ืฉืœื ื• ื”ื™ื ืกื˜ื ื“ืจื˜ื™ืช ืœื—ืœื•ื˜ื™ืŸ ื•ืžืชื‘ืฆืขืช ื‘ื“ื™ื•ืง ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ื”ื’ื“ืจืช ืžื•ื“ื•ืœื™ื ืื—ืจื™ื. ืฆื•ืจ ืœืงื•ื‘ืฅ /usr/share/pam-configs/rutoken-gost-pam ื”ืžื›ื™ืœ ืืช ื”ืฉื ื”ืžืœื ืฉืœ ื”ืžื•ื“ื•ืœ, ื‘ื™ืŸ ืื ื”ื•ื ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืขื“ื™ืคื•ืช ื”ืžื•ื“ื•ืœ ื•ืคืจืžื˜ืจื™ ืื™ืžื•ืช.
ืคืจืžื˜ืจื™ ื”ืื™ืžื•ืช ืžื›ื™ืœื™ื ื“ืจื™ืฉื•ืช ืœื”ืฆืœื—ืช ื”ืคืขื•ืœื”:

  • ื ื“ืจืฉ: ืžื•ื“ื•ืœื™ื ื›ืืœื” ื—ื™ื™ื‘ื™ื ืœื”ื—ื–ื™ืจ ืชื’ื•ื‘ื” ื—ื™ื•ื‘ื™ืช. ืื ื”ืชื•ืฆืื” ืฉืœ ืงืจื™ืืช ืžื•ื“ื•ืœ ืžื›ื™ืœื” ืชื’ื•ื‘ื” ืฉืœื™ืœื™ืช, ื”ื“ื‘ืจ ื™ื’ืจื•ื ืœืฉื’ื™ืืช ืื™ืžื•ืช. ื”ื‘ืงืฉื” ืชื‘ื•ื˜ืœ, ืืš ืฉืืจ ื”ืžื•ื“ื•ืœื™ื ื™ื™ืงืจืื•.
  • ื ื“ืจืฉ: ื“ื•ืžื” ืœื ื“ืจืฉ, ืืš ื ื›ืฉืœ ืžื™ื“ ื‘ืื™ืžื•ืช ื•ืžืชืขืœื ืžืžื•ื“ื•ืœื™ื ืื—ืจื™ื.
  • ืžืกืคื™ืง: ืื ืืฃ ืื—ื“ ืžื”ืžื•ื“ื•ืœื™ื ื”ื ื“ืจืฉื™ื ืื• ื”ืžืกืคื™ืงื™ื ืœืคื ื™ ืžื•ื“ื•ืœ ื›ื–ื” ืœื ื”ื—ื–ื™ืจ ืชื•ืฆืื” ืฉืœื™ืœื™ืช, ืื– ื”ืžื•ื“ื•ืœ ื™ื—ื–ื™ืจ ืชื’ื•ื‘ื” ื—ื™ื•ื‘ื™ืช. ื™ืชืขืœืžื• ืžื”ืžื•ื“ื•ืœื™ื ื”ื ื•ืชืจื™ื.
  • ืื•ืคืฆื™ื•ื ืœื™: ืื ืื™ืŸ ืžื•ื“ื•ืœื™ื ื ื“ืจืฉื™ื ื‘ืขืจื™ืžื” ื•ืืฃ ืื—ื“ ืžื”ืžื•ื“ื•ืœื™ื ื”ืžืกืคื™ืงื™ื ืœื ืžื—ื–ื™ืจ ืชื•ืฆืื” ื—ื™ื•ื‘ื™ืช, ืื– ืœืคื—ื•ืช ืื—ื“ ืžื”ืžื•ื“ื•ืœื™ื ื”ืื•ืคืฆื™ื•ื ืœื™ื™ื ื—ื™ื™ื‘ ืœื”ื—ื–ื™ืจ ืชื•ืฆืื” ื—ื™ื•ื‘ื™ืช.

ืชื•ื›ืŸ ื”ืงื•ื‘ืฅ ื”ืžืœื /usr/share/pam-configs/rutoken-gost-pam:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

ืฉืžื•ืจ ืืช ื”ืงื•ื‘ืฅ ื•ืœืื—ืจ ืžื›ืŸ ื‘ืฆืข
$ sudo pam-auth-update
ื‘ื—ืœื•ืŸ ืฉืžื•ืคื™ืข, ืฉื™ื ื›ื•ื›ื‘ื™ืช ืœื™ื“ื• Rutoken PAM GOST ื•ืœื—ืฅ OK

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

8) ื‘ื“ื•ืง ืืช ื”ื”ื’ื“ืจื•ืช

ื›ื“ื™ ืœื”ื‘ื™ืŸ ืฉื”ื›ืœ ืžื•ื’ื“ืจ, ืื‘ืœ ื‘ืื•ืชื• ื–ืžืŸ ืœื ืœืื‘ื“ ืืช ื”ื™ื›ื•ืœืช ืœื”ื™ื›ื ืก ืœืžืขืจื›ืช, ื”ื–ืŸ ืืช ื”ืคืงื•ื“ื”
$ sudo login
ื”ื›ื ืก ืฉื ืžืฉืชืžืฉ. ื”ื›ืœ ืžื•ื’ื“ืจ ื›ื”ืœื›ื” ืื ื”ืžืขืจื›ืช ื“ื•ืจืฉืช ืงื•ื“ PIN ืฉืœ ื”ืชืงืŸ.

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

9) ื”ื’ื“ืจ ืืช ื”ืžื—ืฉื‘ ื›ืš ืฉื™ื™ื—ืกื ื‘ืขืช ื—ื™ืœื•ืฅ ื”ืืกื™ืžื•ืŸ

ื›ืœื•ืœ ื‘ื—ื‘ื™ืœื” libpam-pkcs11 ืฉื™ืจื•ืช ื›ืœื•ืœ pkcs11_eventmgr, ื”ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ืคืขื•ืœื•ืช ืฉื•ื ื•ืช ื›ืืฉืจ ืžืชืจื—ืฉื™ื ืื™ืจื•ืขื™ PKCS#11.
ืœื”ื’ื“ืจื•ืช pkcs11_eventmgr ืžืฉืžืฉ ื›ืงื•ื‘ืฅ ืชืฆื•ืจื”: /etc/pam_pkcs11/pkcs11_eventmgr.conf
ืขื‘ื•ืจ ื”ืคืฆื•ืช ืœื™ื ื•ืงืก ืฉื•ื ื•ืช, ื”ืคืงื•ื“ื” ืฉื’ื•ืจืžืช ืœื—ืฉื‘ื•ืŸ ืœื”ื™ื ืขืœ ื‘ืขืช ื”ืกืจืช ื›ืจื˜ื™ืก ื—ื›ื ืื• ืืกื™ืžื•ืŸ ืชื”ื™ื” ืฉื•ื ื”. ืก"ืž. event card_remove.
ืงื•ื‘ืฅ ืชืฆื•ืจื” ืœื“ื•ื’ืžื” ืžื•ืฆื’ ืœื”ืœืŸ:

pkcs11_eventmgr
{
    # ะ—ะฐะฟัƒัะบ ะฒ ะฑัะบะณั€ะฐัƒะฝะดะต
    daemon = true;
     
    # ะะฐัั‚ั€ะพะนะบะฐ ัะพะพะฑั‰ะตะฝะธะน ะพั‚ะปะฐะดะบะธ
    debug = false;
 
    # ะ’ั€ะตะผั ะพะฟั€ะพัะฐ ะฒ ัะตะบัƒะฝะดะฐั…
    polling_time = 1;
 
    # ะฃัั‚ะฐะฝะพะฒะบะฐ ั‚ะฐะนะผ-ะฐัƒั‚ะฐ ะฝะฐ ัƒะดะฐะปะตะฝะธะต ะบะฐั€ั‚ั‹
    # ะŸะพ-ัƒะผะพะปั‡ะฐะฝะธัŽ 0
    expire_time = 0;
 
    # ะ’ั‹ะฑะพั€ pkcs11 ะฑะธะฑะปะธะพั‚ะตะบะธ ะดะปั ั€ะฐะฑะพั‚ั‹ ั ะ ัƒั‚ะพะบะตะฝ
    pkcs11_module = usr/lib/librtpkcs11ecp.so;
 
    # ะ”ะตะนัั‚ะฒะธั ั ะบะฐั€ั‚ะพะน
    # ะšะฐั€ั‚ะฐ ะฒัั‚ะฐะฒะปะตะฝะฐ:
    event card_insert {
        # ะžัั‚ะฐะฒะปัะตะผ ะทะฝะฐั‡ะตะฝะธั ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ (ะฝะธั‡ะตะณะพ ะฝะต ะฟั€ะพะธัั…ะพะดะธั‚)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # ะšะฐั€ั‚ะฐ ะธะทะฒะปะตั‡ะตะฝะฐ
    event card_remove {
        on_error = ignore;
         
        # ะ’ั‹ะทั‹ะฒะฐะตะผ ั„ัƒะฝะบั†ะธัŽ ะฑะปะพะบะธั€ะพะฒะบะธ ัะบั€ะฐะฝะฐ
        
        # ะ”ะปั GNOME 
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
        
        # ะ”ะปั XFCE
        # action = "xflock4";
        
        # ะ”ะปั Astra Linux (FLY)
        # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # ะšะฐั€ั‚ะฐ ะดะพะปะณะพะต ะฒั€ะตะผั ะธะทะฒะปะตั‡ะตะฝะฐ
    event expire_time {
        # ะžัั‚ะฐะฒะปัะตะผ ะทะฝะฐั‡ะตะฝะธั ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ (ะฝะธั‡ะตะณะพ ะฝะต ะฟั€ะพะธัั…ะพะดะธั‚)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

ืœืื—ืจ ืžื›ืŸ ื”ื•ืกืฃ ืืช ื”ืืคืœื™ืงืฆื™ื” pkcs11_eventmgr ืœื”ืคืขืœื”. ืœืฉื ื›ืš, ืขืจื•ืš ืืช ืงื•ื‘ืฅ โ€Ž.bash_profile:
$ nano /home/<ะธะผั_ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั>/.bash_profile
ื”ื•ืกืฃ ืืช ื”ืฉื•ืจื” pkcs11_eventmgr ืœืกื•ืฃ ื”ืงื•ื‘ืฅ ื•ืืชื—ืœ ืžื—ื“ืฉ.

ื”ืฉืœื‘ื™ื ื”ืžืชื•ืืจื™ื ืœื”ื’ื“ืจืช ืžืขืจื›ืช ื”ื”ืคืขืœื” ื™ื›ื•ืœื™ื ืœืฉืžืฉ ื›ื”ื•ืจืื•ืช ื‘ื›ืœ ื”ืคืฆืช ืœื™ื ื•ืงืก ืžื•ื“ืจื ื™ืช, ื›ื•ืœืœ ืžืงื•ืžื™ืช.

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ PAM ืขื‘ื•ืจ ืื™ืžื•ืช ืžืงื•ืžื™ ื‘ืœื™ื ื•ืงืก ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช GOST-2012 ื‘- Rutoken

ืžืกืงื ื”

ืžื—ืฉื‘ื™ Linux ื”ื•ืคื›ื™ื ืคื•ืคื•ืœืจื™ื™ื ื™ื•ืชืจ ื•ื™ื•ืชืจ ื‘ืกื•ื›ื ื•ื™ื•ืช ืžืžืฉืœืชื™ื•ืช ื‘ืจื•ืกื™ื”, ื•ื”ื’ื“ืจืช ืื™ืžื•ืช ื“ื•-ื’ื•ืจืžื™ ืืžื™ืŸ ื‘ืžืขืจื›ืช ื”ืคืขืœื” ื–ื• ืื™ื ื” ืชืžื™ื“ ืงืœื”. ื ืฉืžื— ืœืขื–ื•ืจ ืœืš ืœืคืชื•ืจ ืืช "ื‘ืขื™ื™ืช ื”ืกื™ืกืžื”" ื‘ืืžืฆืขื•ืช ืžื“ืจื™ืš ื–ื” ื•ืœื”ื’ืŸ ื‘ืฆื•ืจื” ืžื”ื™ืžื ื” ืขืœ ื”ื’ื™ืฉื” ืœืžื—ืฉื‘ ื”ืื™ืฉื™ ืฉืœืš ืžื‘ืœื™ ืœื‘ื–ื‘ื– ืขืœ ื–ื” ื–ืžืŸ ืจื‘.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”