แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

แƒกแƒขแƒแƒขแƒ˜แƒ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช:

  • แƒ˜แƒชแƒ˜แƒก แƒ แƒ แƒแƒ แƒ˜แƒก Client Cert แƒ“แƒ แƒ”แƒกแƒ›แƒ˜แƒก, แƒ แƒแƒขแƒแƒ› แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒก แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ Safari-แƒ–แƒ”;
  • แƒ›แƒกแƒฃแƒ แƒก แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ—แƒ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒš แƒฌแƒ แƒ”แƒ–แƒ” แƒแƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก;
  • แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ•แƒ˜แƒฆแƒแƒชแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒ แƒกแƒฃแƒ แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒ แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ’แƒแƒฎแƒแƒ“แƒแƒก.

แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 8 แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ“แƒแƒ˜แƒฌแƒงแƒ. แƒแƒ“แƒ แƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ’แƒ แƒซแƒ”แƒšแƒ˜ http แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ (แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘แƒ˜): แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜ แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ“แƒ แƒ”แƒšแƒแƒ“แƒ แƒ›แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒก, แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒกแƒ”แƒ• แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ แƒ“แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜.

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ˜แƒ›แƒžแƒšแƒ”แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒกแƒฃแƒคแƒ—แƒ PHP-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ•แƒ”แƒ  แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก https แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜แƒก แƒคแƒ”แƒœแƒ. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒฌแƒ˜แƒœ, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ›แƒ แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ แƒ›แƒแƒ แƒ˜แƒแƒœแƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ https-แƒ–แƒ” แƒ“แƒ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜: แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ”แƒก แƒ›แƒแƒฎแƒ“แƒ, แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒฎแƒ“แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ SPA แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒขแƒ˜แƒ•แƒ˜แƒ— (แƒ›แƒ”แƒกแƒ˜แƒฏแƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ’แƒแƒœ แƒแƒœ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก, แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก, แƒžแƒ แƒ”แƒ–แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ. แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒกแƒฎแƒ•แƒ แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒแƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒก) .

แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก, แƒ˜แƒก แƒ›แƒแƒ˜แƒœแƒช แƒชแƒฃแƒ“แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฃแƒแƒ›แƒ แƒแƒ• แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒแƒ•แƒšแƒ˜แƒ—. แƒ“แƒ (แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ :slightly_smiling_face: ) แƒแƒ›แƒ˜แƒขแƒแƒ› IOS แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ”แƒ‘แƒก (แƒงแƒ•แƒ”แƒšแƒ Safari-แƒก แƒ’แƒแƒ แƒ“แƒ) แƒแƒ  แƒกแƒฃแƒ แƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒแƒœ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ˜แƒ“แƒแƒœ. แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒก แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ แƒแƒฅแƒ•แƒ— แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก/แƒ’แƒแƒ•แƒšแƒ˜แƒก แƒแƒœ ssh แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒ”แƒ‘แƒ—แƒแƒœ แƒแƒœ แƒกแƒแƒญแƒ˜แƒ แƒ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฎแƒฃแƒ แƒ•แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— Firewall-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒช แƒ”แƒฎแƒ”แƒ‘แƒ.

iOS-แƒ–แƒ” แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ (แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒแƒ  แƒแƒ แƒ˜แƒก), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ˜แƒ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒ“แƒ แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ Safari แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, Safari-แƒ› แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก Client ะกert แƒ•แƒ”แƒ‘-แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ”แƒก แƒ›แƒ˜แƒฃแƒฆแƒฌแƒ”แƒ•แƒ”แƒšแƒ˜แƒ.

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ’แƒ”แƒ’แƒ›แƒ: แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ/แƒฐแƒ˜แƒžแƒแƒ—แƒ”แƒ–แƒ/แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ.

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ: แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ•แƒ”แƒ‘-แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ–แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒ— Safari แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒจแƒ˜ IOS-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒแƒฅแƒ•แƒ— แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ.

แƒฐแƒ˜แƒžแƒแƒ—แƒ”แƒ–แƒ”แƒ‘แƒ˜:

  1. แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ—แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ (แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ) แƒจแƒ˜แƒ“แƒ/แƒ’แƒแƒ แƒ” แƒžแƒ แƒแƒฅแƒกแƒ˜แƒฃแƒšแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒจแƒ˜.
  2. แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜, แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ“แƒ แƒ“แƒแƒชแƒฃแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ (แƒแƒ แƒแƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก) แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ“แƒ แƒแƒก.
  3. แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒฅแƒกแƒ˜ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— (แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜).
  4. แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ–แƒ Apache แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜.
  5. แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒ—.

แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ›แƒ˜แƒ–แƒแƒœแƒ˜: แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ˜แƒ“แƒแƒœ 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. แƒแƒœ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜:

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

แƒฐแƒ˜แƒžแƒแƒ—แƒ”แƒ–แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ:

1. แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ—แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ (แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ) แƒจแƒ˜แƒ“แƒ/แƒ’แƒแƒ แƒ” แƒžแƒ แƒแƒฅแƒกแƒ˜แƒฃแƒšแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒ‘-แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ–แƒ”.

แƒแƒฅ แƒœแƒแƒžแƒแƒ•แƒœแƒ˜แƒ 2 แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜:

แƒ) แƒ“แƒแƒœแƒ”แƒ–แƒ”

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

แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ“แƒแƒœแƒ”.

แƒแƒ› แƒ›แƒ”แƒ—แƒแƒ“แƒก แƒแƒฅแƒ•แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒ˜แƒฃแƒแƒœแƒกแƒ˜:

  • แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒžแƒ แƒแƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ–แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒแƒœแƒฃ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฎแƒ”แƒšแƒ˜แƒก แƒฉแƒแƒ›แƒแƒ แƒ—แƒ›แƒ”แƒ•แƒ. แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒžแƒ แƒแƒฅแƒกแƒ˜ แƒฏแƒ”แƒ  แƒฉแƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ“แƒแƒชแƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒชแƒฃแƒ“แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜;
  • http2 แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒจแƒ˜. แƒ˜แƒก แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒœแƒแƒฎแƒแƒขแƒจแƒ˜แƒ แƒ“แƒ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒ›แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ›แƒ แƒแƒ  แƒ˜แƒชแƒ˜แƒแƒœ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒœ แƒ˜แƒก #info 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 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ

แƒแƒ แƒ˜แƒ•แƒ” แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ“แƒ, แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ "b" แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ แƒแƒ•แƒแƒšแƒคแƒ”แƒ แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ 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>

แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒก แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— SSl_PROTOCOL (แƒœแƒแƒชแƒ•แƒšแƒแƒ“ SSL_CLIENT_S_DN_CN), แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜:

Apache Module mod_ssl

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

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>

แƒ›แƒ˜แƒ–แƒแƒœแƒ˜ แƒ›แƒ˜แƒฆแƒฌแƒ”แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— (แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฅแƒฃแƒฅแƒ˜), แƒ แƒแƒช แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜, แƒ—แƒฃแƒ›แƒชแƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ แƒจแƒ˜แƒ“แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒ แƒแƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ แƒกแƒแƒ›แƒ แƒ”แƒฌแƒ•แƒ”แƒšแƒ (แƒ›แƒแƒกแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜) แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

4. แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ–แƒ Apache แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜.

แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ“แƒแƒ แƒฉแƒ แƒฌแƒ˜แƒœแƒ แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ - แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ‘แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒฃแƒฃแƒœแƒแƒ แƒแƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ”แƒซแƒ”แƒ‘แƒ— แƒ›แƒ–แƒ แƒ›แƒแƒ“แƒฃแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—: apache token json two factor auth

แƒ“แƒ˜แƒแƒฎ, แƒแƒ แƒ˜แƒก แƒ›แƒ–แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒ แƒแƒฅแƒ•แƒ— แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒฅแƒฃแƒฅแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—. แƒแƒœแƒฃ แƒชแƒแƒขแƒ แƒฎแƒœแƒ˜แƒ— แƒแƒ แƒ.
แƒซแƒ”แƒ‘แƒœแƒแƒก แƒฎแƒฃแƒ—แƒ˜ แƒกแƒแƒแƒ—แƒ˜ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ, แƒ แƒแƒ›แƒแƒช แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒฆแƒ.

5. แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒ—.

แƒ›แƒ–แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ แƒ—แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ.

แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒ—แƒฅแƒ•แƒ, แƒ—แƒแƒ แƒ˜แƒฆแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› Apache-แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ›แƒแƒ›แƒแƒ•แƒšแƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒแƒ—แƒ”แƒ›แƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ/แƒ’แƒแƒ›แƒแƒ™แƒšแƒ”แƒ‘แƒ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒกแƒแƒก.

แƒแƒœแƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ—:

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

แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ แƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ.

Safari แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒšแƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ” แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒกแƒขแƒแƒขแƒ˜แƒ: HomeAssistant-แƒ˜แƒก แƒ“แƒแƒชแƒ•แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒ— (แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Safari/iOS-แƒ—แƒแƒœ)
แƒ˜แƒ’แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก Lua-แƒจแƒ˜ Nginx-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ“แƒ แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒ˜แƒ แƒ™แƒ•แƒ, แƒซแƒแƒšแƒ˜แƒแƒœ แƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒ› แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒœแƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ—, แƒ’แƒแƒ แƒ“แƒ แƒฐแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก hmac salting แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ ( แƒ”แƒก แƒแƒ  แƒ˜แƒฅแƒœแƒ แƒœแƒแƒžแƒแƒ•แƒœแƒ˜ Apache-แƒจแƒ˜).

แƒ’แƒแƒ˜แƒ แƒ™แƒ•แƒ, แƒ แƒแƒ› แƒšแƒฃแƒ แƒ›แƒ™แƒแƒคแƒ˜แƒ แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ”แƒœแƒแƒ แƒ“แƒ แƒแƒžแƒแƒฉแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ แƒแƒฆแƒแƒช แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ:

Nginx-แƒกแƒ แƒ“แƒ Apache-แƒกแƒ—แƒแƒœ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’:

แƒ“แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ Lua แƒ”แƒœแƒ˜แƒก แƒ›แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒšแƒ˜แƒกแƒ’แƒแƒœ:
22.1 - แƒ—แƒแƒ แƒ˜แƒฆแƒ˜ แƒ“แƒ แƒ“แƒ แƒ

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒžแƒแƒ•แƒœแƒ”แƒ— แƒ’แƒ–แƒ, แƒ แƒแƒ› แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— env แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜ แƒžแƒแƒขแƒแƒ แƒ Lua แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ“แƒแƒ•แƒœแƒ˜แƒจแƒœแƒแƒ— แƒ—แƒแƒ แƒ˜แƒฆแƒ˜ แƒ›แƒแƒ›แƒแƒ•แƒšแƒ˜แƒกแƒ’แƒแƒœ, แƒ แƒแƒ—แƒ แƒจแƒ”แƒ•แƒแƒ“แƒแƒ แƒแƒ— แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”.

แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒšแƒฃแƒแƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜:

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-แƒ˜แƒก แƒแƒ› แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒฌแƒงแƒแƒ แƒแƒกแƒ—แƒแƒœ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜.

แƒกแƒฎแƒ•แƒ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜แƒ.

แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒแƒ  แƒแƒฅแƒ•แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ— แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒ˜แƒ•แƒ”แƒ‘แƒ˜ Apache (แƒแƒšแƒ‘แƒแƒ— แƒแƒกแƒ”แƒ•แƒ” Nginx) แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒšแƒแƒ’แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒแƒก. แƒšแƒฃแƒแƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜.

แฒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ:

แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ (แƒ›แƒ˜แƒ–แƒแƒœแƒ˜):
แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ˜แƒ“แƒแƒœ IOS-แƒ–แƒ” แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒก (VPN) แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒ“แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ.

แƒ›แƒ˜แƒ–แƒแƒœแƒ˜ แƒ›แƒ˜แƒฆแƒฌแƒ”แƒฃแƒšแƒ˜แƒ, แƒ•แƒ”แƒ‘-แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ“แƒ แƒแƒฅแƒ•แƒ— แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ” แƒแƒ แƒแƒœแƒแƒ™แƒšแƒ”แƒ‘ แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜.

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœ ZeroTech-แƒจแƒ˜ Apple Safari แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