USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්
В අපගේ පෙර ලිපි වලින් එකක් සමාගම්වල ආයතනික ද්වාරවල ද්වි සාධක සත්‍යාපනයේ වැදගත්කම ගැන අපි කතා කළෙමු. IIS වෙබ් සේවාදායකයේ ආරක්ෂිත සත්‍යාපනය සකසන්නේ කෙසේදැයි අපි අවසන් වරට නිරූපණය කළෙමු.

අදහස් දැක්වීමේදී, Linux - nginx සහ Apache සඳහා වඩාත් පොදු වෙබ් සේවාදායකයන් සඳහා උපදෙස් ලිවීමට අපෙන් ඉල්ලා සිටියේය.

ඔබ ඇසුවා - අපි ලිව්වා.

ඔබ ආරම්භ කිරීමට අවශ්ය කුමක්ද?

  • ඕනෑම නවීන ලිනක්ස් බෙදාහැරීමක්. මම MX Linux 18.2_x64 මත පරීක්ෂණ සැකසුම කළා. මෙය ඇත්ත වශයෙන්ම සේවාදායක බෙදාහැරීමක් නොවේ, නමුත් Debian සඳහා කිසිදු වෙනසක් තිබිය නොහැක. වෙනත් බෙදාහැරීම් සඳහා, වින්‍යාස පුස්තකාල වෙත යන මාර්ග තරමක් වෙනස් විය හැක.
  • ටෝකනය. අපි ආකෘතිය දිගටම භාවිතා කරන්නෙමු Rutoken EDS PKI, ආයතනික භාවිතය සඳහා වේග ලක්ෂණ අනුව වඩාත් සුදුසු වේ.
  • ලිනක්ස් හි ටෝකනයක් සමඟ වැඩ කිරීමට, ඔබ පහත පැකේජ ස්ථාපනය කළ යුතුය:
    libccid libpcsclite1 pcscd pcsc-tools opensc

USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

සහතික නිකුත් කිරීම

