
ΠΡΠΎΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π°Ρ, Π° ΡΠ»ΠΎΠΆΠ½ΠΈΡΠ΅ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠΌΠ½ΡΡ. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°Ρ Π½Π° ΡΡΠΈΠΊΠ΅Ρ ΠΏΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°ΡΠ° ΠΈΠ»ΠΈ Π½Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°. ΠΠ° Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ ΠΏΠ°ΡΠΎΠ»ΠΈΡΠ΅ Π² Π³Π»Π°Π²ΠΈΡΠ΅ Π½Π° βΠ·Π°Π±ΡΠ°Π²ΡΡΠΈΡΠ΅β ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ Π·Π°ΡΠΈΡΠ°ΡΠ° Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π° β ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄Π²ΡΡΠ°ΠΊΡΠΎΡΠ½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ (2Π€Π).
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° ΠΎΡ ΡΠ°ΠΊΡΠΎΡΠ° Π½Π° ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ ΠΈ Π·Π½Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ PIN-ΠΊΠΎΠ΄, ΡΠ°ΠΌΠΈΡΡ PIN-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎ-ΠΏΡΠΎΡΡ ΠΈ Π»Π΅ΡΠ΅Π½ Π·Π° Π·Π°ΠΏΠΎΠΌΠ½ΡΠ½Π΅. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π² Π΄ΡΠ»ΠΆΠΈΠ½Π°ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎΡΡΡΠ° Π½Π° PIN-ΠΊΠΎΠ΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠ°Ρ ΠΎΡ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ΡΠΎ Π·Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π½ΠΈΠ΅ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΠΎΠΏΠΈΡ Π·Π° ΡΠ°Π·Π±ΠΈΠ²Π°Π½Π΅ Π½Π° PIN-ΠΊΠΎΠ΄Π°.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² Π΄ΡΡΠΆΠ°Π²Π½ΠΈΡΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΈΡΠΊΠ°Ρ Π²ΡΠΈΡΠΊΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΠΠΠ‘Π’. ΠΠ° ΡΠ°ΠΊΡΠ² Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° 2Π€Π Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π² ΠΠΈΠ½ΡΠΊΡ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ. Π©Π΅ Π·Π°ΠΏΠΎΡΠ½Π° ΠΎΡΠ΄Π°Π»Π΅Ρ.
PAM ΠΌΠΎΠ΄ΡΠ»ΠΈ
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ²Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ (Pluggable Authentication Modules, PAM) β ΡΠΎΠ²Π° ΡΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ API ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°.
ΠΡΠΈΡΠΊΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ PAM, Π³ΠΈ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Ρ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½: ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° login ΡΠ΅ ΠΎΠ±ΡΡΡΠ° ΠΊΡΠΌ PAM, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅, ΡΠΊΠ°Π·Π°Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ», ΠΈ Π²ΡΡΡΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° login.
librtpam
Π Π°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Β«ΠΠΊΡΠΈΠ²Β» ΠΌΠΎΠ΄ΡΠ» Π΄ΠΎΠ±Π°Π²Ρ Π΄Π²ΡΡΠ°ΠΊΡΠΎΡΠ½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΌΠ°ΡΡ ΠΊΠ°ΡΡΠΈ ΠΈΠ»ΠΈ USB ΡΠΎΠΊΠ΅Π½ΠΈ Ρ Π°ΡΠΈΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ Π½Π° ΠΎΡΠ΅ΡΠ΅ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ.
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°:
- Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΡ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»ΡΡ;
- ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡΡ Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΊΠ°ΡΠΎ Π΄ΠΎΠ²Π΅ΡΠ΅Π½.
ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΡΠΈΡΠ° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
- ΠΠ° Π ΡΡΠΎΠΊΠ΅Π½Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° Π»ΠΈΡΠ½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
- ΠΡΠΊΠ° ΡΠ΅ PIN ΠΊΠΎΠ΄ΡΡ Π½Π° ΡΠΎΠΊΠ΅Π½Π°.
- ΠΠ·Π²ΡΡΡΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΡΠΈΠΏΠ° Π½Π° Π ΡΡΠΎΠΊΠ΅Π½Π°.
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
- ΠΠΎΠ΄ΡΠ»ΡΡ Π²ΡΡΡΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ°Π»ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ.
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠΈΡΠ°ΡΠ΅ ΠΏΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΠΠ‘Π’ Π 34.10-2012 (Π΄ΡΠ»ΠΆΠΈΠ½ΠΈ 256 ΠΈΠ»ΠΈ 512 Π±ΠΈΡΠ°) ΠΈΠ»ΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈΡ ΠΠΠ‘Π’ Π 34.10-2001.
ΠΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ β ΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² Π ΡΡΠΎΠΊΠ΅Π½Π° ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π½Π°ΠΏΡΡΠΊΠ°Ρ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.

Π ΡΡΠΎΠΊΠ΅Π½ ΠΠ¦Π 2.0 Π΅ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΎΡ Π€Π‘Π ΠΈ Π€Π‘Π’ΠΠ ΠΏΠΎ ΠΠΠ 4, Π·Π°ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΠΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π° Π²ΡΡΠΊΠ° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π° ΠΠΈΠ½ΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ xUbuntu 18.10.
1) ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ
sudo apt-get install libccid pcscd opensc
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠ»ΠΎΡ Ρ Π΅ΠΊΡΠ°Π½Π½Π° Π·Π°ΡΠΈΡΠ° β Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° libpam-pkcs11.
2) ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ PAM ΠΌΠΎΠ΄ΡΠ» Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΠΠ‘Π’-ΠΎΠ²Π΅
ΠΠ°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Ρ
ΠΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΏΠΊΠ°ΡΠ° PAM librtpam.so.1.0.0 Π² ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ°
/usr/lib/ ΠΈΠ»ΠΈ /usr/lib/x86_64-linux-gnu/ΠΈΠ»ΠΈ /usr/lib64
3) ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ librtpkcs11ecp.so
Π‘Π²Π°Π»ΡΠΌΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ DEB ΠΈΠ»ΠΈ RPM ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠ΅Π· ΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ°:
4) ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ Π ΡΡΠΎΠΊΠ΅Π½ ΠΠ¦Π 2.0 ΡΠ°Π±ΠΎΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°
Π ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π΄Π° Rutoken ECP β Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄.
5) Π§Π΅ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°
ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
ΠΠΊΠΎ ΡΠ»Π΅Π΄ ΡΠ΅Π΄Π°:
Using slot 0 with a present token (0x0)
- ΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠ° ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΡΠ΄Π΅ΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ {id} ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΠ΅ 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 ΠΈ Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° Π²Π΅ΡΠΈΠ³ΠΈ Π½Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅.
ΠΡΠΎΡΡ Π½Π°ΡΠΈΠ½ (ΡΡΠ΅Π· Π±ΡΠ°ΡΠ·ΡΡ)
ΠΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ . ΠΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 5 ΠΌΠΈΠ½ΡΡΠΈ.
ΠΡΡΡΡ Π½Π° Ρ Π°ΠΊΠ΅ΡΠ° (ΡΡΠ΅Π· ΠΊΠΎΠ½Π·ΠΎΠ»Π° ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ)
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° OpenSC
$ opensc-tool --version
ΠΠΊΠΎ Π²Π΅ΡΡΠΈΡΡΠ° Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ° ΠΎΡ 0.20, ΠΎΠ±Π½ΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡ Π½Π°ΡΠΈΡ GitHub (Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π²Π΅ΡΡΠΈΡ 0.20 Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½Π°) ΠΈΠ»ΠΈ ΠΎΡ ΠΊΠ»ΠΎΠ½Π° master Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ OpenSC Π½Π΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΎΡ
ΠΠ΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π° Π΄Π²ΠΎΠΉΠΊΠ° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
--key-type: GOSTR3410-2012-512:Π (ΠΠΠ‘Π’-2012 512 Π±ΠΈΡΠ° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π), GOSTR3410-2012-256:A (ΠΠΠ‘Π’-2012 256 Π±ΠΈΡΠ° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ A)
--id: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° (CKA_ID) ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π΄Π²ΡΠ·Π½Π°ΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² hex ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ASCII. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ°ΠΌΠΎ ASCII ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΠΏΠ΅ΡΠ°ΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ id ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ Π½Π° OpenSSL ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½ΠΈΠ·. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ASCII ΠΊΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ β3132β ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½ΠΈΠ·ΡΡ β12β. ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ .
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π΄Π²Π° Π½Π°ΡΠΈΠ½Π°: ΠΏΡΡΠ²ΠΈΡΡ ΡΡΠ΅Π· Π£Π¦ (ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π£Π¦), Π²ΡΠΎΡΠΈΡΡ β ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½. ΠΠ° ΡΠ΅Π»ΡΠ° ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΠ΅ OpenSSL Π²Π΅ΡΡΠΈΡ 1.1 ΠΈΠ»ΠΈ ΠΏΠΎ-Π½ΠΎΠ²Π°, Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π ΡΡΠΎΠΊΠ΅Π½ ΡΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ» rtengine, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ .
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: Π·Π° β--id 3132β Π² OpenSSL ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ βpkcs11:id=12Β«.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ Π£Π¦, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, , ΠΈ , Π·Π° ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ
ΠΡΡΠ³ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄Π°Π΄Π΅ΡΠ΅ Π½Π° ΠΌΡΡΠ·Π΅Π» ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½
$ openssl req -utf8 -Π½ΠΎΠ² -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 ΡΠ°ΠΉΠ»:

