Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

Ka whai hua te tuhinga ki te hunga e:

  • e mohio ana he aha te Tiwhikete Kiritaki me te mohio he aha te take e hiahia ana ia ki nga turanga tukutuku i runga i te Safari pūkoro;
  • Kei te pirangi au ki te whakaputa i nga ratonga tukutuku ki tetahi porowhita iti o te tangata, ki ahau anake ranei;
  • ki te whakaaro kua oti kee nga mea katoa e te tangata, me te pirangi kia pai ake te noho o te ao me te noho haumaru.

I timata te hitori o nga turanga tukutuku mo te 8 tau ki muri. I mua, i whakamahia nga tikanga i roto i te ahua o nga tono http roa (he whakautu pono): ka tukuna e te kaitirotiro a te kaiwhakamahi he tono ki te tūmau me te tatari mo te whakautu i tetahi mea, i muri i te whakautu ka hono ano ka tatari. Engari ka puta mai nga turanga tukutuku.

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

I etahi tau kua pahure ake nei, i whakawhanakehia e matou ta matou ake whakatinanatanga i roto i te PHP parakore, kaore e taea te whakamahi i nga tono https, na te mea koinei te paparanga hono. No mua tata nei, tata katoa nga kaitoro paetukutuku i ako ki te tono takawaenga mo te https me te tautoko hononga:whakahou.

I te wa i pa ai tenei, kua tata te ratonga taunoa mo nga tono SPA, na te mea he pai ki te whakarato ihirangi ki te kaiwhakamahi i runga i te kaupapa a te tūmau (tuku karere mai i tetahi atu kaiwhakamahi, tango ranei i tetahi waahanga hou o te ahua, tuhinga, whakaaturanga. kei te whakatika tetahi atu i tenei wa) .

Ahakoa kua roa te Tiwhikete Kiritaki, kei te noho ngoikore tonu te tautoko, na te mea he maha nga raru e ngana ana ki te karo. A (pea :slightly_smiling_face: ) na reira nga kaitirotiro IOS (katoa haunga a Safari) kaore e hiahia ki te whakamahi me te tono mai i te toa tiwhikete o te rohe. He maha nga painga o nga Tiwhikete ina whakaritea ki te takiuru/paahi, ki te ssh ranei, ki te kati ranei i nga tauranga e tika ana ma te papaahi. Engari ehara tenei i te mea.

I runga i te iOS, ko te tikanga mo te whakauru i te tiwhikete he tino ngawari (kaore i te mea motuhake), engari i te nuinga o te waa ka mahia i runga i nga tohutohu, he maha nga mea kei runga i te Ipurangi ka waatea noa mo te kaitirotiro Safari. Heoi, kaore a Safari e mohio ki te whakamahi i te Kiritaki Сert mo nga turanga paetukutuku, engari he maha nga tohutohu kei runga ipurangi me pehea te hanga tiwhikete pera, engari i roto i nga mahi kaore e taea.

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

Ki te mohio ki nga turanga tukutuku, i whakamahia e matou te mahere e whai ake nei: raruraru / whakaaro / otinga.

He raruraru: karekau he tautoko mo nga turanga tukutuku ina tono takawaenga ki nga rauemi e tiakina ana e te tiwhikete kiritaki i runga i te kaitirotiro pūkoro Safari mo te IOS me etahi atu tono kua taea te tautoko tiwhikete.

Whakaaroaro:

  1. Ka taea te whirihora i tera tuunga ki te whakamahi i nga tiwhikete (me te mohio karekau) ki nga turanga tukutuku o nga rauemi takawaenga o roto/waho.
  2. Mo nga turanga tukutuku, ka taea e koe te hanga hononga ahurei, haumaru me te arai ma te whakamahi i nga waahi rangitahi ka hangaia i roto i te tono tirotiro noa (kore-tukutuku).
  3. Ka taea te whakatinana i nga huihuinga rangitahi ma te whakamahi i tetahi tūmau tukutuku takawaenga (ko nga waahanga me nga mahi anake).
  4. Kua whakatinanahia nga tohu waahi rangitahi hei waahanga Apache kua rite.
  5. Ka taea te whakatinana i nga tohu waahi rangitahi ma te hoahoa arorau i te hanganga taunekeneke.

Ka kitea te ahua i muri i te whakatinanatanga.

Whāinga o te mahi: Ko te whakahaeretanga o nga ratonga me nga hanganga me uru mai i te waea pukoro i runga IOS kaore he kaupapa taapiri (penei i te VPN), te whakakotahi me te haumaru.

