Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux
Π’ moja ya makala zetu zilizopita tulizungumza juu ya umuhimu wa uthibitishaji wa sababu mbili kwenye tovuti za kampuni za kampuni. Mara ya mwisho tulionyesha jinsi ya kusanidi uthibitishaji salama katika seva ya wavuti ya IIS.

Katika maoni, tuliulizwa kuandika maagizo kwa seva za wavuti za kawaida za Linux - nginx na Apache.

Uliuliza - tuliandika.

Unahitaji nini ili kuanza?

  • Usambazaji wowote wa kisasa wa Linux. Nilifanya usanidi wa jaribio kwenye MX Linux 18.2_x64. Kwa kweli hii sio usambazaji wa seva, lakini kuna uwezekano wa kuwa na tofauti zozote za Debian. Kwa usambazaji mwingine, njia za maktaba za usanidi zinaweza kutofautiana kidogo.
  • Ishara. Tunaendelea kutumia mfano Rutoken EDS PKI, ambayo ni bora kwa suala la sifa za kasi kwa matumizi ya ushirika.
  • Ili kufanya kazi na ishara katika Linux, unahitaji kusanikisha vifurushi vifuatavyo:
    libccid libpcsclite1 pcscd zana za pcsc opensc

Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

Kutoa vyeti

Katika makala zilizopita, tulitegemea ukweli kwamba vyeti vya seva na mteja vitatolewa kwa kutumia Microsoft CA. Lakini kwa kuwa tunaweka kila kitu kwenye Linux, tutakuambia pia kuhusu njia mbadala ya kutoa vyeti hivi - bila kuondoka kwenye Linux.
Tutatumia XCA kama CA (https://hohnstaedt.de/xca/), ambayo inapatikana kwenye usambazaji wowote wa kisasa wa Linux. Vitendo vyote tutakavyofanya katika XCA vinaweza kufanywa katika hali ya mstari wa amri kwa kutumia huduma za OpenSSL na pkcs11, lakini kwa unyenyekevu na uwazi zaidi, hatutawasilisha katika makala hii.

Anza

  1. Sakinisha:
    $ apt-get install xca
  2. Na tunaendesha:
    $ xca
  3. Tunaunda hifadhidata yetu ya CA - /root/CA.xdb
    Tunapendekeza kuhifadhi hifadhidata ya Mamlaka ya Cheti katika folda ambayo msimamizi pekee ndiye anayeweza kufikia. Hii ni muhimu ili kulinda funguo za kibinafsi za vyeti vya mizizi, ambazo hutumiwa kusaini vyeti vingine vyote.

Unda funguo na cheti cha mizizi ya CA

Miundombinu ya ufunguo wa umma (PKI) inategemea mfumo wa daraja. Jambo kuu katika mfumo huu ni mamlaka ya udhibitisho wa mizizi au CA ya mizizi. Cheti chake lazima kiundwe kwanza.

  1. Tunaunda ufunguo wa faragha wa RSA-2048 kwa ajili ya CA. Ili kufanya hivyo, kwenye kichupo Funguo za Kibinafsi sukuma Ufunguo Mpya na uchague aina inayofaa.
  2. Weka jina la jozi mpya ya funguo. Niliita CA Key.
  3. Tunatoa cheti cha CA yenyewe, kwa kutumia jozi ya ufunguo iliyoundwa. Ili kufanya hivyo, nenda kwenye kichupo vyeti na bonyeza Cheti Kipya.
  4. Hakikisha kuchagua Sha-256, kwa sababu kutumia SHA-1 hakuwezi tena kuchukuliwa kuwa salama.
  5. Hakikisha kuchagua kama kiolezo [chaguo-msingi] CA. Usisahau kubofya Tumia zote, vinginevyo kiolezo hakitumiki.
  6. Katika kichupo Kichwa chagua jozi yetu muhimu. Huko unaweza kujaza nyanja zote kuu za cheti.

Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

Unda funguo na cheti cha seva ya https

  1. Vivyo hivyo, tunaunda ufunguo wa kibinafsi wa RSA-2048 kwa seva, niliiita Ufunguo wa Seva.
  2. Wakati wa kuunda cheti, tunachagua kwamba cheti cha seva lazima kisainiwe na cheti cha CA.
  3. Usisahau kuchagua Sha-256.
  4. Tunachagua kama kiolezo [chaguo-msingi] HTTPS_server. Bonyeza Tumia zote.
  5. Kisha kwenye kichupo Kichwa chagua ufunguo wetu na ujaze sehemu zinazohitajika.

Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

Unda funguo na cheti kwa mtumiaji

  1. Ufunguo wa faragha wa mtumiaji utahifadhiwa kwenye tokeni yetu. Ili kufanya kazi nayo, unahitaji kusakinisha maktaba ya PKCS#11 kutoka kwa tovuti yetu. Kwa usambazaji maarufu, tunasambaza vifurushi vilivyotengenezwa tayari, ambavyo viko hapa - https://www.rutoken.ru/support/download/pkcs/. Pia tunayo mikusanyiko ya arm64, armv7el, armv7hf, e2k, mipso32el, ambayo inaweza kupakuliwa kutoka kwa SDK yetu - https://www.rutoken.ru/developers/sdk/. Mbali na makusanyiko ya Linux, pia kuna makusanyiko ya macOS, freebsd na android.
  2. Inaongeza Mtoa Huduma mpya wa PKCS#11 kwenye XCA. Ili kufanya hivyo, nenda kwenye menyu Chaguzi kwa kichupo Mtoa huduma wa PKCS#11.
  3. Tunabonyeza Kuongeza na uchague njia ya maktaba ya PKCS#11. Kwa upande wangu ni usrliblibrtpkcs11ecp.so.
  4. Tutahitaji tokeni iliyoumbizwa ya Rutoken EDS PKI. Pakua matumizi ya rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Tunafanya
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>
  6. Tunachagua ufunguo wa RSA-2048 kwa Rutoken EDS PKI kama aina muhimu. Niliita Ufunguo huu wa Mteja.

    Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

  7. Ingiza msimbo wa PIN. Na tunasubiri kukamilika kwa utengenezaji wa vifaa vya jozi muhimu

    Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

  8. Tunaunda cheti cha mtumiaji kwa mlinganisho na cheti cha seva. Wakati huu tunachagua kiolezo [chaguo-msingi] HTTPS_client na usisahau kubofya Tumia zote.
  9. Katika kichupo Kichwa ingiza habari kuhusu mtumiaji. Tunajibu kwa uthibitisho kwa ombi la kuhifadhi cheti cha ishara.

Kama matokeo, kwenye kichupo Vyeti katika XCA unapaswa kupata kitu kama hiki.

Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux
Seti hii ya chini ya funguo na vyeti inatosha kuanza kusanidi seva zenyewe.

Ili kusanidi, tunahitaji kusafirisha cheti cha CA, cheti cha seva na ufunguo wa faragha wa seva.

Ili kufanya hivyo, chagua kiingilio unachotaka kwenye kichupo kinacholingana katika XCA na ubofye Hamisha.

Nginx

Sitaandika jinsi ya kufunga na kuendesha seva ya nginx - kuna vifungu vya kutosha kwenye mada hii kwenye mtandao, bila kutaja nyaraka rasmi. Hebu tuende moja kwa moja ili kusanidi HTTPS na uthibitishaji wa vipengele viwili kwa kutumia tokeni.

Ongeza mistari ifuatayo kwenye sehemu ya seva kwenye 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;
}