පෙර ලිපිවලදී, අපි Microsoft CA භාවිතයෙන් සේවාදායකය සහ සේවාදායක සහතික නිකුත් කරනු ඇති බව මත විශ්වාසය තැබුවෙමු. නමුත් අපි ලිනක්ස් හි සියල්ල සකසමින් සිටින බැවින්, මෙම සහතික නිකුත් කිරීමට විකල්ප ක්‍රමයක් ගැනද අපි ඔබට කියන්නෙමු - ලිනක්ස් හැර යාමෙන් තොරව.
අපි CA ලෙස XCA භාවිතා කරන්නෙමු (https://hohnstaedt.de/xca/), ඕනෑම නවීන ලිනක්ස් බෙදාහැරීමකින් ලබා ගත හැකිය. අපි XCA හි සිදු කරන සියලුම ක්‍රියා OpenSSL සහ pkcs11-මෙවලම් උපයෝගිතා භාවිතයෙන් විධාන රේඛා ආකාරයෙන් සිදු කළ හැක, නමුත් වඩාත් සරල බව සහ පැහැදිලිකම සඳහා, අපි ඒවා මෙම ලිපියෙන් ඉදිරිපත් නොකරමු.

ආරම්භ කිරීම

  1. ස්ථාපනය කරන්න:
    $ apt-get install xca
  2. සහ අපි ධාවනය කරන්නේ:
    $ xca
  3. අපි CA - /root/CA.xdb සඳහා අපගේ දත්ත සමුදාය නිර්මාණය කරමු
    පරිපාලකයාට පමණක් ප්‍රවේශය ඇති ෆෝල්ඩරයක සහතික අධිකාරියේ දත්ත ගබඩාව ගබඩා කිරීම අපි නිර්දේශ කරමු. අනෙකුත් සියලුම සහතික අත්සන් කිරීමට භාවිතා කරන මූල සහතිකවල පුද්ගලික යතුරු ආරක්ෂා කිරීමට මෙය වැදගත් වේ.

යතුරු සහ මූල CA සහතිකය සාදන්න

පොදු යතුරු යටිතල ව්‍යුහයක් (PKI) ධූරාවලි පද්ධතියක් මත පදනම් වේ. මෙම පද්ධතියේ ප්රධාන දෙය වන්නේ මූල සහතික කිරීමේ අධිකාරිය හෝ root CA ය. එහි සහතිකය මුලින්ම නිර්මාණය කළ යුතුය.

  1. අපි CA සඳහා RSA-2048 පුද්ගලික යතුරක් සාදන්නෙමු. මෙය සිදු කිරීම සඳහා, ටැබය මත පුද්ගලික යතුරු අයි නව යතුර සහ සුදුසු වර්ගය තෝරන්න.
  2. නව යතුරු යුගල සඳහා නමක් සකසන්න. මම ඒකට කිව්වේ CA Key කියලා.
  3. සාදන ලද යතුරු යුගලය භාවිතා කරමින් අපි CA සහතිකය නිකුත් කරන්නෙමු. මෙය සිදු කිරීම සඳහා, පටිත්ත වෙත යන්න සහතික ක්ලික් කරන්න නව සහතිකය.
  4. තෝරා ගැනීමට වග බලා ගන්න SHA-256, SHA-1 භාවිතා කිරීම තවදුරටත් ආරක්ෂිත යැයි සැලකිය නොහැකි බැවිනි.
  5. සැකිල්ලක් ලෙස තෝරා ගැනීමට වග බලා ගන්න [පෙරනිමි] CA. මත ක්ලික් කිරීමට අමතක නොකරන්න සියල්ල අයදුම් කරන්න, එසේ නොමැති නම් අච්චුව යොදනු නොලැබේ.
  6. ටැබ් විෂය අපගේ යතුරු යුගලය තෝරන්න. එහිදී ඔබට සහතිකයේ සියලුම ප්‍රධාන ක්ෂේත්‍ර පිරවිය හැකිය.

USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

යතුරු සහ https සේවාදායක සහතිකයක් සාදන්න

  1. ඒ හා සමානව, අපි සේවාදායකය සඳහා RSA-2048 පුද්ගලික යතුරක් සාදන්නෙමු, මම එය සේවාදායක යතුර ලෙස හැඳින්වුවෙමි.
  2. සහතිකයක් සාදන විට, අපි සේවාදායක සහතිකය CA සහතිකයක් සමඟ අත්සන් කළ යුතු බව තෝරා ගනිමු.
  3. තෝරා ගැනීමට අමතක නොකරන්න SHA-256.
  4. අපි අච්චුවක් ලෙස තෝරා ගනිමු [පෙරනිමි] HTTPS_server. මත ක්ලික් කරන්න සියල්ල අයදුම් කරන්න.
  5. ඉන්පසු ටැබ් එක මත විෂය අපගේ යතුර තෝරා අවශ්‍ය ක්ෂේත්‍ර පුරවන්න.

USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

පරිශීලකයා සඳහා යතුරු සහ සහතිකය සාදන්න

  1. පරිශීලකයාගේ පුද්ගලික යතුර අපගේ ටෝකනය මත ගබඩා වේ. එය සමඟ වැඩ කිරීමට, ඔබ අපගේ වෙබ් අඩවියෙන් PKCS#11 පුස්තකාලය ස්ථාපනය කළ යුතුය. ජනප්‍රිය බෙදාහැරීම් සඳහා, අපි මෙහි පිහිටා ඇති සූදානම් කළ පැකේජ බෙදා හරිමු - https://www.rutoken.ru/support/download/pkcs/. අපට arm64, armv7el, armv7hf, e2k, mipso32el සඳහා එකලස් කිරීම් ද ඇත, ඒවා අපගේ SDK වෙතින් බාගත හැකිය - https://www.rutoken.ru/developers/sdk/. ලිනක්ස් සඳහා එකලස් කිරීම් වලට අමතරව, macOS, freebsd සහ android සඳහාද එකලස් කිරීම් තිබේ.
  2. XCA වෙත නව PKCS#11 සපයන්නෙකු එක් කිරීම. මෙය සිදු කිරීම සඳහා, මෙනුව වෙත යන්න විකල්ප ටැබ් එකට PKCS#11 සපයන්නා.
  3. අපි ඔබන්න එක් කරන්න සහ PKCS#11 පුස්තකාලයට යන මාර්ගය තෝරන්න. මගේ නඩුවේ එය usrliblibrtpkcs11ecp.so වේ.
  4. අපට ආකෘතිගත Rutoken EDS PKI ටෝකනයක් අවශ්‍ය වේ. rtAdmin උපයෝගීතාව බාගන්න - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. අපි ඉටු කරනවා
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. අපි යතුරු වර්ගය ලෙස Rutoken EDS PKI සඳහා RSA-2048 යතුර තෝරා ගනිමු. මම මේ යතුර Client Key ලෙස ඇමතුවා.

    USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

  7. PIN කේතය ඇතුලත් කරන්න. යතුරු යුගලයේ දෘඩාංග උත්පාදනය අවසන් වන තෙක් අපි බලා සිටිමු

    USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

  8. සේවාදායක සහතිකය හා සමානව අපි පරිශීලකයා සඳහා සහතිකයක් සාදන්නෙමු. මෙවර අපි ටෙම්ප්ලේට් එකක් තෝරා ගනිමු [පෙරනිමි] HTTPS_client සහ ක්ලික් කිරීමට අමතක නොකරන්න සියල්ල අයදුම් කරන්න.
  9. ටැබ් විෂය පරිශීලකයා පිළිබඳ තොරතුරු ඇතුළත් කරන්න. ටෝකනය සඳහා සහතිකය සුරැකීමට ඉල්ලීමට අපි ස්ථිර ලෙස පිළිතුරු දෙමු.

එහි ප්රතිඵලයක් වශයෙන්, ටැබය මත සහතික XCA හි ඔබට මෙවැනි දෙයක් ලබා ගත යුතුය.

USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්
මෙම අවම යතුරු සහ සහතික කට්ටලය සේවාදායක පිහිටුවීම ආරම්භ කිරීමට ප්‍රමාණවත් වේ.

වින්‍යාස කිරීමට, අපට CA සහතිකය, සේවාදායක සහතිකය සහ සේවාදායක පුද්ගලික යතුර අපනයනය කිරීමට අවශ්‍ය වේ.

මෙය සිදු කිරීම සඳහා, XCA හි අනුරූප පටිත්තෙහි අවශ්ය ප්රවේශය තෝරා ක්ලික් කරන්න අපනයන.

Nginx

nginx සේවාදායකයක් ස්ථාපනය කර ක්‍රියාත්මක කරන්නේ කෙසේද යන්න මම ලියන්නේ නැත - අන්තර්ජාලයේ මෙම මාතෘකාව පිළිබඳ ප්‍රමාණවත් ලිපි තිබේ, නිල ලේඛන ගැන සඳහන් නොකරන්න. ටෝකනයක් භාවිතයෙන් HTTPS සහ ද්වි-සාධක සත්‍යාපනය පිහිටුවීමට අපි කෙලින්ම යමු.

nginx.conf හි සේවාදායක කොටසට පහත රේඛා එක් කරන්න:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

nginx හි ssl වින්‍යාස කිරීමට අදාළ සියලුම පරාමිති පිළිබඳ සවිස්තරාත්මක විස්තරයක් මෙහි සොයාගත හැකිය - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

මම මගෙන් අහපු ඒවා කෙටියෙන් විස්තර කරන්නම්:

  • ssl_verify_client - සහතිකය සඳහා විශ්වාස දාමය සත්‍යාපනය කළ යුතු බව සඳහන් කරයි.
  • ssl_verify_depth - දාමයේ විශ්වාසදායක මූල සහතිකය සඳහා සෙවුම් ගැඹුර නිර්වචනය කරයි. අපගේ සේවාදායක සහතිකය මූල සහතිකය මත වහාම අත්සන් කර ඇති බැවින්, ගැඹුර 1 ලෙස සකසා ඇත. පරිශීලක සහතිකය අතරමැදි CA මත අත්සන් කර ඇත්නම්, මෙම පරාමිතියෙහි 2 සඳහන් කළ යුතුය, සහ යනාදිය.
  • ssl_client_certificate - පරිශීලකයාගේ සහතිකයේ විශ්වාසය පරීක්ෂා කිරීමේදී භාවිතා කරන විශ්වාසදායී මූල සහතිකය සඳහා මාර්ගය නියම කරයි.
  • ssl_certificate/ssl_certificate_key - සේවාදායක සහතිකය/පුද්ගලික යතුර වෙත යන මාර්ගය දක්වන්න.

වින්‍යාසය තුළ අක්ෂර වින්‍යාසයන් නොමැති බව සහ සියලුම ලිපිගොනු නිවැරදි ස්ථානයේ තිබේද යන්න පරීක්ෂා කිරීමට nginx -t ධාවනය කිරීමට අමතක නොකරන්න.

සහ එපමණයි! ඔබට පෙනෙන පරිදි, සැකසීම ඉතා සරල ය.

එය ෆයර්ෆොක්ස් හි ක්‍රියා කරන්නේදැයි පරීක්ෂා කිරීම

අපි සෑම දෙයක්ම ලිනක්ස් හි සම්පූර්ණයෙන්ම කරන බැවින්, අපගේ පරිශීලකයින් ද ලිනක්ස් හි වැඩ කරන බව අපි උපකල්පනය කරමු (ඔවුන්ට වින්ඩෝස් තිබේ නම්, එවිට පෙර ලිපියේ බ්‍රව්සර් සැකසීම සඳහා උපදෙස් බලන්න.

  1. අපි Firefox දියත් කරමු.
  2. අපි මුලින්ම ටෝකනයකින් තොරව ලොග් වීමට උත්සාහ කරමු. අපට මෙම පින්තූරය ලැබේ:

    USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

  3. අපි යමු ගැන: මනාප # පුද්ගලිකත්වය, සහ අපි යනවා ආරක්ෂක උපාංග…
  4. අපි ඔබන්න පැටවීමනව PKCS#11 උපාංග ධාවකයක් එක් කිරීමට සහ අපගේ librtpkcs11ecp.so වෙත මාර්ගය සඳහන් කරන්න.
  5. සහතිකය දෘශ්‍යමාන දැයි පරීක්ෂා කිරීමට, ඔබට යන්න පුළුවන් සහතික කළමණාකරු. ඔබගේ PIN අංකය ඇතුලත් කිරීමට ඔබෙන් විමසනු ඇත. නිවැරදි ආදානයෙන් පසුව, ඔබට ටැබ් එකේ ඇති දේ පරීක්ෂා කළ හැක ඔබේ සහතික ටෝකනයෙන් අපගේ සහතිකය දර්ශනය විය.
  6. දැන් අපි ටෝකනය සමඟ යමු. ෆයර්ෆොක්ස් සේවාදායකය සඳහා තෝරා ගන්නා සහතිකයක් තෝරා ගැනීමට ඔබෙන් විමසයි. අපගේ සහතිකය තෝරන්න.

    USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

  7. ලාභය

    USB ටෝකනයක් භාවිතයෙන් අඩවියේ ද්වි-සාධක සත්‍යාපනය. දැන් ලිනක්ස් වලටත්

සැකසුම එක් වරක් සිදු කර ඇති අතර, ඔබට සහතික ඉල්ලීම් කවුළුවෙහි දැකිය හැකි පරිදි, අපගේ තේරීම සුරැකිය හැක. මෙයින් පසු, අපි ද්වාරයට ඇතුළු වන සෑම අවස්ථාවකම, අපට අවශ්‍ය වන්නේ ටෝකනයක් ඇතුළු කර හැඩතල ගැන්වීමේදී සඳහන් කර ඇති පරිශීලක PIN කේතය ඇතුළත් කිරීම පමණි. එවැනි සත්‍යාපනයකින් පසුව, කුමන පරිශීලකයා ලොග් වී ඇත්දැයි සේවාදායකය දැනටමත් දන්නා අතර ඔබට තවදුරටත් සත්‍යාපනය සඳහා අමතර කවුළු සෑදිය නොහැක, නමුත් වහාම පරිශීලකයාට ඔහුගේ පුද්ගලික ගිණුමට ඇතුළු වීමට ඉඩ දෙන්න.

Apache

nginx සමඟ මෙන්, apache ස්ථාපනය කිරීමේදී කිසිවෙකුට ගැටළු ඇති නොවිය යුතුය. ඔබ මෙම වෙබ් සේවාදායකය ස්ථාපනය කරන්නේ කෙසේදැයි නොදන්නේ නම්, නිල ලේඛන භාවිතා කරන්න.

තවද අපි අපගේ HTTPS සහ ද්වි-සාධක සත්‍යාපනය සැකසීමට පටන් ගනිමු:

  1. මුලින්ම ඔබ mod_ssl සක්රිය කළ යුතුය:
    $ a2enmod ssl
  2. ඉන්පසු වෙබ් අඩවියේ පෙරනිමි HTTPS සැකසුම් සබල කරන්න:
    $ a2ensite default-ssl
  3. දැන් අපි වින්‍යාස ගොනුව සංස්කරණය කරන්නෙමු: /etc/apache2/sites-enabled/default-ssl.conf:
        SSLEngine on
        SSLProtocol all -SSLv2
    
        SSLCertificateFile	/etc/apache2/sites-enabled/Server.crt
        SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
    
        SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
    
        SSLVerifyClient require
        SSLVerifyDepth  10

    ඔබට පෙනෙන පරිදි, පරාමිතිවල නම් ප්‍රායෝගිකව nginx හි පරාමිතීන්ගේ නම් සමඟ සමපාත වේ, එබැවින් මම ඒවා පැහැදිලි නොකරමි. නැවතත්, විස්තර සඳහා උනන්දුවක් දක්වන ඕනෑම අයෙකු ලේඛනගත කිරීම වෙත සාදරයෙන් පිළිගනිමු.
    දැන් අපි අපගේ සේවාදායකය නැවත ආරම්භ කරමු:

    $ service apache2 reload
    $ service apache2 restart

  4. ඔබට පෙනෙන පරිදි, වින්ඩෝස් හෝ ලිනක්ස් මත ඕනෑම වෙබ් සේවාදායකයක ද්වි-සාධක සත්‍යාපනය සැකසීමට උපරිම වශයෙන් පැයක් ගතවේ. බ්‍රව්සර් සැකසීමට මිනිත්තු 5ක් පමණ ගත වේ. බොහෝ අය සිතන්නේ ද්වි-සාධක සත්‍යාපනය සමඟ සැකසීම සහ වැඩ කිරීම අපහසු සහ අපැහැදිලි බවයි. අපගේ ලිපිය අවම වශයෙන් මඳක් හෝ මෙම මිථ්‍යාව නිදොස් කරනු ඇතැයි මම බලාපොරොත්තු වෙමි.

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

GOST 34.10-2012 අනුව සහතික සහිත TLS පිහිටුවීම සඳහා ඔබට උපදෙස් අවශ්‍යද:

  • ඔව්, TLS-GOST ඉතා අවශ්යයි

  • නැත, GOST ඇල්ගොරිතම සමඟ සුසර කිරීම සිත්ගන්නා සුළු නොවේ

පරිශීලකයින් 44 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 9 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න