Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

Nakala hiyo itakuwa muhimu kwa wale ambao:

  • anajua Cert ya Mteja ni nini na inaelewa kwa nini inahitaji soketi za wavuti kwenye Safari ya rununu;
  • Ningependa kuchapisha huduma za wavuti kwa mduara mdogo wa watu au kwangu tu;
  • anadhani kwamba kila kitu tayari kimefanywa na mtu, na angependa kufanya ulimwengu kuwa rahisi zaidi na salama zaidi.

Historia ya soketi za wavuti ilianza kama miaka 8 iliyopita. Hapo awali, mbinu zilitumiwa kwa namna ya maombi ya muda mrefu ya http (kwa kweli majibu): kivinjari cha mtumiaji kilituma ombi kwa seva na kusubiri kujibu kitu, baada ya majibu iliunganisha tena na kusubiri. Lakini basi soketi za wavuti zilionekana.

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

Miaka michache iliyopita, tulitengeneza utekelezaji wetu wenyewe katika PHP safi, ambayo haiwezi kutumia maombi ya https, kwani hii ndiyo safu ya kiungo. Si muda mrefu uliopita, karibu seva zote za wavuti zilijifunza kutuma maombi ya seva mbadala kupitia https na muunganisho wa usaidizi:boresha.

Wakati hii ilifanyika, soketi za wavuti zikawa karibu huduma chaguo-msingi kwa programu za SPA, kwa sababu jinsi inavyofaa kutoa yaliyomo kwa mtumiaji kwa mpango wa seva (kusambaza ujumbe kutoka kwa mtumiaji mwingine au kupakua toleo jipya la picha, hati, uwasilishaji. ambayo mtu mwingine anaihariri kwa sasa) .

Ingawa Cheti cha Mteja kimekuwepo kwa muda mrefu, bado kinasalia kuwa na msaada duni, kwani huleta shida nyingi wakati wa kujaribu kukipita. Na (inawezekana :slightly_smiling_face: ) ndiyo sababu vivinjari vya IOS (zote isipokuwa Safari) hazitaki kuitumia na kuiomba kutoka kwa duka la cheti la karibu. Vyeti vina manufaa mengi ikilinganishwa na funguo za kuingia/kupita au ssh au kufunga milango muhimu kupitia ngome. Lakini hii sivyo inahusu.

Kwenye iOS, utaratibu wa kufunga cheti ni rahisi sana (sio bila maalum), lakini kwa ujumla hufanywa kulingana na maagizo, ambayo kuna mengi kwenye mtandao na ambayo yanapatikana tu kwa kivinjari cha Safari. Kwa bahati mbaya, Safari hajui jinsi ya kutumia Mteja Π‘ert kwa soketi za wavuti, lakini kuna maagizo mengi kwenye mtandao juu ya jinsi ya kuunda cheti kama hicho, lakini kwa mazoezi hii haipatikani.

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

Ili kuelewa soketi za wavuti, tulitumia mpango ufuatao: tatizo/dhahania/suluhisho.

Tatizo: hakuna msaada kwa soketi za wavuti wakati wa kutuma maombi ya seva mbadala kwa rasilimali ambazo zinalindwa na cheti cha mteja kwenye kivinjari cha simu cha Safari cha IOS na programu zingine ambazo zimewezesha usaidizi wa cheti.

Nadharia:

  1. Inawezekana kusanidi ubaguzi kama huu ili kutumia vyeti (kwa kujua kuwa hakutakuwa na chochote) kwa soketi za wavuti za rasilimali za proksi za ndani/nje.
  2. Kwa soketi za wavuti, unaweza kufanya muunganisho wa kipekee, salama na unaoweza kutetewa kwa kutumia vipindi vya muda ambavyo vinatolewa wakati wa ombi la kawaida la kivinjari (isiyo ya tundu la wavuti).
  3. Vipindi vya muda vinaweza kutekelezwa kwa kutumia seva moja ya seva mbadala (moduli na vitendakazi vilivyojengwa ndani pekee).
  4. Tokeni za kikao cha muda tayari zimetekelezwa kama moduli za Apache zilizotengenezwa tayari.
  5. Ishara za kikao cha muda zinaweza kutekelezwa kwa kubuni kimantiki muundo wa mwingiliano.