Maelezo ya kina ya vigezo vyote vinavyohusiana na kusanidi ssl kwenye nginx yanaweza kupatikana hapa - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Nitaelezea kwa ufupi tu wale ambao nilijiuliza:

  • ssl_verify_client - inabainisha kuwa safu ya uaminifu ya cheti inahitaji kuthibitishwa.
  • ssl_verify_depth - Inafafanua kina cha utafutaji kwa cheti cha mizizi kinachoaminika kwenye msururu. Kwa kuwa cheti cha mteja wetu kinasainiwa mara moja kwenye cheti cha mizizi, kina kinawekwa kwa 1. Ikiwa cheti cha mtumiaji kinasainiwa kwenye CA ya kati, basi 2 lazima ielezwe katika parameter hii, na kadhalika.
  • ssl_client_certificate - inabainisha njia ya cheti cha mizizi inayoaminika, ambayo hutumiwa wakati wa kuangalia uaminifu katika cheti cha mtumiaji.
  • ssl_certificate/ssl_certificate_key - onyesha njia ya cheti cha seva/ufunguo wa faragha.

Usisahau kuendesha nginx -t ili kuangalia kuwa hakuna typos kwenye usanidi, na kwamba faili zote ziko mahali pazuri, na kadhalika.

Na hiyo ndiyo yote! Kama unaweza kuona, usanidi ni rahisi sana.

