እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

ጜሑፉ ለሚኹተለው ጠቃሚ ይሆናል-

  • Client Cert ምን እንደሆነ ያውቃል እና ለምን በሞባይል Safari ላይ ዌብሶኬቶቜ እንደሚያስፈልገው ይገነዘባል;
  • ዚድር አገልግሎቶቜን ለተወሰነ ዚሰዎቜ ክበብ ወይም ለራሎ ብቻ ማተም እፈልጋለሁ።
  • ሁሉም ነገር አስቀድሞ በአንድ ሰው እንደተሰራ ያስባል እና ዓለምን ትንሜ ዹበለጠ ምቹ እና ደህንነቱ ዹተጠበቀ ለማድሚግ ይፈልጋል።

ዚዌብሶኬቶቜ ታሪክ ዹጀመሹው ኹ 8 ዓመታት በፊት ነው. ኹዚህ ቀደም ዘዎዎቜ በሹጅም http ጥያቄዎቜ መልክ ጥቅም ላይ ውለው ነበር (በእውነቱ ምላሟቜ): ዹተጠቃሚው አሳሜ ወደ አገልጋዩ ጥያቄ ልኮ አንድ ነገር እንዲመልስ ጠበቀው, ኚመልሱ በኋላ እንደገና ተገናኝቶ ጠበቀ. ግን ኚዚያ በኋላ ዌብሶኬቶቜ ታዩ።

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

ኚጥቂት አመታት በፊት፣ ይህ ዹማገናኛ ንብርብር ስለሆነ ዹ https ጥያቄዎቜን መጠቀም በማይቜለው ዚራሳቜንን ትግበራ በንጹህ ፒኀቜፒ አዘጋጅተናል። ብዙም ሳይቆይ፣ ሁሉም ማለት ይቻላል ዚድር አገልጋዮቜ በ https ላይ ዚተኪ ጥያቄዎቜን እና ዚድጋፍ ግንኙነትን: ማሻሻልን ተምሚዋል።

ይህ በሚሆንበት ጊዜ ዌብሶኬቶቜ ለ SPA አፕሊኬሜኖቜ ነባሪ አገልግሎት ሆነዋል ፣ ምክንያቱም በአገልጋዩ ተነሳሜነት ይዘትን ለተጠቃሚው ለማቅሚብ ምን ያህል ምቹ ነው (ኹሌላ ተጠቃሚ መልእክት ማስተላለፍ ወይም አዲስ ዚምስል ፣ ዚሰነድ ፣ ዚዝግጅት አቀራሚብ ስሪት ያውርዱ) ሌላ ሰው በአሁኑ ጊዜ አርትዖት እያደሚገ ነው) .

ምንም እንኳን ዹደንበኛ ሰርተፊኬት ለሹጅም ጊዜ ዹቆዹ ቢሆንም፣ እሱን ለማለፍ ብዙ ቜግሮቜን ስለሚፈጥር አሁንም በጥሩ ሁኔታ አልተደገፈም። እና (ምናልባትም :slightly_smiling_face:) ለዚህ ነው IOS አሳሟቜ (ኚሳፋሪ በስተቀር) ሊጠቀሙበት ዚማይፈልጉት እና ኚአካባቢው ዚምስክር ወሚቀት ማኚማቻ ይጠይቁት። ዚምስክር ወሚቀቶቜ ኚመግቢያ/ማለፊያ ወይም ssh ቁልፎቜ ወይም አስፈላጊ ዚሆኑትን ወደቊቜ በፋዹርዎል ኚመዝጋት ጋር ሲነፃፀሩ ብዙ ጥቅሞቜ አሏ቞ው። ነገር ግን ይህ ስለ እሱ አይደለም.

በ iOS ላይ ዚምስክር ወሚቀት ዚመጫን ሂደቱ በጣም ቀላል ነው (ያለ ዝርዝር መግለጫዎቜ አይደለም), ነገር ግን በአጠቃላይ በመመሪያው መሰሚት ይኹናወናል, ኚእነዚህ ውስጥ ብዙ በይነመሚብ ላይ እና ለሳፋሪ አሳሜ ብቻ ዹሚገኙ ናቾው. እንደ አለመታደል ሆኖ ሳፋሪ Client Cert ን ለድር ሶኬቶቜ እንዎት እንደሚጠቀሙ አያውቅም ፣ ግን በበይነመሚብ ላይ እንደዚህ ያለ ዚምስክር ወሚቀት እንዎት መፍጠር እንደሚቜሉ ብዙ መመሪያዎቜ አሉ ፣ ግን በተግባር ይህ ሊደሚስበት ዚማይቜል ነው።

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