Whāinga tāpiri: te penapena taima me nga rauemi/whakawhiti waea (etahi ratonga karekau he turanga tukutuku ka whakaputa tono koretake) me te tere ake o te tuku ihirangi i runga i te Ipurangi pūkoro.

Me pehea te tirotiro?

1. Nga wharangi whakatuwhera:

— например, 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. Kei te papatohu kaiwhakawhanake ranei:

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

Te whakamatautau whakapae:

1. Ka taea te whirihora i tera tuunga ki te whakamahi i nga tiwhikete (me te mohio karekau) ki nga turanga tukutuku o nga rauemi takawaenga o roto/waho.

E rua nga otinga i kitea i konei:

a) I te taumata

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

huri i te taumata uru.

Ko tenei tikanga e whai ake nei nga nuances:

  • Ka puta te manatoko Tiwhikete i muri i te tono ki te rauemi takawaenga, ara, te ruru-a-ringa tono. Ko te tikanga ka utaina tuatahi te takawaenga ka tapahia te tono ki te ratonga tiaki. He kino tenei, engari ehara i te kino;
  • I roto i te kawa http2. Kei roto tonu i te tauira, karekau nga kaihanga tirotiro e mohio me pehea te whakatinana #info mo tls1.3 http2 pou ruru ringa (kaore e mahi inaianei) Whakamahia te RFC 8740 "Ma te whakamahi i te TLS 1.3 me te HTTP/2";
  • Kaore i te maarama me pehea te whakakotahi i tenei tukatuka.

b) I te taumata taketake, tukua ssl kahore he tiwhikete.

Ka hiahiatia e SSLVerifyClient => SSLVerifyClient hei whiriwhiri, engari ka whakaitihia te taumata haumarutanga o te tūmau takawaenga, i te mea ka tukatukahia taua hononga ki te kore he tiwhikete. Heoi ano, ka taea e koe te whakakore i te uru ki nga ratonga takawaenga me te tohutohu e whai ake nei:

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"

Ka kitea etahi atu korero taipitopito i roto i te tuhinga mo te ssl: Motuhēhēnga Tiwhikete Kiritaki Tūmau Apache

I whakamatauria nga whiringa e rua, ko te whiringa "b" i whiriwhiria mo tona kaha me te hototahi ki te kawa http2.

Hei whakaoti i te manatoko o tenei whakapae, he maha nga whakamatautau me te whirihoranga; i whakamatauria nga hoahoa e whai ake nei:

ki te = hiahia = tuhi ano

Ko te hua ko te hoahoa taketake e whai ake nei:

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>

Ma te whai whakaaro ki te whakamanatanga a te rangatira tiwhikete, engari me te tiwhikete kua ngaro, me taapiri e au tetahi rangatira tiwhikete kore i te ahua o tetahi o nga taurangi e waatea ana SSl_PROTOCOL (hei utu mo SSL_CLIENT_S_DN_CN), etahi atu korero kei roto i nga tuhinga:

Apache Module mod_ssl

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

2. Mo nga turanga tukutuku, ka taea e koe te hanga hononga ahurei, haumaru me te whakamarumaru ma te whakamahi i nga waahi rangitahi ka hangaia i roto i te tono tirotiro (kore-tukutuku) noa.

I runga i nga wheako o mua, me taapiri koe i tetahi atu waahanga ki te whirihoranga hei whakarite i nga tohu mo te wa poto mo nga hononga turanga tukutuku i roto i te tono auau (kore-tukutuku).

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

I whakaatuhia e te whakamatautau he mahi. Ka taea te whakawhiti i nga Pihikete ki a koe ma te tirotiro a te kaiwhakamahi.

3. Ka taea te whakatinana i nga huihuinga rangitahi ma te whakamahi i tetahi tūmau tukutuku takawaenga (ko nga waahanga me nga mahi kua hangaia).

I kitea e matou i mua ake nei, he maha nga mahi matua a Apache e taea ai e koe te hanga hanganga here. Heoi, me whai tikanga hei tiaki i a maatau korero i te wa kei roto i te kaitirotiro a te kaiwhakamahi, na reira ka whakatauhia he aha hei penapena me te aha, me nga mahi whakauru ka whakamahia e matou:

  • Kei te hiahia maatau he tohu kaore e taea te wetewete ngawari.
  • Kei te hiahia maatau he tohu kua tawhitohia ki roto me te kaha ki te tirotiro i te tawhito i runga i te tūmau.
  • Kei te hiahia maatau he tohu ka hono ki te rangatira o te tiwhikete.

Me whai mahi hashing tenei, he tote, me te ra ki te tau o te tohu. I runga i nga tuhinga Nga korero i roto i te Apache HTTP Server kei waho katoa o te pouaka sha1 me %{TIME}.

Ko te hua ko tenei hoahoa:

#нет сертификата, и обращение к 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>

Kua tutuki te whainga, engari he raruraru kei te tawhito o te tūmau (ka taea e koe te whakamahi i te Pihikete tau-tau), ko te tikanga ko nga tohu, ahakoa he haumaru mo te whakamahinga o roto, kaore i te haumaru mo te whakamahinga ahumahi (papatipu).

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

4. Kua whakatinanahia nga tohu waahi rangitahi hei waahanga Apache kua rite.

Ko tetahi raruraru nui i toe mai i te whitiwhitinga o mua - ko te kore e kaha ki te whakahaere i te koroheketanga tohu.

Kei te rapu maatau i tetahi waahanga kua rite hei mahi i tenei, e ai ki nga kupu: apache token json two factor auth

Ae, he waahanga kua oti te hanga, engari kua herea katoa ki nga mahi motuhake me nga taonga toi hei timata i tetahi huihuinga me etahi atu Pihikete. Arā, ehara mo te wa poto.
E rima haora te roa o te rapu, kaore i puta he hua raima.

5. Ka taea te whakatinana i nga tohu waahi rangitahi ma te hoahoa arorau i te hanganga o nga taunekeneke.

He tino uaua nga waahanga kua rite, na te mea he ruarua noa nga mahi e hiahiatia ana.

Ko te korero, ko te raru o te ra ko nga mahi a Apache kaore e whakaae ki te whakaputa i te ra mai i nga ra kei te heke mai, a kaore he taapiri / tangohanga pangarau i roto i nga mahi hanga-i roto i te tirotiro mo te koretake.

Ara, kaore e taea e koe te tuhi:

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

Ka taea e koe te whakataurite i nga tau e rua.

I a au e rapu ana i tetahi otinga mo te raru Safari, i kitea e au tetahi tuhinga whakamere: Te whakamarumaru i te Kaiawhina Kaainga me nga tiwhikete kaihoko (mahi me Safari/iOS)
Kei te whakaahua i tetahi tauira o te waehere i Lua mo Nginx, a, na te mea i puta, ka tino whakahoki ano i te arorau o tera waahanga o te whirihoranga kua oti nei i a maatau te whakatinana, haunga te whakamahi i te tikanga tote hmac mo te hashing ( kaore tenei i kitea i Apache).

I tino marama ko Lua he reo whai whakaaro marama, a ka taea te mahi ngawari mo Apache:

I te ako i te rereketanga me Nginx me Apache:

Me nga mahi e waatea ana mai i te kaihanga reo Lua:
22.1 – Rā me te Wā

I kitea e matou he huarahi ki te tautuhi i nga taurangi env ki roto i tetahi konae Lua iti hei whakarite i te ra mai i nga ra kei mua hei whakatairite ki te waa o naianei.

Koinei te ahua o te tuhinga Lua ngawari:

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

A koinei te mahi katoa, me te arotautanga o te maha o nga Pihikete me te whakakapi i te tohu ka tae te haurua o te wa i mua i te paunga o te Pihikete tawhito (tohu):

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 

Na te mea ka whakahohehia te LuaHookAccessChecker i muri i nga arowhai uru i runga i enei korero mai i Nginx.

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

Hononga ki te puna image.

Tetahi mea ano.

I te nuinga o te waa, he aha te ota ka tuhia nga tohutohu i roto i te whirihoranga Apache (pea pea ko Nginx), na te mea i te mutunga ka tohua nga mea katoa i runga i te raupapa tono mai i te kaiwhakamahi, e rite ana ki te kaupapa mo te tukatuka. Nga tuhinga a Lua.

Whakaoti:

Ka kitea te ahua i muri i te whakatinanatanga (winga):
Ko te whakahaeretanga o nga ratonga me nga hanganga e waatea ana mai i te waea pukoro i runga IOS kaore he kaupapa taapiri (VPN), te whakakotahi me te haumaru.

Kua tutuki te whainga, kei te mahi nga turanga tukutuku me te taumata o te haumarutanga kaua e iti iho i te tiwhikete.

Me pehea i hono ai matou i ZeroTech ki a Apple Safari me nga tiwhikete kiritaki me nga turanga tukutuku

Source: will.com

Tāpiri i te kōrero