dtelenkov 11 maanden geleden
bovenliggende
commit
de645577e3
3 gewijzigde bestanden met toevoegingen van 66 en 9 verwijderingen
  1. 30 8
      .obsidian/workspace.json
  2. 9 1
      hardcore web development/5-6-7 Internet.md
  3. 27 0
      hardcore web development/SSH how to.md

+ 30 - 8
.obsidian/workspace.json

@@ -54,9 +54,31 @@
                 "source": false
               }
             }
+          },
+          {
+            "id": "a845d980f7abc708",
+            "type": "leaf",
+            "state": {
+              "type": "release-notes",
+              "state": {
+                "currentVersion": "1.5.12"
+              }
+            }
+          },
+          {
+            "id": "9482d5a564931fbc",
+            "type": "leaf",
+            "state": {
+              "type": "markdown",
+              "state": {
+                "file": "hardcore web development/5-6-7 Internet.md",
+                "mode": "source",
+                "source": false
+              }
+            }
           }
         ],
-        "currentTab": 3
+        "currentTab": 5
       }
     ],
     "direction": "vertical"
@@ -154,15 +176,16 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:Меню быстрого перехода": false,
-      "graph:Граф": false,
-      "canvas:Создать новый холст": false,
-      "command-palette:Открыть палитру команд": false,
-      "markdown-importer:Импорт Markdown-файлов": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "command-palette:Open command palette": false,
+      "markdown-importer:Open format converter": false
     }
   },
-  "active": "02794159e0215561",
+  "active": "9482d5a564931fbc",
   "lastOpenFiles": [
+    "hardcore web development/SSH how to.md",
     "TODO.md",
     "hardcore web development/5-6-7 Internet.md",
     "Разное.md",
@@ -195,7 +218,6 @@
     "Pasted image 20240415122028.png",
     "common.md",
     "2024-02-22.md",
-    "2024-02-25.md",
     "Golang",
     "git_rsa.pub",
     "git_rsa",

+ 9 - 1
hardcore web development/5-6-7 Internet.md

@@ -145,4 +145,12 @@ CRUD — сокращение от Create, Read, Update, Delete.
 
 - если клиент создал новую книгу успешно — `201`;
 
-- если клиент успешно обновил книгу — `204` или `200`.
+- если клиент успешно обновил книгу — `204` или `200`.
+<h4>Дополнительные материалы</h4>
+По протоколу HTTP можно почитать собственно первоисточник — например, RFC 2616, это RFC по HTTP/1.1. [Ссылка](https://www.rfc-editor.org/rfc/rfc2616). В частности тут подробно описаны все HTTP-методы, HTTP-статусы и вся прочая информация. Я считаю, что это полезно полистать.
+
+Также относительно недавно вышла книга на русском языке «HTTP/2 в действии», Поллард Б. Книга описывает нововведения и особенности второй версии протокола HTTP (будем об этом говорить в следующей главе).
+
+И также неплохие материалы по HTTP (как и по другим темам веб-технологий) приведены на сайте MDN, Mozilla Developer Network, [ссылка](https://developer.mozilla.org/ru/docs/Web/HTTP/Basics_of_HTTP). В частности тут [приведены](https://developer.mozilla.org/ru/docs/Web/HTTP/Status/422) отличные описание HTTP-статусов.
+
+Когда будем изучать фронтенд-технологии, мы будем часто обращаться к сайту MDN, поэтому берите его сразу на заметку и в целом можете начинать читать его.

+ 27 - 0
hardcore web development/SSH how to.md

@@ -0,0 +1,27 @@
+Как происходит установка соединения по HTTPS между клиентом (браузером) и сервером.
+
+Браузер шлёт запрос на сервер `course.to.digital` — о, говорит, дружок, давай-ка мы с тобой установим безопасное соединение, а то кругом враги, надо бы предостеречься. И вот тебе на всякий случай рандомная строка, например, 123.
+
+Сервер отвечает — ну конечно, давай, вот на тебе лови мой сертификат, в нём есть публичный ключ и подпись Let’s Encrypt, и заодно на тоже тебе рандомную строку, например, 567.
+
+В процессе настройки HTTPS на сервере сохраняется публичный и приватный ключ, приватный не передаётся никуда и хранится только на сервере, публичный (исходя из названия) передаётся собеседникам (браузерам). Публичным ключом можно зашифровать сообщение, а расшифровать такое сообщение можно только имея соответствующий этому публичному ключу приватный ключ.
+
+И вот, значит, сервер передаёт сертификат с публичным ключом браузеру.
+
+Браузер через удостоверяющий центр (через Letsencrypt в твоём примере) проверяет, что переданный публичный ключ действительно относится к домену `course.to.digital`. Если это не проверить, то хакер сможет перехватить коммуникацию на этом этапе и передать вместо реального публичного ключа `course.to.digital` свой хакерский ключ и затем спалить (прочесть) всю дальнейшую коммуникацию. А так удостоверяющий центр (которому все доверяют) подтверждает, что да, всё чики-пуки, публичный ключ правильный, принадлежащий домену `course.to.digital`.
+
+Браузер генерирует ещё одну рандомную строку, например, 890 и шифрует её публичным ключом сервера, и передаёт серверу.
+
+Сервер расшифровывает своим приватным ключом рандомную строку от браузера (получает 890). На этом этапе:
+
+а) сервер знает изначальную рандомную строку 123 от браузера
+
+б) сервер знает свою рандомную строку 567
+
+в) знает только что пришедшую зашифрованную рандомную строку 890.
+
+И браузер тоже знает все эти 3 строки. Сервер и браузер использует эти 3 строки, чтобы сгенерировать **одинаковый** сеансовый ключ.
+
+Дальше все сообщения между клиентом и сервером шифруются одинаковым сеансовым ключом. При этом сам это ключ никогда по сети не передавался (он был рассчитан и сервером, и браузером). Хакер не может вычислить этот ключ, потому что он не может получить строку 890. не зная приватный ключ сервера (при том, что он мог перехватить строки 123 и 567).
+
+В новой версии TLS (1.3) схема обмена несколько иная, но принцип тот же — ассиметричное шифрование используется для безопасного получения симметричного ключа и использование симметричного ключа дальше для шифрования трафика.