ΠΡΠΎΡΡΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½Π΅ Π·Π°ΡΠΈΡΠ°ΡΡ, Π° ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΈΠΊΠ΅ΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΠΈΠ»ΠΈ Π½Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΎΡΡΠ°Π²Π°Π»ΠΈΡΡ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ
βΠ·Π°Π±ΡΠ²ΡΠΈΠ²ΡΡ
β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ Π·Π°ΡΠΈΡΡ Π½Π΅ ΡΠ΅ΡΡΠ»Π°ΡΡ β Π΅ΡΡΡ Π΄Π²ΡΡ
ΡΠ°ΠΊΡΠΎΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (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 <no label>
β Π·Π½Π°ΡΠΈΡ Π²ΡΡ Ρ
ΠΎΡΠΎΡΠΎ.
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 ΠΈ ΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π΄ΠΎΠ²Π΅ΡΠΈΡ.
ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΡΡ (ΡΠ΅ΡΠ΅Π· Π±ΡΠ°ΡΠ·Π΅Ρ)
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
ΠΡΡΡ Π³ΠΈΠΊΠ° (ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ)
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²Π΅ΡΡΠΈΡ OpenSC
$ opensc-tool --version
ΠΡΠ»ΠΈ Π²Π΅ΡΡΠΈΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ 0.20, ΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅
ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΠ°ΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ:
--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Β». ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
$ ./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
:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /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