เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบŠเบต Rutoken เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบšเบปเบš (เบชเปˆเบงเบ™ 3)

เบกเบทเป‰เบ—เบตเปˆเบ”เบต!

เปƒเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบชเบนเบ™เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบ™เบงเปƒเบ”เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ?

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบญเปเบฒเบ™เบฒเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบญเบญเบเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐเบเบฑเบ‡เบเบงเบ”เบชเบญเบšเบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบ™เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เป€เบกเบทเปˆเบญเบญเบญเบเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰, เป€เบˆเบปเป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบฑเป‰เบ‡เบขเบทเบ™เปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบžเบดเป€เบชเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบญเบเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ Pkcs#10, เป€เบŠเบดเปˆเบ‡เบกเบตเบฎเบนเบšเปเบšเบšเป„เบŸเบฅเปŒ '.csr'. เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ›เบฐเบเบญเบšเบกเบตเบ—เบฑเบ‡เบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ (เบญเบฒเป€เบฃเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰).

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเปเบฒเบฅเบฑเบšเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›, เปเบฅเบฐเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบญเปเบฒเบ™เบฒเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเป€เบฅเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ”เป‰เบฒเบ™ backend.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡:

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

ca เปเบกเปˆเบ™เบ„เบณเบชเบฑเปˆเบ‡ openSSL เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบญเบณเบ™เบฒเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™,
-batch - เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™.
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โ€‹.

เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบญเปเบฒเบ™เบฒเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เปƒเบ™เบ”เป‰เบฒเบ™ backend เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบœเบนเป‰เปƒเบŠเป‰:
    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 เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡. เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เปเบกเปˆเบ™เบญเบฐเบ—เบดเบšเบฒเบ เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เปเบฒเบญเบดเบ”. เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบ•เป‰เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” algorithms เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปƒเบ”เป†เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ‚เบฝเบ™ backend.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Retoken plugin.

เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™