Hali inayoonekana baada ya utekelezaji.

Lengo la kazi: usimamizi wa huduma na miundombinu inapaswa kupatikana kutoka kwa simu ya mkononi kwenye IOS bila programu za ziada (kama vile VPN), zilizounganishwa na salama.

Lengo la ziada: kuokoa muda na rasilimali/trafiki ya simu (baadhi ya huduma bila soketi za wavuti hutoa maombi yasiyo ya lazima) kwa uwasilishaji wa haraka wa yaliyomo kwenye Mtandao wa simu.

Jinsi ya kuangalia?

1. Kufungua kurasa:

β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://teamcity.yourdomain.com Π² мобильном Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Safari (доступСн Ρ‚Π°ΠΊΠΆΠ΅ Π² дСсктопной вСрсии) β€” Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π²Π΅Π±-сокСтам.
β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://teamcity.yourdomain.com/admin/admin.html?item=diagnostics&tab=webS…— ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ping/pong.
β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://rancher.yourdomain.com/p/c-84bnv:p-vkszd/workload/deployment:danidb:ph…-> viewlogs β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

2. Au kwenye koni ya msanidi:

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

Mtihani wa Hypothesis:

1. Inawezekana kusanidi ubaguzi kama huo ili kutumia vyeti (kwa kujua kuwa hakutakuwepo) kwenye soketi za wavuti za rasilimali za ndani/nje zilizowekwa seva mbadala.

Suluhu 2 zilipatikana hapa:

a) Katika ngazi

<Location sock*> SSLVerifyClient optional </Location>
<Location /> SSLVerifyClient require </Location>

badilisha kiwango cha ufikiaji.

Njia hii ina nuances zifuatazo:

  • Uthibitishaji wa cheti hutokea baada ya ombi kwa rasilimali iliyotumwa, yaani, kupeana mkono kwa ombi la chapisho. Hii inamaanisha kuwa proksi itapakia kwanza na kisha kukata ombi kwa huduma iliyolindwa. Hii ni mbaya, lakini sio muhimu;
  • Katika itifaki ya http2. Bado iko kwenye rasimu, na watengenezaji wa vivinjari hawajui jinsi ya kuitekeleza #maelezo kuhusu tls1.3 http2 postshake handshake (haifanyi kazi sasa) Tekeleza RFC 8740 "Kwa kutumia TLS 1.3 na HTTP/2";
  • Haijulikani wazi jinsi ya kuunganisha uchakataji huu.

b) Katika kiwango cha msingi, ruhusu ssl bila cheti.

SSLVerifyClient need => SSLVerifyClient ni hiari, lakini hii inapunguza kiwango cha usalama cha seva mbadala, kwani muunganisho kama huo utachakatwa bila cheti. Hata hivyo, unaweza kukataa zaidi ufikiaji wa huduma za wakala kwa maelekezo yafuatayo:

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"

Maelezo zaidi yanaweza kupatikana katika makala kuhusu ssl: Uthibitishaji wa Cheti cha Mteja wa Seva ya Apache

Chaguo zote mbili zilijaribiwa, chaguo "b" lilichaguliwa kwa matumizi mengi na uoanifu na itifaki ya http2.

Ili kukamilisha uthibitishaji wa dhana hii, ilichukua majaribio mengi na usanidi; miundo ifuatayo ilijaribiwa:

ikiwa = zinahitaji = andika upya

Matokeo yake ni muundo wa msingi ufuatao:

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>

Kwa kuzingatia uidhinishaji uliopo wa mwenye cheti, lakini cheti ambacho hakipo, ilinibidi kuongeza mmiliki wa cheti ambaye hayupo katika mfumo wa mojawapo ya vibadala vinavyopatikana SSl_PROTOCOL (badala ya SSL_CLIENT_S_DN_CN), maelezo zaidi katika hati:

