
ΠΡΠΎΡΡΠΈΡΠ΅, Π½ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ΅ Π»ΠΈ Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π°, Π° ΡΠ»ΠΎΠΆΠ½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°Ρ Π½Π° ΡΡΠΈΠΊΠ΅Ρ ΠΏΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°ΡΠ° ΠΈΠ»ΠΈ Π½Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°. ΠΠ° Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈΡΠ΅ Π² Π³Π»Π°Π²ΠΈΡΠ΅ Π½Π° "Π·Π°Π±ΡΠ°Π²ΡΡΠΈΡΠ΅" ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° Π·Π°ΡΠΈΡΠ°ΡΠ° Π΄Π° Π½Π΅ ΡΠ΅ Π³ΡΠ±ΠΈ β ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄Π²ΡΡΠ°ΠΊΡΠΎΡΠ½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (2Π€Π).
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° ΠΎΡ ΡΠ°ΠΊΡΠΎΡΠΈ Π·Π° ΠΏΡΠΈΡΠ΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ Π·Π½Π°Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ 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, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΅ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Linux, Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ 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 Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½Π°) ΠΈΠ»ΠΈ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenSC Π½Π΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΎΡ
ΠΠ΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π° Π΄Π²ΠΎΠΉΠΊΠ° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
--key-type: GOSTR3410-2012-512:A (ΠΠΠ‘Π’-2012 512 Π±ΠΈΡΠ° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ A), 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 -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 ΡΠ°ΠΉΠ»:

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

ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΎΡ ΡΠΎΡΠΌΠ°Ρ 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
Auth-Type: ΠΡΠ½ΠΎΠ²Π΅Π½
Auth: Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

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

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

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
