เชธเชฐเชณ เชชเชพเชธเชตเชฐเซเชกเซเชธ เชธเซเชฐเชเซเชทเชฟเชค เชจเชฅเซ เช
เชจเซ เชเชเชฟเชฒ เชชเชพเชธเชตเชฐเซเชกเซเชธ เชฏเชพเชฆ เชฐเชพเชเชตเชพ เช
เชถเชเซเชฏ เชเซ. เชคเซเชฅเซ เช เชคเซเช เชเซเชฌเซเชฐเซเชก เชนเซเช เชณ เช
เชฅเชตเชพ เชฎเซเชจเชฟเชเชฐ เชชเชฐ เชเชฃเซ เชตเชพเชฐ เชธเซเชเซเชเซ เชจเซเช เชชเชฐ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เชเซ. เชชเชพเชธเชตเชฐเซเชกเซเชธ "เชญเซเชฒเซ เชเชฏเซเชฒเชพ" เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเชพ เชฎเชเชเชฎเชพเช เชฐเชนเซ เช
เชจเซ เชธเซเชฐเชเซเชทเชพเชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏเชคเชพ เชเซเชตเชพเช เชจ เชเชพเชฏ เชคเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชฌเซ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ (2FA) เชเซ.
เชเชชเชเชฐเชฃเชจเซ เชฎเชพเชฒเชฟเชเซ เช เชจเซ เชคเซเชจเซ PIN เชเชพเชฃเชตเชพเชจเชพ เชธเชเชฏเซเชเชจเชจเซ เชฒเซเชงเซ, PIN เชชเซเชคเซ เช เชธเชฐเชณ เช เชจเซ เชฏเชพเชฆ เชฐเชพเชเชตเชพเชฎเชพเช เชธเชฐเชณ เชฌเชจเซ เชถเชเซ เชเซ. PIN เชฒเชเชฌเชพเช เช เชฅเชตเชพ เชฐเซเชจเซเชกเชฎเชจเซเชธเชฎเชพเช เชเซเชฐเชซเชพเชฏเชฆเชพ เชญเซเชคเชฟเช เชเชฌเชเชพเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชค เช เชจเซ PIN เชฌเซเชฐเซเช เชซเซเชฐเซเชธ เชชเชฐเชจเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃเซ เชฆเซเชตเชพเชฐเชพ เชธเชฐเชญเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชตเชงเซเชฎเชพเช, เชคเซ เชธเชฐเชเชพเชฐเซ เชเชเชจเซเชธเซเชเชฎเชพเช เชฅเชพเชฏ เชเซ เชเซ เชคเซเช เชเชเซเชเซ เชเซ เชเซ เชฌเชงเซเช เช GOST เช เชจเซเชธเชพเชฐ เชเชพเชฐเซเชฏ เชเชฐเซ. Linux เชฎเชพเช เชฒเซเช เชเชจ เชเชฐเชตเชพ เชฎเชพเชเซเชจเชพ เช 2FA เชตเชฟเชเชฒเซเชชเชจเซ เชเชฐเซเชเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. เชนเซเช เชฆเซเชฐเชฅเซ เชถเชฐเซ เชเชฐเซเชถ.
PAM เชฎเซเชกเซเชฏเซเชฒเซ
เชชเซเชฒเชเซเชฌเชฒ เชเชฅเซเชจเซเชเชฟเชเซเชถเชจ เชฎเซเชกเซเชฏเซเชฒเซเชธ (PAM) เช เชธเซเชเชพเชจเซเชกเชฐเซเชก API เช
เชจเซ เชเชชเซเชฒเซเชเซเชถเชจเชฎเชพเช เชตเชฟเชตเชฟเชง เชเชฅเซเชจเซเชเชฟเชเซเชถเชจ เชฎเชฟเชเซเชจเชฟเชเชฎเซเชธเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃ เชธเชพเชฅเซเชจเชพ เชฎเซเชกเซเชฏเซเชฒเซ เชเซ.
เชคเชฎเชพเชฎ เชเชชเชฏเซเชเชฟเชคเชพเช เช
เชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชเซ PAM เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซ เชถเชเซ เชเซ เชคเซ เชคเซเชฎเชจเซ เชชเชธเชเชฆ เชเชฐเซ เชเซ เช
เชจเซ เชคเซเชจเซ เชเชชเชฏเซเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เชฎเชพเชเซ เชเชฐเซ เชถเชเซ เชเซ.
เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช, เชคเซ เชเชเชเช เชเชจเชพ เชเซเชตเซเช เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ: เชฒเซเชเชฟเชจ เชเชฎเชพเชจเซเชก PAM เชจเซ เชเซเชฒ เชเชฐเซ เชเซ, เชเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชฎเซเชกเซเชฏเซเชฒเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเชฎเชพเชฎ เชเชฐเซเชฐเซ เชคเชชเชพเชธ เชเชฐเซ เชเซ เช
เชจเซ เชชเชฐเชฟเชฃเชพเชฎเชจเซ เชฒเซเชเชฟเชจ เชเชฆเซเชถ เชชเชฐ เชชเชพเชเซเช เชเชชเซ เชเซ.
librtpam
เชเชเซเชเชฟเชต เชเชเชชเชจเซ เชฆเซเชตเชพเชฐเชพ เชตเชฟเชเชธเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฒ เชฎเซเชกเซเชฏเซเชฒ เชเชฐเซเชฒเซเช เชเซเชฐเชฟเชชเซเชเซเชเซเชฐเชพเชซเซเชจเชพ เชจเชตเซเชจเชคเชฎ เชงเซเชฐเชฃเซ เช เชจเซเชธเชพเชฐ เช เชธเชฎเชชเซเชฐเชฎเชพเชฃ เชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเซเชฎเชพเชฐเซเช เชเชพเชฐเซเชกเซเชธ เช เชฅเชตเชพ เชฏเซเชเชธเชฌเซ เชเซเชเชจเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชคเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเซเช เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เชเชฎเซเชฐเซ เชเซ.
เชเชพเชฒเซ เชคเซเชจเชพ เชเชชเชฐเซเชถเชจเชจเชพ เชธเชฟเชฆเซเชงเชพเชเชคเชจเซ เชเซเชเช:
- เชเซเชเชจ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช เชจเซ เชคเซเชจเซ เชเชพเชจเชเซ เชเซเชจเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ;
- เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชนเซเชฎ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชคเชฐเซเชเซ เชธเชพเชเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชจเซเชเซ เชฎเซเชเชฌ เชฅเชพเชฏ เชเซ:
- Rutoken เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเชพ เชตเซเชฏเชเซเชคเชฟเชเชค เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฎเชพเชเซ เชถเซเชง เชเชฐเซ เชเซ.
- เชเซเชเชจ เชชเชฟเชจ เชฎเชพเชเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เชฐเซเชจเซเชกเชฎ เชกเซเชเชพ เชธเซเชงเชพ เชฐเซเชเซเชเชจ เชเชฟเชชเชฎเชพเช เชเชพเชจเชเซ เชเซ เชชเชฐ เชธเชนเซ เชฅเชฏเซเชฒ เชเซ.
- เชชเชฐเชฟเชฃเชพเชฎเซ เชนเชธเซเชคเชพเชเซเชทเชฐ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชฎเชพเชเชฅเซ เชเชพเชนเซเชฐ เชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชเชพเชธเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เชฎเซเชกเซเชฏเซเชฒ เชเซเชฒเชฟเชเช เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชธเชนเซ เชเชเชพเชธเชฃเซ เชชเชฐเชฟเชฃเชพเชฎ เชชเชฐเชค เชเชฐเซ เชเซ.
เชคเชฎเซ GOST R 34.10-2012 เชเซ (เชฒเชเชฌเชพเช 256 เช เชฅเชตเชพ 512 เชฌเชฟเชเซเชธ) เช เชฅเชตเชพ เชเซเชจเชพ GOST R 34.10-2001 เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเซ เชถเชเซ เชเซ.
เชคเชฎเชพเชฐเซ เชเชพเชตเซเชเชจเซ เชธเซเชฐเชเซเชทเชพ เชตเชฟเชถเซ เชเชฟเชเชคเชพ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ - เชคเซ เชธเซเชงเซ เชฐเซเชเซเชเซเชจเชฎเชพเช เชเชจเชฐเซเช เชฅเชพเชฏ เชเซ เช เชจเซ เชเซเชฐเชฟเชชเซเชเซเชเซเชฐเชพเชซเชฟเช เชเชพเชฎเชเซเชฐเซ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชคเซเชจเซ เชฎเซเชฎเชฐเซ เชเซเชฏเชพเชฐเซเชฏ เชเซเชกเชคเซ เชจเชฅเซ.
Rutoken EDS 2.0 เชจเซ NDV 4 เช
เชจเซเชธเชพเชฐ FSB เช
เชจเซ FSTEC เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฅเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเซเชชเซเชค เชฎเชพเชนเชฟเชคเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชคเซ เชฎเชพเชนเชฟเชคเซ เชชเซเชฐเชฃเชพเชฒเซเชเชฎเชพเช เชฅเช เชถเชเซ เชเซ.
เชตเซเชฏเชตเชนเชพเชฐเซ เชเชชเชฏเซเช
เชฒเชเชญเช เชเซเชเชชเชฃ เชเชงเซเชจเชฟเช Linux เชเชฐเชถเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชเชชเชฃเซ xUbuntu 18.10 เชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช.
1) เชเชฐเซเชฐเซ เชชเซเชเซเชเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ
sudo apt-get install libccid pcscd opensc
เชเซ เชคเชฎเซ เชธเซเชเซเชฐเซเชจเชธเซเชตเชฐ เชธเชพเชฅเซ เชกเซเชธเซเชเชเซเชช เชฒเซเช เชเชฎเซเชฐเชตเชพ เชฎเชพเชเชเซ เชเซ, เชคเซ เชชเซเชเซเชเชจเซ เชตเชงเซเชฎเชพเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ libpam-pkcs11
.
2) GOST เชธเชชเซเชฐเซเช เชธเชพเชฅเซ PAM เชฎเซเชกเซเชฏเซเชฒ เชเชฎเซเชฐเซ
เชฅเซ เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชฒเซเชก เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
PAM เชซเซเชฒเซเชกเชฐเชจเซ เชธเชพเชฎเชเซเชฐเซเชจเซ librtpam.so.1.0.0 เชธเชฟเชธเซเชเชฎ เชซเซเชฒเซเชกเชฐเชฎเชพเช เชเซเชชเชฟ เชเชฐเซ
/usr/lib/
เช
เชฅเชตเชพ /usr/lib/x86_64-linux-gnu/
เช
เชฅเชตเชพ /usr/lib64
3) librtpkcs11ecp.so เชธเชพเชฅเซ เชชเซเชเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ
เชฒเชฟเชเช เชชเชฐเชฅเซ DEB เช
เชฅเชตเชพ RPM เชชเซเชเซเช เชกเชพเชเชจเชฒเซเชก เช
เชจเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
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} เชจเซ เชฌเชฆเชฒเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ 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) ASCII เชเซเชทเซเชเชเชฎเชพเชเชฅเซ เชฌเซ-เช
เชเชเชจเชพ เชนเซเชเซเชธ เช
เชเซเชทเชฐ เชจเชเชฌเชฐเซ เชคเชฐเซเชเซ. เชเชพเชชเชตเชพ เชฏเซเชเซเชฏ เช
เชเซเชทเชฐเซ เชฎเชพเชเซ เชฎเชพเชคเซเชฐ ASCII เชเซเชกเชจเซ เชเชชเชฏเซเช เชเชฐเซ, เชเชพเชฐเชฃ เชเซ... id เชจเซ เชธเซเชเซเชฐเชฟเชเช เชคเชฐเซเชเซ OpenSSL เชจเซ เชชเชพเชธ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, ASCII เชเซเชก โ3132โ เชถเชฌเซเชฆเชฎเชพเชณเชพ โ12โ เชจเซ เช
เชจเซเชฐเซเชช เชเซ. เชธเชเชตเชก เชฎเชพเชเซ, เชคเชฎเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
เชเชเชณ เชเชชเชฃเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฌเชจเชพเชตเซเชถเซเช. เชจเซเชเซ เชฌเซ เชฐเซเชคเซเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ: เชชเซเชฐเชฅเชฎ CA เชฆเซเชตเชพเชฐเชพ เชเซ (เช
เชฎเซ เชเซเชธเซเช CA เชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช), เชฌเซเชเซ เชธเซเชต-เชธเชนเซ เชเชฐเซเชฒ เชเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชชเชนเซเชฒเชพ เชฎเซเชจเซเชฏเซเช
เชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเซเชชเซเชถเชฟเชฏเชฒ rtengine เชฎเซเชกเซเชฏเซเชฒ เชฆเซเชตเชพเชฐเชพ Rutoken เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ OpenSSL เชตเชฐเซเชเชจ 1.1 เช
เชฅเชตเชพ เชชเชเซเชจเซเช เชเชจเซเชธเซเชเซเชฒ เช
เชจเซ เชเซเช เชตเชตเซเช เชชเชกเชถเซ.
เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ: '- เชฎเชพเชเซ-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 เชซเชพเชเชฒ เชเซเชตเซเช เชฒเชพเชเซ เชเซ:
เชเซ เชคเชฎเชพเชฐเซเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชเชจเชพ เชเซเชตเซเช เชฒเชพเชเซ เชเซ:
เชชเชเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซ 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
เชซเชพเชเชฒ เชธเชพเชเชตเซ, เชชเชเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเซ
$ 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
เชตเชฟเชตเชฟเชง Linux เชตเชฟเชคเชฐเชฃเซ เชฎเชพเชเซ, เชธเซเชฎเชพเชฐเซเช เชเชพเชฐเซเชก เช
เชฅเชตเชพ เชเซเชเชจ เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ เชเชเชพเชเชจเซเช เชฒเซเช เชฅเชตเชพเชจเซเช เชเชพเชฐเชฃ เชฌเชจเซ เชคเซ เชเชฆเซเชถ เช
เชฒเช เชนเชถเซ. เชธเซเชฎเซ. 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 เชตเชฟเชคเชฐเชฃเชฎเชพเช เชธเซเชเชจเชพเช เชคเชฐเซเชเซ เชฅเช เชถเชเซ เชเซ.
เชจเชฟเชทเซเชเชฐเซเชท
เชฒเชฟเชจเชเซเชธ เชชเซเชธเซ เชฐเชถเชฟเชฏเชจ เชธเชฐเชเชพเชฐเซ เชเชเชจเซเชธเซเชเชฎเชพเช เชตเชงเซเชจเซ เชตเชงเซ เชฒเซเชเชชเซเชฐเชฟเชฏ เชฌเชจเซ เชฐเชนเซเชฏเชพ เชเซ, เช
เชจเซ เช OS เชฎเชพเช เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เชธเซเช เชเชฐเชตเซเช เชนเชเชฎเซเชถเชพ เชธเชฐเชณ เชจเชฅเซ. เช เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพ เชตเชกเซ เชคเชฎเชจเซ "เชชเชพเชธเชตเชฐเซเชก เชธเชฎเชธเซเชฏเชพ" เชเชเซเชฒเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชตเชพเชฎเชพเช เช
เชฎเชจเซ เชเชจเชเชฆ เชฅเชถเซ เช
เชจเซ เชคเซเชจเชพ เชชเชฐ เชเชฃเซ เชธเชฎเชฏ เชตเชฟเชคเชพเชตเซเชฏเชพ เชตเชฟเชจเชพ เชคเชฎเชพเชฐเชพ PCเชจเซ เชเชเซเชธเซเชธเชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชฐเซเชคเซ เชธเซเชฐเชเซเชทเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชธเซเชฐเซเชธ: www.habr.com