add kellnr-proxy-verification-using-local-index.gmi

This commit is contained in:
postscriptum 2026-02-28 16:48:23 +02:00
parent f0b033cc81
commit 0961c3e883
3 changed files with 43 additions and 0 deletions

View file

@ -16,6 +16,7 @@
### Нотатки ### Нотатки
=> kellnr-proxy-verification-using-local-index.gmi 2026-02-28 Не верифіковане проксі Kellnr на базі власного індексу
=> rust-crates-mirroring-with-kellnr.gmi 2026-02-25 Організація локального дзеркала залежностей Cargo з Kellnr => rust-crates-mirroring-with-kellnr.gmi 2026-02-25 Організація локального дзеркала залежностей Cargo з Kellnr
=> radicle-p2p-traffic-leak-prevention.gmi 2026-02-24 Radicle: обмеження витоків пірингового трафіку => radicle-p2p-traffic-leak-prevention.gmi 2026-02-24 Radicle: обмеження витоків пірингового трафіку
=> flarum-v2-fof-redis-extension-setup.gmi 2026-02-22 Flarum v2: активація драйвера Redis (FoF/redis) => flarum-v2-fof-redis-extension-setup.gmi 2026-02-22 Flarum v2: активація драйвера Redis (FoF/redis)

View file

@ -0,0 +1,41 @@
# Не верифіковане проксі Kellnr на базі власного індексу
> Повний аудит рішення не проводився, зокрема обробка [config.json](https://github.com/rust-lang/crates.io-index/blob/master/config.json). Візуально, лічильники завантажень в ланцюгу проксі працюють коректно, підміна фіктивним індексом - не дозволяє оновлень.
У попередньому гайді, я описав базове встановлення Kellnr в режимі локального та віддаленого проксі сервера:
=> rust-crates-mirroring-with-kellnr.gmi Організація локального дзеркала залежностей Cargo з Kellnr
Утім, мені не давало спокою питання потенційної компрометації дзеркала, через що я декілька днів поспіль намагався відокремити індекс з контрольними сумами від джерела кешованих пакунків.
Нарешті, мені це вдалося. Схема з'єднання виглядає наступним чином:
```
crates.io > -|- out proxy > kellnr server > kellnr client > cargo
crates.io-index > _↑ |
↑_________________[--proxy-index]__________________↓
```
У цьому ланцюгу, `kellnr server` ми не довіряємо, оскільки той ходить через не відомий нам вихідний проксі. Натомість, піднімаємо додатковий локальний інстанс `kellnr client`, який звертається до першого але використовує власний `--proxy-index`:
``` /etc/systemd/system/kellnr.service
kellnr start \
--proxy-index https://index.crates.io/ \
--proxy-url http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8180/api/v1/cratesio/dl/ \
```
* це просто фрагмент команди `kellnr start` з файлу `/etc/systemd/system/kellnr.service`, де ми задіюємо офіційний індекс, але у вас це може бути локальне дзеркало репозиторію
* `http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8180` - не верифікований `kellnr server` на схемі
Відповідно, в локальному `~/.cargo/config.toml` вказуємо `kellnr client`, якому довіряємо:
``` ~/.cargo/config.toml
[registries.kellnr]
index = "sparse+http://127.0.0.1:8000/api/v1/cratesio/"
[source.crates-io]
replace-with = "kellnr"
[http]
timeout = 180
```
Нагадаю, що окремий індекс використовувати не обов'язково, якщо ваша копія проєкту містить файл `Cargo.lock` з хешами, що дозволяє звіряти їх аргументом `--locked`.

View file

@ -308,6 +308,7 @@ crates.io > -|- out proxy > kellnr server > kellnr client > cargo
crates.io-index > _↑ | crates.io-index > _↑ |
↑_________________[--proxy-index]__________________↓ ↑_________________[--proxy-index]__________________↓
``` ```
=> kellnr-proxy-verification-using-local-index.gmi Не верифіковане проксі Kellnr на базі власного індексу
## Посилання ## Посилання