เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจ•เจฐเจจ เจฒเจˆ เจฐเฉเจŸเฉ‹เจ•เจจ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ…เจจเฉเจญเจต (เจญเจพเจ— 3)

เจšเฉฐเจ—เจพ เจฆเจฟเจจ!

เจชเจฟเจ›เจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจ†เจชเจฃเจพ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจ•เฉ‡เจ‚เจฆเจฐ เจฌเจฃเจพเจ‡เจ† เจนเฉˆเฅค เจ‡เจน เจธเจพเจกเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ?

เจ‡เฉฑเจ• เจธเจฅเจพเจจเจ• เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจ…เจฅเจพเจฐเจŸเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ 'เจคเฉ‡ เจฆเจธเจคเจ–เจคเจพเจ‚ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจ•เจฟเจธเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡, เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ เจ…เจฅเจพเจฐเจŸเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเฉ‡เจจเจคเฉ€ Pkcs#10 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš '.csr' เจซเจพเจˆเจฒ เจซเจพเจฐเจฎเฉˆเจŸ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฌเฉ‡เจจเจคเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจจเจ•เฉ‹เจก เจ•เฉ€เจคเจพ เจ•เฉเจฐเจฎ เจธเจผเจพเจฎเจฒ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ เจ…เจฅเจพเจฐเจŸเฉ€ เจœเจพเจฃเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจชเจพเจฐเจธ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจฌเฉ‡เจจเจคเฉ€ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจœเจจเจคเจ• เจ•เฉเฉฐเจœเฉ€ เจ…เจคเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจกเฉ‡เจŸเจพ (เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจนเจฟเจฏเฉ‹เจ—เฉ€ เจเจฐเฉ‡) เจฆเฉ‹เจตเฉ‡เจ‚ เจธเจผเจพเจฎเจฒ เจนเจจเฅค

เจ…เจธเฉ€เจ‚ เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจฌเจพเจฐเฉ‡ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡, เจ…เจคเฉ‡ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ เจ…เจฅเจพเจฐเจŸเฉ€ เจฆเฉ€เจ†เจ‚ เจฎเฉเฉฑเจ– เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจœเฉ‹ เจฌเฉˆเจ•เจเจ‚เจก เจตเจพเจฒเฉ‡ เจชเจพเจธเฉ‡ เจธเจพเจกเฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐเจจเจ—เฉ‡เฅค

เจ‡เจธ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

openssl ca -batch -in user.csr -out user.crt

ca เจ“เจชเจจSSL เจ•เจฎเจพเจ‚เจก เจนเฉˆ เจœเฉ‹ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจ…เจฅเจพเจฐเจŸเฉ€ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆ,
-เจฌเฉˆเจš - เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจชเฉเจธเจผเจŸเฉ€ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฐเฉฑเจฆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
user.csr โ€” เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ (.csr เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒ)เฅค
user.crt - เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ (เจ•เจฎเจพเจ‚เจก เจฆเจพ เจจเจคเฉ€เจœเจพ)เฅค

เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ เจ…เจฅเจพเจฐเจŸเฉ€ เจจเฉ‚เฉฐ เจตเจฐเจฃเจจ เจ•เฉ€เจคเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจฌเจฟเจฒเจ•เฉเจฒ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจฒเฉ‡เจ– เจฆเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš. เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจธเจผเจจ เจ…เจฅเจพเจฐเจŸเฉ€ เจฆเฉ‡ เจฐเฉ‚เจŸ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเจพ เจธเจฅเจพเจจ เจตเฉ€ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจคเจธเจฆเฉ€เจ• เจนเฉเจ•เจฎ:

openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/โ€ฆโ€ฆ/demoCA/ca.crt -out data.file

cms เจ‡เฉฑเจ• openSSL เจ•เจฎเจพเจ‚เจก เจนเฉˆ เจœเฉ‹ OpenSSL เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจพเจˆเจจ เจ•เจฐเจจ, เจคเจธเจฆเฉ€เจ• เจ•เจฐเจจ, เจเจจเจ•เฉเจฐเจฟเจชเจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจฟเจ• เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

