د کار هدف: د خدماتو او زیربنا مدیریت باید په IOS کې د ګرځنده تلیفون څخه د اضافي برنامو (لکه VPN) پرته د لاسرسي وړ وي ، متحد او خوندي وي.
اضافي هدف: د وخت او منابعو / تلیفون ترافیک خوندي کول (ځینې خدمتونه پرته له ویب ساکټ څخه غیر ضروري غوښتنې رامینځته کوي) په ګرځنده انټرنیټ کې د مینځپانګې ګړندي تحویل سره.
څنګه یې وګور؟؟
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. دا ممکنه ده چې دا ډول استثنا د داخلي/بهرني پراکسي سرچینو ویب ساکټونو لپاره د سندونو کارولو لپاره ترتیب کړئ (په دې پوهیدل چې هیڅ به نه وي).
د سند تصدیق د پراکسي سرچینې ته د غوښتنې وروسته پیښیږي ، دا د غوښتنې وروسته لاس ملایم دی. دا پدې مانا ده چې پراکسي به لومړی بار کړي او بیا به خوندي شوي خدمت ته غوښتنه قطع کړي. دا خراب دی، مګر مهم ندی؛
په http2 پروتوکول کې. دا لاهم په مسوده کې دی ، او د براوزر جوړونکي نه پوهیږي چې دا څنګه پلي کړي #info په اړه tls1.3 http2 پوسټ هینډ شیک (اوس کار نه کوي) RFC 8740 پلي کړئ "د HTTP/1.3 سره د TLS 2 کارول";
دا روښانه نده چې دا پروسس څنګه یوځای شي.
b) په بنسټیزه کچه، د سند پرته 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"
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>
د سند د مالک لخوا موجود واک په پام کې نیولو سره، مګر د ورک شوي سند سره، زه باید د موجود متغیر SSl_PROTOCOL (د SSL_CLIENT_S_DN_CN پرځای) په بڼه د غیر موجود سند مالک اضافه کړم، نور توضیحات په اسنادو کې:
دا د هش کولو فنکشن، مالګه، او د نښه کولو لپاره نیټې ته اړتیا لري. د اسنادو پر بنسټ په اپاچي 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>
هدف ترلاسه شوی ، مګر د سرور ناڅرګندتیا سره ستونزې شتون لري (تاسو کولی شئ یو کلن کوکي وکاروئ) ، پدې معنی چې ټوکنونه ، که څه هم د داخلي کارونې لپاره خوندي دي ، د صنعتي (ډلې) کارونې لپاره غیر خوندي دي.