Moduli ya Apache mod_ssl

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

2. Kwa soketi za wavuti, unaweza kufanya muunganisho wa kipekee, salama na unaolindwa kwa kutumia vipindi vya muda ambavyo vinatolewa wakati wa ombi la kawaida la kivinjari (lisilo la mtandao).

Kulingana na uzoefu uliopita, unahitaji kuongeza sehemu ya ziada kwenye usanidi ili kuandaa tokeni za muda za miunganisho ya soketi za wavuti wakati wa ombi la kawaida (isiyo ya mtandao).

#ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сСбС Π‘ookie Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€
<If "%{SSL:SSL_CLIENT_VERIFY} = 'SUCCESS'">
<If "%{HTTP:Upgrade} != 'websocket'">
Header set Set-Cookie "websocket-allowed=true; path=/; Max-Age=100"
</If>
</If>

#ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Cookie для установлСния Π²Π΅Π±-сокСт соСдинСния
<source lang="javascript">
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
#check for exists cookie

#get and check
SetEnvIf Cookie "websocket-allowed=(.*)" env-var-name=$1

#or rewrite rule
RewriteCond %{HTTP_COOKIE} !^.*mycookie.*$

#or if
<If "%{HTTP_COOKIE} =~ /(^|; )cookie-names*=s*some-val(;|$)/ >
</If

</If>
</If>

Upimaji ulionyesha kuwa inafanya kazi. Inawezekana kuhamisha Vidakuzi kwako kupitia kivinjari cha mtumiaji.

3. Vipindi vya muda vinaweza kutekelezwa kwa kutumia seva moja ya wakala ya wavuti (moduli na vitendaji vilivyojengwa pekee).

Kama tulivyogundua hapo awali, Apache ina utendakazi mwingi wa msingi ambao hukuruhusu kuunda muundo wa masharti. Hata hivyo, tunahitaji njia za kulinda maelezo yetu yakiwa katika kivinjari cha mtumiaji, ili tubaini tutakachohifadhi na kwa nini, na ni vitendaji gani vilivyojumuishwa tutatumia:

  • Tunahitaji ishara ambayo haiwezi kutatuliwa kwa urahisi.
  • Tunahitaji ishara ambayo imepitwa na wakati ndani yake na uwezo wa kuangalia uchakavu kwenye seva.
  • Tunahitaji tokeni ambayo itahusishwa na mmiliki wa cheti.

Hii inahitaji utendakazi wa hashing, chumvi, na tarehe ya kuzeeka tokeni. Kulingana na nyaraka Maneno katika Seva ya Apache HTTP tunayo yote nje ya boksi sha1 na %{TIME}.

Matokeo yake yalikuwa muundo huu:

#Π½Π΅Ρ‚ сСртификата, ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ websocket
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
    SetEnvIf Cookie "zt-cert-sha1=([^;]+)" zt-cert-sha1=$1
    SetEnvIf Cookie "zt-cert-uid=([^;]+)" zt-cert-uid=$1
    SetEnvIf Cookie "zt-cert-date=([^;]+)" zt-cert-date=$1

#Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² env-Π°Ρ… Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π±ΠΎΠ»Π΅Π΅ ΠΎΠ½ΠΈ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ доступны для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ (ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½Π΅ вмСстС, Π΄Π° ΠΈ Π΅Ρ‰Ρ‘ с Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ)
    <RequireAll>
        Require expr %{sha1:salt1%{env:zt-cert-date}salt3%{env:zt-cert-uid}salt2} == %{env:zt-cert-sha1}
        Require expr %{env:zt-cert-sha1} =~ /^.{40}$/
    </RequireAll>
</If>
</If>

#Π΅ΡΡ‚ΡŒ сСртификат, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π½Π΅ websocket
<If "%{SSL:SSL_CLIENT_VERIFY} = 'SUCCESS'">
<If "%{HTTP:Upgrade} != 'websocket'">
    SetEnvIf Cookie "zt-cert-sha1=([^;]+)" HAVE_zt-cert-sha1=$1

    SetEnv zt_cert "path=/; HttpOnly;Secure;SameSite=Strict"