ΠΠΊΠΎ Π²Π°ΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:

ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΎΡ 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 ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π°, Π΄Π°Π»ΠΈ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°.
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΈΠΌΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°:
- required (Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½): ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΠ½Π°Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ. ΠΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΡΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ° Π² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°. ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΎ, Π½ΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ.
- requisite (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ): ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° required, Π½ΠΎ Π²Π΅Π΄Π½Π°Π³Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΡΠΎΠ²Π°Π» Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠ° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
- sufficient (Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½): Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ ΡΠ°ΠΊΡΠ² ΠΌΠΎΠ΄ΡΠ» Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ required ΠΈΠ»ΠΈ sufficient Π½Π΅ Π΅ Π²ΡΡΠ½Π°Π» ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, ΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΡΡ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ. ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½ΠΈ.
- optional (Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½): Π°ΠΊΠΎ Π² ΡΡΠ΅ΠΊΠ° Π½ΡΠΌΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ required ΠΈ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ sufficient Π½Π΅ Π΅ Π²ΡΡΠ½Π°Π» ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, ΡΠΎ ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ optional ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΠ½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ.
ΠΡΠ»Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ»Π° /usr/share/pam-configs/rutoken-gost-pam:
ΠΠΌΠ΅: Rutoken PAM GOST
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅: Π΄Π°
ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ: 800
Π’ΠΈΠΏ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅: ΠΡΠ½ΠΎΠ²Π΅Π½
Π£Π΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅: Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΉΠ»Π°, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅
$ sudo pam-auth-update
Π² ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΡΠ»Π°Π³Π°ΠΌΠ΅ Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ Rutoken PAM GOST ΠΈ Π½Π°ΡΠΈΡΠΊΠ°ΠΌΠ΅ OK

8) ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ, Π½ΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π½Π΅ Π·Π°Π³ΡΠ±ΠΈΠΌ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π²Ρ
ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
$ sudo login
ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅. ΠΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, Π°ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΏΠΎΠΈΡΠΊΠ° PIN-ΠΊΠΎΠ΄ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ.

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 ΠΈ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅.
ΠΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π° Linux, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΠΌΠ΅ΡΡΠ½ΠΈ.

ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ Ρ Linux Π² ΡΡΡΠΊΠΈΡΠ΅ Π΄ΡΡΠΆΠ°Π²Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΡΡΠ°Π²Π°Ρ Π²ΡΠ΅ ΠΏΠΎ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ, Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° Π΄Π²ΡΡΠ°ΠΊΡΠΎΡΠ½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Π² ΡΠ°Π·ΠΈ ΠΠ‘ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π»Π΅ΡΠ½Π°. Π©Π΅ ΡΠ΅ ΡΠ°Π΄Π²Π°ΠΌΠ΅ Ρ ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈ "ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠ°ΡΠΎΠ»ΠΈΡΠ΅" ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ Π΄Π° Π·Π°ΡΠΈΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΠ, Π±Π΅Π· Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΠΎΡΠ΄Π΅Π»ΡΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠΎΠ²Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