-verify - เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

authenticate.cms - เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจจเจพเจฒ เจฆเจธเจคเจ–เจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจนเจจ เจœเฉ‹ เจชเจฟเจ›เจฒเฉ€ เจ•เจฎเจพเจ‚เจก เจฆเฉเจ†เจฐเจพ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

-inform PEM - PEM เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

-CAfile /Users/โ€ฆโ€ฆ/demoCA/ca.crt - เจฐเฉ‚เจŸ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเจพ เจฎเจพเจฐเจ—เฅค (เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‡เจน เจ•เจฎเจพเจ‚เจก เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€ เจธเฉ€, เจนเจพเจฒเจพเจ‚เจ•เจฟ ca.crt เจฆเฉ‡ เจฎเจพเจฐเจ— openssl.cfg เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‡ เจ—เจ เจธเจจ)

-out data.file โ€” เจฎเฉˆเจ‚ เจกเฉ€เจ•เฉเจฐเจฟเจชเจŸเจก เจกเฉ‡เจŸเจพ เจซเจพเจˆเจฒ data.file เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเจพ เจนเจพเจ‚เฅค

เจฌเฉˆเจ•เจเจ‚เจก เจธเจพเจˆเจก 'เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ เจ…เจฅเจพเจฐเจŸเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจนเฉˆ:

  • เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฐเจœเจฟเจธเจŸเฉเจฐเฉ‡เจธเจผเจจ:
    1. เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ user.csr เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเฉ‡เจต เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
    2. เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ€ เจชเจนเจฟเจฒเฉ€ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ .bat เจœเจพเจ‚ .cmd เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจ‡เจธ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจชเจนเจฟเจฒเจพเจ‚ user.csr เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจธเฉ€เฅค เจธเจพเจจเฉ‚เฉฐ user.crt เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
    3. เจ…เจธเฉ€เจ‚ user.crt เจซเจพเจˆเจฒ เจชเฉœเฉเจนเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚เฅค

  • เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจงเจฟเจ•เจพเจฐ:
    1. เจ…เจธเฉ€เจ‚ เจ•เจฒเจพเจ‡เฉฐเจŸ เจคเฉ‹เจ‚ เจนเจธเจคเจพเจ–เจฐเจฟเจค เจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ authenticate.cms เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค
    2. เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ€ เจฆเฉ‚เจœเฉ€ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ .bat เจœเจพเจ‚ .cmd เจตเจพเจฒเฉ€ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเฉ‹เฅค เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ authenticate.cms เจตเจฟเฉฑเจš เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจฆเจธเจคเจ–เจค เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจ‡เจธ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจกเฉ€เจ•เฉเจฐเจฟเจชเจŸเจก เจกเฉ‡เจŸเจพ data.file เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค
    3. เจ…เจธเฉ€เจ‚ data.file เจชเฉœเฉเจนเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจตเฉˆเจงเจคเจพ เจฒเจˆ เจ‡เจธ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจฌเจฟเจฒเจ•เฉเจฒ เจ•เจฟเจธ เจšเฉ€เจœเจผ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเฉ€ เจนเฉˆ เจฌเจพเจฐเฉ‡ เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจชเจนเจฟเจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš. เจœเฉ‡เจ•เจฐ เจกเฉ‡เจŸเจพ เจตเฉˆเจง เจนเฉˆ, เจคเจพเจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจงเจฟเจ•เจพเจฐ เจจเฉ‚เฉฐ เจธเจซเจฒ เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เจนเจจเจพเจ‚ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจฌเฉˆเจ•เจเจ‚เจก เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฒเจˆ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจฐเฉ€เจŸเฉ‹เจ•เจจ เจชเจฒเฉฑเจ—เจ‡เจจ เจจเจพเจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจคเฉเจนเจพเจกเฉ‡ เจงเจฟเจ†เจจ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