ProHoster > ΠΠ»ΠΎΠ³ > Maamulka > Sida aan ZeroTech ugu xidhnay Apple Safari iyo shahaadooyin macmiilka leh websockets
Sida aan ZeroTech ugu xidhnay Apple Safari iyo shahaadooyin macmiilka leh websockets
Maqaalku wuxuu noqon doonaa mid waxtar u leh kuwa:
wuu garanayaa waxa uu yahay Client Cert wuuna fahmay sababta ay ugu baahan tahay websockets on Safari mobaylada;
Waxaan jeclaan lahaa inaan u daabaco adeegyada shabakadda dad kooban ama naftayda oo keliya;
Waxay u malaynaysaa in wax walba uu horay u sameeyay qof, oo jeclaan lahaa in uu adduunka ka dhigo mid ku habboon oo ammaan ah.
Taariikhda websockets waxay bilaabatay qiyaastii 8 sano ka hor. Markii hore, hababka waxaa loo isticmaali jiray qaab codsi dheer oo http ah (dhab ahaantii jawaabaha): browserka isticmaalaha ayaa codsi u diray server-ka oo sugayay inuu ka jawaabo wax, ka dib jawaabta ayaa mar kale ku xirtay oo sugtay. Laakiin markaa websockets ayaa soo muuqday.
Dhowr sano ka hor, waxaan ku horumarinay dhaqankeena PHP saafi ah, oo aan isticmaali karin codsiyada https, maadaama kani yahay lakabka isku xirka. Muddo aan fogayn, ku dhawaad ββdhammaan adeegayaasha shabakadu waxay barteen codsiyada wakiilnimada ee https iyo taageerada xidhiidhka: cusboonaysiinta.
Markii ay taasi dhacday, websockets waxay noqdeen ku dhawaad ββadeegga caadiga ah ee codsiyada SPA, sababtoo ah sida ay ugu habboon tahay in la siiyo macluumaadka isticmaalaha hindisaha serverka (u gudbi fariinta isticmaale kale ama soo dejiso nooc cusub oo sawir ah, dukumeenti, soo bandhigid in qof kale hadda wax tafatiro) .
In kasta oo Shahaadada Macmiilku ay jirtay in muddo ah, haddana weli si liidata loo taageero, maadaama ay abuurto dhibaatooyin badan marka la isku dayo in laga gudbo. Iyo (laga yaabo :slightly_smiling_face: ) waana sababta daalacashada IOS (dhammaan laga reebo Safari) ma rabaan inay isticmaalaan oo ay ka codsadaan dukaanka shahaadaynta deegaanka. Shahaadooyinku waxay leeyihiin faa'iidooyin badan marka la barbar dhigo gelitaanka/pass ama furayaasha ssh ama xidhitaanka dekedaha lagama maarmaanka ah iyada oo loo marayo firewall. Laakiin taasi maaha waxa ay tani ku saabsan tahay.
IOS, habka loogu rakibo shahaado waa mid fudud (ma aha iyada oo aan wax gaar ah lahayn), laakiin guud ahaan waxaa loo sameeyaa si waafaqsan tilmaamaha, kuwaas oo ay jiraan wax badan oo internetka ah oo kaliya oo loo heli karo browserka Safari. Nasiib darro, Safari ma garanayo sida loo isticmaalo Client Cert ee saldhigyada webka, laakiin waxaa jira tilmaamo badan oo ku saabsan internetka oo ku saabsan sida loo abuuro shahaadadan, laakiin ficil ahaan tani waa mid aan la heli karin.
Si loo fahmo websockets, waxaan isticmaalnay qorshaha soo socda: dhibaato/malo awaal/xalin.
Dhibaato: ma jirto wax taageero ah oo loogu talagalay saldhigyada shabakada marka la wakiilanayo codsiyada agabka ay ilaaliso shahaadada macmiilka ee browserka mobaylka Safari ee IOS iyo codsiyada kale ee suurtageliyay taageerada shahaadada.
Mala-awaal:
Waa suurtogal in la habeeyo ka-reebitaankan oo kale si loo isticmaalo shahaadooyinka (iyadoo la og yahay inaysan jiri doonin) shabakadaha ilaha gudaha/dibadda ee proxied.
Sockets-ka, waxaad samayn kartaa xiriir gaar ah, sugan oo la difaaci karo adigoo isticmaalaya kalfadhiyo ku meel gaar ah oo la soo saaray inta lagu jiro codsiga browserka caadiga ah (non-websocket).
Kulamada ku meel gaadhka ah waxa lagu fulin karaa iyada oo la isticmaalayo hal server-ka wakiil (qayb-ku-dhisan iyo hawlo keliya).
Calaamadaha fadhiga ku meel gaadhka ah ayaa horeba loo hirgeliyey sidii qaybo Apache oo diyaarsan.
Calaamadaha fadhiga ku meel gaadhka ah waxaa lagu hirgelin karaa iyadoo si macquul ah loo naqshadeynayo qaabka isdhexgalka.
Xaalad muuqata ka dib hirgelinta.
Hadafka shaqada: maamulka adeegyada iyo kaabayaasha waa in laga heli karaa taleefanka gacanta ee IOS iyada oo aan la helin barnaamijyo dheeraad ah (sida VPN), midaysan oo sugan.
Hadafka dheeriga ah: Badbaadinta wakhtiga iyo agabka/taraafikada taleefanka (adeegyada qaarkood oo aan lahayn saldhigyada shabakadu waxay abuuraan codsiyo aan loo baahnayn) iyadoo si dhakhso leh loogu gudbinayo macluumaadka internetka moobiilka.
1. Waa suurtogal in la habeeyo ka-reebitaankan oo kale si loo isticmaalo shahaadooyinka (iyadoo la og yahay in aanay jiri doonin) saldhigyada shabakadaha gudaha/dibadda ee ilaha proxied.
Xaqiijinta shahaadadu waxay dhacdaa ka dib marka la codsado ilaha wakiillada, taas oo ah, gacan qaad codsi kadib. Tani waxay ka dhigan tahay in wakiilku marka hore soo shubi doono ka dibna uu jarayo codsiga adeegga la ilaaliyo. Tani waa xun, laakiin maaha mid muhiim ah;
In nidaamka http2. Wali waa qabyo, iyo soosaarayaasha browserka ma garanayaan sida loo fuliyo #info ku saabsan tls1.3 http2 gacan qaad kadib (aan shaqayn hadda) Hirgeli RFC 8740 "Isticmaalka TLS 1.3 oo wata HTTP/2";
Ma cadda sida loo midayn karo habayntan.
b) Heerka aasaasiga ah, ogow ssl bilaa shahaado.
SSLVerifyClient waxay u baahan tahay => SSLVerifyClient ikhtiyaari ah, laakiin tani waxay yaraynaysaa heerka amniga server-ka wakiilnimada, maadaama xidhiidhkan oo kale lagu farsamayn doono shahaado la'aan. Si kastaba ha ahaatee, waxaad si dheeraad ah u diidi kartaa helitaanka adeegyada wakiillada iyadoo la raacayo dardaaranka soo socda:
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteRule .? - [F]
ErrorDocument 403 "You need a client side certificate issued by CAcert to access this site"
Natiijadu waa naqshadda aasaasiga ah ee soo socota:
SSLVerifyClient optional
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule .? - [F]
#ErrorDocument 403 "You need a client side certificate issued by CAcert to access this site"
#websocket for safari without cert auth
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
...
#Π·Π°ΠΌΠ΅ΡΠ°Π΅ΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°
SSLUserName SSl_PROTOCOL
</If>
</If>
Anigoo tixgelinaya oggolaanshaha jira ee mulkiilaha shahaadada, laakiin leh shahaado maqan, waa inaan ku daraa mulkiilaha shahaado aan jirin oo ah qaab mid ka mid ah doorsoomayaasha la heli karo SSl_PROTOCOL (halkii SSL_CLIENT_S_DN_CN), faahfaahin dheeraad ah oo ku jirta dukumeentiga:
Tijaabadu waxay muujisay inay shaqaynayso. Waa suurtagal in aad ku wareejiso kukiyada adiga oo isticmaalaya browserka isticmaalaha.
3. Kulamada ku meel gaadhka ah waxa lagu fulin karaa iyada oo la isticmaalayo hal server web wakiil (kaliya qaybo iyo hawlo ku dhex dhisan).
Sida aan horay u ogaanay, Apache waxay leedahay wax badan oo ka mid ah shaqeynta asaasiga ah oo kuu ogolaaneysa inaad abuurto dhismo shuruudo ah. Si kastaba ha ahaatee, waxaan u baahanahay si aan u ilaalino macluumaadkayaga inta ay ku jirto browserka isticmaalaha, si aan u dejino waxa la kaydiyo iyo sababta, iyo waxa la dhisay ee aan isticmaali doono:
Waxaan u baahanahay calaamad aan si fudud loo kala saari karin.
Waxaan u baahanahay calaamad ku dhisan gabowga iyo awoodda lagu hubinayo gabowga ee server-ka.
Waxaan u baahanahay calaamad lala xiriirin doono mulkiilaha shahaadada.
Tani waxay u baahan tahay shaqo xashiish ah, milix, iyo taariikhda da'da calaamadda. Iyada oo ku saleysan dukumentiyada Odhaahyada ku jira Server-ka Apache HTTP waxaan dhamaanteen ka saarnay sanduuqa sha1 iyo %{TIME}.
Hadafka waa la gaarey, laakiin waxaa jira dhibaatooyin ku saabsan duugista server-ka (waxaad isticmaali kartaa kukiyada sanadka jira), taas oo macnaheedu yahay in calaamadaha, inkasta oo ay ammaan u yihiin isticmaalka gudaha, ay yihiin kuwo aan badbaado u ahayn isticmaalka warshadaha (mass).
4. Calaamadaha fadhiga ku meel gaadhka ah ayaa horeba loo hirgeliyey sidii qaybo Apache oo diyaarsan.
Hal dhibaato oo muhiim ah ayaa ka soo hadhay soo noqnoqonkii hore - awood la'aanta in la xakameeyo gabownimada calaamadda.
Waxaan raadineynaa cutub diyaarsan oo tan sameeya, sida ku cad erayada: apache token json two factor auth
Haa, waxaa jira qaybo diyaarsan, laakiin dhammaantood waxay ku xidhan yihiin ficillo gaar ah waxayna leeyihiin farshaxanno qaab bilaabista fadhiga iyo Kukiyada dheeraadka ah. Taasi waa, ma aha in muddo ah.
Shan saacadood ayay nagu qaadatay inaan baadhno, taasoo aan natiijo la taaban karo ka soo bixin.
5. Calaamadaha fadhiga ku meel gaadhka ah waxaa lagu fulin karaa iyadoo si macquul ah loo qaabeynayo qaab dhismeedka isdhexgalka.
Qaybaha diyaarsan waa kuwo aad u adag, sababtoo ah waxaan u baahanahay kaliya dhowr hawlood.
Taas marka la yiraahdo, dhibka taariikhda ku jira ayaa ah in Apache's-ku-dhismay hawlaha aysan oggolayn soo saarista taariikhda mustaqbalka, mana jirto wax xisaab ah oo lagu daray / kala-goynta hawlaha gudaha ku jira marka la hubinayo gabowga.
Taasi waa, ma qori kartid:
(%{env:zt-cert-date} + 30) > %{DATE}
Waxaad is barbar dhigi kartaa laba tiro oo kaliya.
Intii aan raadinayey xal u helida dhibaatada Safari, waxaan helay maqaal xiiso leh: Ku sugidda HomeAssistant shahaadooyinka macmiilka (wuxuu la shaqeeyaa Safari/iOS)
Waxay qeexaysaa tusaalaha koodka Lua ee Nginx, kaas oo, sida ay soo baxday, aad u soo noqnoqonaysa macquulnimada qaybta qaabeynta ee aan horey u hirgelinay, marka laga reebo isticmaalka habka cusbada hmac ee xashiishka ( kan aan laga helin Apache).
Waxaa caddaatay in Lua yahay luqad leh caqli cad, waxaana suurtagal ah in wax fudud loo sameeyo Apache:
Waxaan helnay hab lagu dejiyo doorsoomayaasha env fayl yar oo Lua ah si aan u dejino taariikhda mustaqbalka si loo barbardhigo tan hadda.
Tani waa sida qoraalka fudud ee Lua u eg yahay:
require 'apache2'
function handler(r)
local fmt = '%Y%m%d%H%M%S'
local timeout = 3600 -- 1 hour
r.notes['zt-cert-timeout'] = timeout
r.notes['zt-cert-date-next'] = os.date(fmt,os.time()+timeout)
r.notes['zt-cert-date-halfnext'] = os.date(fmt,os.time()+ (timeout/2))
r.notes['zt-cert-date-now'] = os.date(fmt,os.time())
return apache2.OK
end
Oo tani waa sida ay dhammaan u wada shaqeeyaan, iyada oo la wanaajinayo tirada Kukiyada iyo beddelka calaamadda marka nuska wakhtiga ay timaado ka hor inta uusan dhicin kukigii hore (calaamad):