Kuangalia inafanya kazi katika Firefox

Kwa kuwa tunafanya kila kitu kabisa katika Linux, tutafikiri kwamba watumiaji wetu pia wanafanya kazi katika Linux (ikiwa wana Windows, basi tazama maagizo ya kusanidi vivinjari katika nakala iliyotangulia.

  1. Wacha tuzindue Firefox.
  2. Wacha tujaribu kuingia bila ishara kwanza. Tunapata picha hii:

    Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

  3. Twende kuhusu: upendeleo # usiri, na tunaenda Vifaa vya Usalama...
  4. Tunabonyeza mzigoili kuongeza Kiendesha Kifaa kipya cha PKCS#11 na kubainisha njia ya librtpkcs11ecp.so.
  5. Ili kuangalia kuwa cheti kinaonekana, unaweza kwenda Meneja wa Cheti. Utaulizwa kuweka PIN yako. Baada ya ingizo sahihi, unaweza kuangalia kilicho kwenye kichupo Vyeti vyako cheti chetu kutoka kwa ishara kilionekana.
  6. Sasa hebu twende na ishara. Firefox inakuhimiza kuchagua cheti ambacho kitachaguliwa kwa seva. Chagua cheti chetu.

    Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

  7. Fanya!

    Uthibitishaji wa vipengele viwili kwenye tovuti kwa kutumia ishara ya USB. Sasa pia kwa Linux

Usanidi unafanywa mara moja, na kama unavyoona kwenye dirisha la ombi la cheti, tunaweza kuhifadhi uteuzi wetu. Baada ya hayo, kila wakati tunapoingia kwenye lango, tutahitaji tu kuingiza ishara na kuingiza msimbo wa PIN wa mtumiaji ambao ulibainishwa wakati wa kupangilia. Baada ya uthibitishaji huo, seva tayari inajua ni mtumiaji gani ameingia na huwezi tena kuunda madirisha yoyote ya ziada kwa uthibitishaji, lakini mara moja kuruhusu mtumiaji kwenye akaunti yake ya kibinafsi.

Apache

Kama tu na nginx, hakuna mtu anayepaswa kuwa na shida yoyote ya kusanikisha apache. Ikiwa hujui jinsi ya kusakinisha seva hii ya wavuti, tumia tu nyaraka rasmi.

Na tunaanza kusanidi HTTPS yetu na uthibitishaji wa sababu mbili:

  1. Kwanza unahitaji kuamsha mod_ssl:
    $ a2enmod ssl
  2. Na kisha uwashe mipangilio chaguomsingi ya HTTPS ya tovuti:
    $ a2ensite default-ssl
  3. Sasa tunahariri faili ya usanidi: /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

    Kama unavyoona, majina ya vigezo yanalingana kabisa na majina ya vigezo kwenye nginx, kwa hivyo sitawaelezea. Tena, yeyote anayevutiwa na maelezo anakaribishwa kwenye hati.
    Sasa tunaanzisha tena seva yetu:

    $ service apache2 reload
    $ service apache2 restart

  4. Kama unavyoona, kusanidi uthibitishaji wa sababu mbili kwenye seva yoyote ya wavuti, iwe kwenye Windows au Linux, inachukua muda wa saa moja. Na kusanidi vivinjari huchukua kama dakika 5. Watu wengi wanafikiri kuwa kuanzisha na kufanya kazi na uthibitishaji wa vipengele viwili ni vigumu na haijulikani. Natumai nakala yetu itaondoa hadithi hii, angalau kidogo.

Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti. Weka sahihitafadhali.

Je! unahitaji maagizo ya kusanidi TLS na cheti kulingana na GOST 34.10-2012:

  • Ndiyo, TLS-GOST ni muhimu sana

  • Hapana, kusanidi na algorithms ya GOST haifurahishi

Watumiaji 44 walipiga kura. Watumiaji 9 walijizuia.

Chanzo: mapenzi.com

Kuongeza maoni