ዌብሶኬቶቜን ለመሚዳት ዹሚኹተለውን እቅድ ተጠቀምን። ቜግር / መላምት / መፍትሄ.

ቜግር: በSafari ሞባይል አሳሜ ለአይኊኀስ እና ሌሎቜ ዚእውቅና ማሚጋገጫ ድጋፍ ላደሹጉ አፕሊኬሜኖቜ በደንበኛ ሰርተፊኬት ለተጠበቁ ግብአቶቜ ጥያቄን ሲሰጡ ለድር ሶኬቶቜ ምንም ድጋፍ ዚለም።

መላምቶቜ፡-

  1. ሰርተፊኬቶቜን (ምንም እንደማይኖር በማወቅ) ዚውስጥ/ውጫዊ ተኪ ሃብቶቜ ዌብሶኬቶቜን ለመጠቀም እንዲህ ያለውን ልዩ ሁኔታ ማዋቀር ይቻላል።
  2. ለዌብሶኬቶቜ በመደበኛ (ዚዌብሶኬት ያልሆነ) አሳሜ በሚጠይቁ ጊዜ ዚሚፈጠሩ ጊዜያዊ ክፍለ ጊዜዎቜን በመጠቀም ልዩ፣ ደህንነቱ ዹተጠበቀ እና ተኚላካይ ግንኙነት መፍጠር ይቜላሉ።
  3. ጊዜያዊ ክፍለ ጊዜዎቜ አንድ ተኪ ዚድር አገልጋይ (አብሮገነብ ሞጁሎቜ እና ተግባራት ብቻ) በመጠቀም መተግበር ይቜላሉ።
  4. ጊዜያዊ ዹክፍለ ጊዜ ቶኚኖቜ እንደ ዝግጁ-ዚተሰሩ Apache ሞጁሎቜ ተተግብሚዋል።
  5. ዚግንኙነቱን መዋቅር አመክንዮ በመንደፍ ጊዜያዊ ዹክፍለ ጊዜ ቶኚኖቜ ሊተገበሩ ይቜላሉ።

ኚትግበራ በኋላ ዚሚታይ ሁኔታ.

ዚሥራው ዓላማ; ዚአገልግሎቶቜ እና መሠሹተ ልማት አስተዳደር ኚሞባይል ስልክ በ IOS ያለ ተጚማሪ ፕሮግራሞቜ (እንደ ቪፒኀን ያሉ) ፣ ዚተዋሃዱ እና ደህንነቱ ዹተጠበቀ መሆን አለባ቞ው።

ተጚማሪ ግብ፡ ጊዜን እና ሀብቶቜን/ዚስልክ ትራፊክን መቆጠብ (አንዳንድ ዚዌብ ሶኬቶቜ ዹሌላቾው አገልግሎቶቜ አላስፈላጊ ጥያቄዎቜን ያመነጫሉ) በተንቀሳቃሜ ስልክ በይነመሚብ ላይ ይዘትን በፍጥነት በማድሚስ።

እንዎት ማሚጋገጥ?

1. ዚመክፈቻ ገጟቜ:

— МапрОЌер, 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. ወይም በገንቢ ኮንሶል ውስጥ፡-

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

ዚመላምት ሙኚራ፡-

1. ዚምስክር ወሚቀቶቜን ለመጠቀም (ምንም እንደማይኖር በማወቅ) ዚውስጥ / ዹውጭ ፕሮክሲድ ሀብቶቜን ወደ ዌብ ሶኬቶቜ ለመጠቀም እንዲህ ያለውን ልዩ ሁኔታ ማዋቀር ይቻላል.

2 መፍትሄዎቜ እዚህ ተገኝተዋል:

ሀ) በደሹጃ

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

ዚመዳሚሻ ደሹጃን ይቀይሩ.

