TrustNetServer

Материал из Сервис Облачной Демократии
(Различия между версиями)
Перейти к: навигация, поиск
(Формат возврата данных пакета по его ID)
(Дополнительное удостоверение для подписания админа и сервера)
Строка 32: Строка 32:
 
   "<UUID 00000000-0000-0000-0000-000000000000 закодированный в BASE64>",
 
   "<UUID 00000000-0000-0000-0000-000000000000 закодированный в BASE64>",
 
   "<персональный идентификатор админа владельца удостоверяемого сервера>",
 
   "<персональный идентификатор админа владельца удостоверяемого сервера>",
   "<публичный транспортный ключ удостоверяемого сервера>",
+
   "<JSON данные сервера в строковом виде>",
 
   "<уровень удостоверения - от -127 до 127>"]
 
   "<уровень удостоверения - от -127 до 127>"]
 +
 +
JSON данные сервера:
 +
 +
{
 +
  "host": "<host сервера>",
 +
  "trans_public_key": "<публичный транспортный ключ удостоверяемого сервера в Base64>"
 +
}
  
 
==== Документ-анонс новых пакетов ====
 
==== Документ-анонс новых пакетов ====

Версия 11:00, 16 июля 2015

Содержание

Общий порядок взаимодействия серверов сети доверия между собой

По мере накопления новых пакетов на исходном сервере, периодически производится их рассылка на связанные сервера.

  1. В цикле по всем серверам назначения:
    1. Исходный сервер анализирует path во всех новых пакетов и выбирает только те пакеты, в которых в path отсутствует данный сервер назначения;
    2. Данные отобранных пакетов помещаются в оперативный кэш если их там еще нет;
    3. Формируется документ - анонс новых пакетов для сервера назначения;
    4. Документ-анонс новых пакетов подписывается транспортным ключем сервера;
    5. Документ-анонс отправляется на сервер назначения на URL http://<адрес сервера>/s2s/new_packets

Сервер назначения, после получения анонса новых пакетов с другого сервера делает следующее:

  1. Производит проверку допуска данного сервера для передачи данных:
    1. Определяет исходящий сервер;
    2. Ищет в сети доверия удостоверение админа сервера источника и публичного транспортного ключа сервера-источника;
    3. Проверяет что удостоверение админа, включающее публичный транспортный ключ данного сервера источника подписаны админом данного сервера назначения;
    4. Проверяет подпись документа-анонса транспортным ключем сервера источника;
  2. Проверяет наличие идентификаторов присланных пакетов в локальной базе сервера назначения;
  3. Для всех пакетов, которые отсутствуют в базе:
    1. Ставится блокировка на добавление данного пакета (что-бы избежать параллельного добавления одного пакета);
    2. С сервера источника по пути http://<адрес сервера источника>/s2s/get_packet?<id пакета> запрашивается содержимое пакета;
    3. Пакет добавляется в локальную базу;
    4. Отменяется блокировка на добавление данного пакета;

Формат используемых для межсерверного общения данных

Дополнительное удостоверение для подписания админа и сервера

["<персональный идентификатор админа-удостоверителя>",
 "<текущее время GMT в формате UNIXTIME>",
 "<UUID 00000000-0000-0000-0000-000000000000 закодированный в BASE64>",
 "<персональный идентификатор админа владельца удостоверяемого сервера>",
 "<JSON данные сервера в строковом виде>",
 "<уровень удостоверения - от -127 до 127>"]

JSON данные сервера:

{
  "host": "<host сервера>",
  "trans_public_key": "<публичный транспортный ключ удостоверяемого сервера в Base64>"
}

Документ-анонс новых пакетов

{
  "host": "<host сервера-источника пакетов>",
  "admin_personal_id": "<персональный идентификатор админа - владельца сервера источника>",
  "ids": ["<id пакета 1>", "<id пакета 2>", ...],
  "sign": "<подпись данных host+join(',', ids) транспортным ключем сервера источника Base64>",
  "sign_public_key_id": "<идентификатор публичного транспортного ключа сервера Base64>"
}

Формат возврата данных пакета по его ID

{
 "id": "<идентификатор пакета в виде sha512 хэша его данных в BASE64 без переноса строк>",
 "path": "<путь прохождения пакета по серверам в виде <host> через запятую>",
 "packet": <данные пакета в стандартном виде (как при взаимодействии с клиентом)>
}
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты