ΠžΠΏΡ‹Ρ‚ примСнСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π ΡƒΡ‚ΠΎΠΊΠ΅Π½ для рСгистрации ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² систСмС (Ρ‡Π°ΡΡ‚ΡŒ 3)

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь!

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ части ΠΌΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ создали свой ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π½Ρ‚Ρ€. Π§Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½?

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ локального ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π°Ρ‡Ρƒ сСртификатов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ подписи ΠΏΠΎ этим сСртификатам.

ΠŸΡ€ΠΈ Π²Ρ‹Π΄Π°Ρ‡Π΅ сСртификата ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π½Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ запрос Π½Π° Π²Ρ‹Π΄Π°Ρ‡Ρƒ сСртификата Pkcs#10, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° β€˜.csr’. Π­Ρ‚ΠΎΡ‚ запрос содСрТит Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π½Ρ‚Ρ€ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ. Запрос содСрТит ΠΊΠ°ΠΊ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚Π°ΠΊ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ для создания сСртификата (ассоциативный массив с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅).

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ запрос Π½Π° Π²Ρ‹Π΄Π°Ρ‡Ρƒ сСртификата, ΠΌΡ‹ рассмотрим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π° Π² этой Ρ…ΠΎΡ‡Ρƒ привСсти основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° сторонС Π±Π΅ΠΊΠ΅Π½Π΄Π°.

Π˜Ρ‚Π°ΠΊ, Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСртификат. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

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.

Алгоритм примСнСния ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° Π½Π° сторонС Π±Π΅ΠΊΠ΅Π½Π΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  • РСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:
    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 ΠΈ провСряСм эти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ. Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ описано Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅. Если Π΄Π°Π½Π½Ρ‹Π΅ Π²Π°Π»ΠΈΠ΄Π½Ρ‹, Ρ‚ΠΎ авторизация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ считаСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для написания Π±Π΅ΠΊΠ΅Π½Π΄Π°.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π Π΅Ρ‚ΠΎΠΊΠ΅Π½ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ.

Бпасибо за вниманиС!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com