ProHoster > blog > Utawala > 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
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
Sakinisha:
$ apt-get install xca
Na tunaendesha:
$ xca
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.
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.
Weka jina la jozi mpya ya funguo. Niliita CA Key.
Tunatoa cheti cha CA yenyewe, kwa kutumia jozi ya ufunguo iliyoundwa. Ili kufanya hivyo, nenda kwenye kichupo vyeti na bonyeza Cheti Kipya.
Hakikisha kuchagua Sha-256, kwa sababu kutumia SHA-1 hakuwezi tena kuchukuliwa kuwa salama.
Hakikisha kuchagua kama kiolezo [chaguo-msingi] CA. Usisahau kubofya Tumia zote, vinginevyo kiolezo hakitumiki.
Katika kichupo Kichwa chagua jozi yetu muhimu. Huko unaweza kujaza nyanja zote kuu za cheti.
Unda funguo na cheti cha seva ya https
Vivyo hivyo, tunaunda ufunguo wa kibinafsi wa RSA-2048 kwa seva, niliiita Ufunguo wa Seva.
Wakati wa kuunda cheti, tunachagua kwamba cheti cha seva lazima kisainiwe na cheti cha CA.
Usisahau kuchagua Sha-256.
Tunachagua kama kiolezo [chaguo-msingi] HTTPS_server. Bonyeza Tumia zote.
Kisha kwenye kichupo Kichwa chagua ufunguo wetu na ujaze sehemu zinazohitajika.
Unda funguo na cheti kwa mtumiaji
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.
Inaongeza Mtoa Huduma mpya wa PKCS#11 kwenye XCA. Ili kufanya hivyo, nenda kwenye menyu Chaguzi kwa kichupo Mtoa huduma wa PKCS#11.
Tunabonyeza Kuongeza na uchague njia ya maktaba ya PKCS#11. Kwa upande wangu ni usrliblibrtpkcs11ecp.so.
Tunachagua ufunguo wa RSA-2048 kwa Rutoken EDS PKI kama aina muhimu. Niliita Ufunguo huu wa Mteja.
Ingiza msimbo wa PIN. Na tunasubiri kukamilika kwa utengenezaji wa vifaa vya jozi muhimu
Tunaunda cheti cha mtumiaji kwa mlinganisho na cheti cha seva. Wakati huu tunachagua kiolezo [chaguo-msingi] HTTPS_client na usisahau kubofya Tumia zote.
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.
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:
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.
Wacha tujaribu kuingia bila ishara kwanza. Tunapata picha hii:
Twende kuhusu: upendeleo # usiri, na tunaenda Vifaa vya Usalama...
Tunabonyeza mzigoili kuongeza Kiendesha Kifaa kipya cha PKCS#11 na kubainisha njia ya librtpkcs11ecp.so.
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.
Sasa hebu twende na ishara. Firefox inakuhimiza kuchagua cheti ambacho kitachaguliwa kwa seva. Chagua cheti chetu.
Fanya!
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:
Kwanza unahitaji kuamsha mod_ssl:
$ a2enmod ssl
Na kisha uwashe mipangilio chaguomsingi ya HTTPS ya tovuti:
$ a2ensite default-ssl
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
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