ይህ ዘዮ ዚሚኚተሉትን ጥቃቅን ነገሮቜ አሉት.

  • ዚምስክር ወሚቀት ማሚጋገጥ ዹሚኹሰተው ለተኪው ምንጭ ኹተጠዹቀ በኋላ ነው፣ ማለትም፣ ዚድህሚ ጥያቄ እጅ መጚባበጥ። ይህ ማለት ፕሮክሲው መጀመሪያ ይጫናል እና ኚዚያ ወደ ዹተጠበቀው አገልግሎት ጥያቄውን ያቋርጣል ማለት ነው። ይህ መጥፎ ነው, ነገር ግን ወሳኝ አይደለም;
  • በ http2 ፕሮቶኮል ውስጥ። አሁንም በሹቂቅ ላይ ነው፣ እና ዚአሳሜ አምራ቟ቜ እንዎት እንደሚተገብሩት አያውቁም #መሹጃ ስለ tls1.3 http2 ፖስት መጚባበጥ (አሁን እዚሰራ አይደለም) RFC 8740ን ተግብር "TLS 1.3 በ HTTP/2 በመጠቀም";
  • ይህንን ሂደት እንዎት አንድ ማድሚግ እንደሚቻል ግልጜ አይደለም.

ለ) በመሠሚታዊ ደሹጃ, ssl ያለ ዚምስክር ወሚቀት ፍቀድ.

SSLVerifyClient ይጠይቃል => SSLVerifyClient አማራጭ ነው፣ነገር ግን ይህ ዚተኪ አገልጋዩን ዚደህንነት ደሹጃ ይቀንሳል፣ይህ ዓይነቱ ግንኙነት ያለ ሰርተፊኬት ስለሚካሄድ ነው። ሆኖም፣ በሚኹተለው መመሪያ ተጚማሪ ዚተኪ አገልግሎቶቜን መዳሚሻ መኹልኹል ትቜላለህ፡-

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"

ስለ ssl በሚለው ጜሑፍ ውስጥ ዹበለጠ ዝርዝር መሹጃ ማግኘት ይቻላል- ዹ Apache አገልጋይ ደንበኛ ዚምስክር ወሚቀት ማሚጋገጫ

ሁለቱም አማራጮቜ ተፈትነዋል፣ አማራጭ "ለ" ዹተመሹጠው ሁለገብነቱ እና ኹ http2 ፕሮቶኮል ጋር ባለው ተኳሃኝነት ነው።

ዹዚህን መላምት ማሚጋገጫ ለማጠናቀቅ፣ በማዋቀሩ ላይ ብዙ ሙኚራዎቜን ወስዷልፀ ዚሚኚተሉት ንድፎቜ ተፈትነዋል፡-

ኹሆነ = ተፈላጊ = እንደገና ይፃፉ

ውጀቱም ዹሚኹተለው መሰሚታዊ ንድፍ ነው.

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>

በእውቅና ማሚጋገጫው ባለቀት ያለውን ፈቃድ ኚግምት ውስጥ በማስገባት፣ ነገር ግን ዹጎደለ ዚምስክር ወሚቀት ካለ፣ ኚኀስኀስኀል_PROTOCOL ተለዋዋጭ (ኹSSL_CLIENT_S_DN_CN ይልቅ)፣ በሰነዱ ውስጥ ያሉ ተጚማሪ ዝርዝሮቜን፣ ዹሌለ ዚምስክር ወሚቀት ባለቀት ማኹል ነበሚብኝ፡-

Apache Module mod_ssl

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

2. ለዌብሶኬቶቜ በመደበኛ (ዚዌብሶኬት ያልሆነ) አሳሜ በሚጠይቁ ጊዜ ዚሚፈጠሩ ጊዜያዊ ክፍለ ጊዜዎቜን በመጠቀም ልዩ፣ ደህንነቱ ዹተጠበቀ እና ዹተጠበቀ ግንኙነት መፍጠር ይቜላሉ።

በቀድሞው ልምድ ላይ በመመስሚት በመደበኛ (ዚድር-ያልሆነ ሶኬት) ጥያቄ ጊዜ ለድር ሶኬት ግንኙነቶቜ ጊዜያዊ ምልክቶቜን ለማዘጋጀት ውቅሩ ላይ ተጚማሪ ክፍል ማኹል ያስፈልግዎታል።

#пПЎгПтПвка переЎача себе С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>