#НовыС ΠΊΡƒΠΊΠΈ ставятся, Ссли старых Π½Π΅Ρ‚
    Header add Set-Cookie "expr=zt-cert-sha1=%{sha1:salt1%{TIME}salt3%{SSL_CLIENT_S_DN_CN}salt2};%{env:zt_cert}" env=!HAVE_zt-cert-sha1
    Header add Set-Cookie "expr=zt-cert-uid=%{SSL_CLIENT_S_DN_CN};%{env:zt_cert}" env=!HAVE_zt-cert-sha1
    Header add Set-Cookie "expr=zt-cert-date=%{TIME};%{env:zt_cert}" env=!HAVE_zt-cert-sha1
</If>
</If>

Lengo limefikiwa, lakini kuna matatizo na kutokuwepo kwa seva (unaweza kutumia Cookie ya umri wa miaka), ambayo ina maana kwamba ishara, ingawa ni salama kwa matumizi ya ndani, si salama kwa matumizi ya viwanda (molekuli).

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

4. Tokeni za kikao cha muda tayari zimetekelezwa kama moduli za Apache zilizotengenezwa tayari.

Tatizo moja kubwa lilibaki kutoka kwa marudio ya awali - kutokuwa na uwezo wa kudhibiti kuzeeka kwa ishara.

Tunatafuta moduli iliyotengenezwa tayari ambayo hufanya hivi, kulingana na maneno: ishara ya apache json two factor auth

Ndiyo, kuna moduli zilizopangwa tayari, lakini zote zimefungwa kwa vitendo maalum na zina mabaki kwa namna ya kuanzisha kikao na Vidakuzi vya ziada. Hiyo ni, sio kwa muda.
Ilituchukua saa tano kutafuta, ambayo haikutoa matokeo halisi.

5. Ishara za kikao cha muda zinaweza kutekelezwa kwa kubuni kimantiki muundo wa mwingiliano.

Moduli zilizotengenezwa tayari ni ngumu sana, kwa sababu tunahitaji vitendaji kadhaa tu.

Hiyo inasemwa, shida na tarehe ni kwamba kazi za kujengwa za Apache haziruhusu kutoa tarehe kutoka siku zijazo, na hakuna kuongeza / kutoa hisabati katika kazi zilizojengwa wakati wa kuangalia uchakavu.

Hiyo ni, huwezi kuandika:

(%{env:zt-cert-date} + 30) > %{DATE}

Unaweza kulinganisha nambari mbili tu.

Wakati nikitafuta suluhisho la shida ya Safari, nilipata nakala ya kupendeza: Kulinda Msaidizi wa Nyumbani na cheti cha mteja (hufanya kazi na Safari/iOS)
Inaelezea mfano wa nambari katika Lua kwa Nginx, na ambayo, kama ilivyotokea, inarudia sana mantiki ya sehemu hiyo ya usanidi ambayo tayari tumetekeleza, isipokuwa matumizi ya njia ya chumvi ya hmac kwa hashing ( hii haikupatikana katika Apache).

Ilibainika kuwa Lua ni lugha yenye mantiki wazi, na inawezekana kufanya jambo rahisi kwa Apache:

Baada ya kusoma tofauti na Nginx na Apache:

Na vipengele vinavyopatikana kutoka kwa mtengenezaji wa lugha ya Lua:
22.1 - Tarehe na Wakati

Tulipata njia ya kuweka vigezo vya env katika faili ndogo ya Lua ili kuweka tarehe kutoka siku zijazo ili kulinganisha na ya sasa.

Hivi ndivyo hati rahisi ya Lua inaonekana kama:

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

Na hivi ndivyo inavyofanya kazi kwa jumla, na uboreshaji wa idadi ya Vidakuzi na uingizwaji wa ishara wakati nusu ya wakati inakuja kabla ya Cookie ya zamani (ishara) kuisha:

SSLVerifyClient optional

#LuaScope thread
#generate event variables zt-cert-date-next
LuaHookAccessChecker /usr/local/etc/apache24/sslincludes/websocket_token.lua handler early

#Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ Π±Π΅Π· сСртификата Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘, ΠΊΡ€ΠΎΠΌΠ΅ webscoket
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 certauth
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
    SetEnvIf Cookie "zt-cert=([^,;]+),([^,;]+),[^,;]+,([^,;]+)" zt-cert-sha1=$1 zt-cert-date=$2 zt-cert-uid=$3

    <RequireAll>
        Require expr %{sha1:salt1%{env:zt-cert-date}salt3%{env:zt-cert-uid}salt2} == %{env:zt-cert-sha1}
        Require expr %{env:zt-cert-sha1} =~ /^.{40}$/
        Require expr %{env:zt-cert-date} -ge %{env:zt-cert-date-now}
    </RequireAll>
   
    #Π·Π°ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ сСртификата Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°
    SSLUserName SSl_PROTOCOL
    SSLOptions -FakeBasicAuth
</If>
</If>

<If "%{SSL:SSL_CLIENT_VERIFY} = 'SUCCESS'">
<If "%{HTTP:Upgrade} != 'websocket'">
    SetEnvIf Cookie "zt-cert=([^,;]+),[^,;]+,([^,;]+)" HAVE_zt-cert-sha1=$1 HAVE_zt-cert-date-halfnow=$2
    SetEnvIfExpr "env('HAVE_zt-cert-date-halfnow') -ge %{TIME} && env('HAVE_zt-cert-sha1')=~/.{40}/" HAVE_zt-cert-sha1-found=1

    Define zt-cert "path=/;Max-Age=%{env:zt-cert-timeout};HttpOnly;Secure;SameSite=Strict"
    Define dates_user "%{env:zt-cert-date-next},%{env:zt-cert-date-halfnext},%{SSL_CLIENT_S_DN_CN}"
    Header set Set-Cookie "expr=zt-cert=%{sha1:salt1%{env:zt-cert-date-next}sal3%{SSL_CLIENT_S_DN_CN}salt2},${dates_user};${zt-cert}" env=!HAVE_zt-cert-sha1-found
</If>
</If>

SetEnvIfExpr "env('HAVE_zt-cert-date-halfnow') -ge %{TIME} && env('HAVE_zt-cert-sha1')=~/.{40}/" HAVE_zt-cert-sha1-found=1
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚,

Π° Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚
SetEnvIfExpr "env('HAVE_zt-cert-date-halfnow') -ge  env('zt-cert-date-now') && env('HAVE_zt-cert-sha1')=~/.{40}/" HAVE_zt-cert-sha1-found=1 

Kwa sababu LuaHookAccessChecker itawezeshwa tu baada ya ukaguzi wa ufikiaji kulingana na maelezo haya kutoka kwa Nginx.

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

Unganisha kwa chanzo picha.

Kitu kimoja zaidi.

Kwa ujumla, haijalishi ni kwa mpangilio gani maagizo yameandikwa katika usanidi wa Apache (labda pia Nginx), kwani mwishowe kila kitu kitapangwa kulingana na agizo la ombi kutoka kwa mtumiaji, ambalo linalingana na mpango wa usindikaji. Maandishi ya Lua.

Kukamilika:

Hali inayoonekana baada ya utekelezaji (lengo):
usimamizi wa huduma na miundombinu inapatikana kutoka kwa simu ya mkononi kwenye IOS bila programu za ziada (VPN), zilizounganishwa na salama.

Lengo limefikiwa, soketi za wavuti hufanya kazi na kuwa na kiwango cha usalama sio chini ya cheti.

Jinsi sisi katika ZeroTech tuliunganisha Apple Safari na vyeti vya mteja na soketi za wavuti

Chanzo: mapenzi.com

Kuongeza maoni