ሙኚራው እንደሚሰራ አሳይቷል። በተጠቃሚው አሳሜ በኩል ኩኪዎቜን ወደ እራስዎ ማስተላለፍ ይቻላል.

3. ጊዜያዊ ክፍለ ጊዜዎቜ አንድ ተኪ ዌብ አገልጋይ (አብሮገነብ ሞጁሎቜ እና ተግባራት ብቻ) በመጠቀም ሊተገበሩ ይቜላሉ.

ቀደም ብለን እንዳዚነው Apache ሁኔታዊ ግንባታዎቜን እንዲፈጥሩ ዚሚያስቜልዎ በጣም ብዙ ዋና ተግባራት አሉት። ነገር ግን፣ መሚጃቜን በተጠቃሚው አሳሜ ውስጥ እያለ ለመጠበቅ ዘዮ እንፈልጋለን፣ ስለዚህ ምን እና ለምን እንደምናኚማቜ እና ምን አይነት አብሮ ዚተሰሩ ተግባራትን እንደምንጠቀም እንገልፃለን፡

  • በቀላሉ ሊፈታ ዚማይቜል ቶኚን እንፈልጋለን።
  • በውስጡ አብሮ ዚተሰራው ጊዜ ያለፈበት እና በአገልጋዩ ላይ ጊዜ ያለፈበትን ዚመፈተሜ ቜሎታ ያለው ቶኚን እንፈልጋለን።
  • ኚምስክር ወሚቀቱ ባለቀት ጋር ዹሚገናኝ ቶኚን እንፈልጋለን።

ይህ ማስመሰያውን ለማሹጅ ዚሃሺንግ ተግባር፣ ጹው እና ቀን ያስፈልገዋል። በሰነዱ መሰሚት በ Apache HTTP አገልጋይ ውስጥ ያሉ መግለጫዎቜ ሁሉንም ኚሳጥኑ sha1 እና %{TIME} ውጭ አለን።

ውጀቱም ይህ ንድፍ ነበር-

#Мет сертОфОката, О ПбращеМОе к 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>

ግቡ ተሳክቷል, ነገር ግን በአገልጋይ ጊዜ ያለፈበት ጊዜ ቜግሮቜ አሉ (አንድ አመት ኩኪን መጠቀም ይቜላሉ), ይህ ማለት ቶኚኖቜ ምንም እንኳን ለውስጣዊ አጠቃቀም ምንም እንኳን ደህንነታ቞ው ዹተጠበቀ ቢሆንም, ለኢንዱስትሪ (ጅምላ) አጠቃቀም ደህንነቱ ያልተጠበቀ ነው.

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

4. ጊዜያዊ ዹክፍለ ጊዜ ቶኚኖቜ እንደ ዝግጁ-ዚተሰሩ Apache ሞጁሎቜ ተተግብሚዋል።

ኚቀዳሚው ድግግሞሜ አንድ ጉልህ ቜግር ቀርቷል - ማስመሰያ እርጅናን መቆጣጠር አለመቻል።

በቃላት መሰሚት ይህን ዚሚያደርግ ዝግጁ ዹሆነ ሞጁል እዚፈለግን ነው፡ apache token json two factor auth

አዎ, ዝግጁ ዹሆኑ ሞጁሎቜ አሉ, ነገር ግን ሁሉም ኹተወሰኑ ድርጊቶቜ ጋር ዚተሳሰሩ እና አንድ ክፍለ ጊዜ እና ተጚማሪ ኩኪዎቜን በመጀመር መልክ ቅርሶቜ አሏቾው. ለተወሰነ ጊዜ አይደለም ማለት ነው።
ለመፈለግ አምስት ሰዓት ፈጅቶብናል፣ ይህም ተጚባጭ ውጀት አላስገኘም።

5. ዚግንኙነቶቜን መዋቅር አመክንዮ በመንደፍ ጊዜያዊ ዹክፍለ ጊዜ ቶኚኖቜ ሊተገበሩ ይቜላሉ.

ዝግጁ ዹሆኑ ሞጁሎቜ በጣም ውስብስብ ናቾው, ምክንያቱም እኛ ዹምንፈልገው ሁለት ተግባራት ብቻ ነው.

ይህ በተባለው ጊዜ፣ ዹቀኑን ቜግር ዹApache አብሮገነብ ተግባራት ኚወደፊቱ ቀን ማመንጚትን ዚማይፈቅዱ መሆናቾው ነው፣ እና አብሮገነብ ተግባራት ጊዜ ያለፈበትን ጊዜ ሲፈትሹ ምንም ዚሂሳብ መደመር/መቀነስ ዚለም።

ማለትም፡ መጻፍ አይቜሉም፡-

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

ሁለት ቁጥሮቜን ብቻ ማወዳደር ይቜላሉ.

ለሳፋሪ ቜግር መፍትሄ ፍለጋ ላይ ሳለሁ አንድ አስደሳቜ መጣጥፍ አገኘሁ፡- HomeAssistantን ኹደንበኛ ሰርተፊኬቶቜ ጋር ማስጠበቅ (ኹSafari/iOS ጋር ይሰራል)
እሱ በሉአ ለ Nginx ውስጥ ያለውን ኮድ ምሳሌ ይገልፃል ፣ እና እንደ ተለወጠ ፣ ቀደም ሲል ዹተተገበርነውን ዹውቅር ክፍል አመክንዮ በጣም ይደግማል ፣ ዹ hmac ዹጹው ዘዮን ለሃሜ ኹመጠቀም በስተቀር () ይህ በ Apache ውስጥ አልተገኘም)።

ሉአ ግልጜ ዹሆነ አመክንዮ ያለው ቋንቋ እንደሆነ ግልጜ ሆነ፣ እና ለ Apache ቀላል ነገር ማድሚግ ይቻላል፡-

ኹ Nginx እና Apache ጋር ያለውን ልዩነት በማጥናት-

እና ኹሉዋ ቋንቋ አምራቜ ዹሚገኙ ተግባራት፡-
22.1 - ቀን እና ሰዓት

ኹአሁኑ ጋር ለማነፃፀር ኚወደፊቱ ቀን ለመወሰን በትንሜ ዹሉዋ ፋይል ውስጥ env ተለዋዋጮቜን ዚምናዘጋጅበት መንገድ አግኝተናል።

ቀላል ዹሉዋ ስክሪፕት ይህን ይመስላል፡-

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

እና ዚድሮው ኩኪ (ማስመሰያ) ኚማብቃቱ በፊት ግማሜ ጊዜው ሲደርስ ዚኩኪዎቜን ብዛት በማሻሻል እና ምልክቱን በመተካት ሁሉም ነገር በአጠቃላይ እንዎት እንደሚሰራ ይህ ነው ።

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 

ምክንያቱም LuaHookAccessChecker ዹሚነቃው በዚህ ዹNginx መሹጃ መሰሚት ዚመዳሚሻ ፍተሻዎቜ ኹተደሹጉ በኋላ ብቻ ነው።

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

ወደ ምንጭ አገናኝ ምስል.

አንድ ተጚማሪ ነገር.

በአጠቃላይ ፣ መመሪያዎቹ በ Apache (ምናልባትም Nginx) ውቅር ውስጥ በምን አይነት ቅደም ተኹተል እንደተፃፉ ምንም ለውጥ ዹለውም ፣ ምክንያቱም በመጚሚሻ ሁሉም ነገር በተጠቃሚው ዹቀሹበውን ጥያቄ ቅደም ተኹተል ላይ በመመርኮዝ ይደሚደራል ፣ ይህም ኚሂደቱ እቅድ ጋር ይዛመዳል። ዹሉአ ስክሪፕቶቜ።

ማጠናቀቅ፡

ኚትግበራ በኋላ ዚሚታይ ሁኔታ (ግብ)
ዚአገልግሎቶቜ እና መሠሹተ ልማት አስተዳደር ያለ ተጚማሪ ፕሮግራሞቜ (ቪፒኀን) ፣ ዹተዋሃደ እና ደህንነቱ ዹተጠበቀ ኚሞባይል ስልክ በ IOS ይገኛል።

ግቡ ተሳክቷል, ዚዌብ ሶኬቶቜ ይሠራሉ እና ኚሰርቲፊኬት ያላነሰ ዚደህንነት ደሹጃ አላቾው.

እኛ ዜሮ቎ክ እንዎት አፕል ሳፋሪን እና ዹደንበኛ ሰርተፊኬቶቜን ኚዌብሶኬቶቜ ጋር እንዳገናኘን።

ምንጭ: hab.com

አስተያዚት ያክሉ