Allow pinned self-signed TLS for private IPv4 ranges on iOS 17+

This commit is contained in:
2026-09-12 15:33:17 +03:00
parent f8de824752
commit a17a7f8027
5 changed files with 55 additions and 9 deletions
+20 -2
View File
@@ -1,6 +1,6 @@
# MusicBridge iOS — план
Обновлено: 2026-09-10. Пользователь разрешил начать нативное iOS-приложение.
Обновлено: 2026-09-12. Пользователь разрешил начать нативное iOS-приложение.
Репозиторий: `C:/Users/areso/iOS MusicBridge`; origin — dev.yukinoki.ru/musicbridge/ios.
Windows-агент — соседний проект `C:/Users/areso/MusicBridge/MusicBridge.Agent`.
@@ -32,7 +32,7 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
- [x] Подключён GitHub remote polskikh13/musicbridgeios; Actions и чтение логов через gh работают.
- [ ] Интеграционные тесты TLS: верный/чужой/истёкший сертификат, redirect, WSS.
- [ ] Проверить 401 и отзыв устройства, Keychain после переустановки/блокировки.
- [ ] Настроить подпись и установку на физический iPhone.
- [x] Установить на физический iPhone: пользователь подтвердил установку через iloader 2026-09-12.
- [ ] Проверить LAN/плеер/команды/обложку с настоящим Windows-агентом.
- [ ] Камера для QR, системные разрешения и обработка отказа.
- [ ] Bonjour-поиск `_musicbridge._tcp`, список ПК и обновление адреса при смене IP.
@@ -45,6 +45,24 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
Потеря ответа на успешное сопряжение может оставить устройство на ПК: удалить его
в окне агента перед повтором. Облачный runner не имеет доступа к домашней LAN.
## Проверка на iPhone 2026-09-12
- Windows GUI запущен с `--tray --lan`, порт TCP 8765 слушает.
- На iPhone первая попытка сопряжения завершилась ошибкой недействительного
сертификата сервера. Установка приложения уже работает; это отдельная TLS-проблема.
- Подготовлены ATS-исключения только для RFC1918 CIDR: `10.0.0.0/8`,
`172.16.0.0/12`, `192.168.0.0/16`. Начиная с iOS 17, для IP нужны явные
исключения. Клиент продолжает требовать HTTPS, точный SHA-256 отпечаток,
действующий сертификат и запрещает redirect. Глобального отключения ATS нет.
- Добавлены настоящие HTTPS/WSS проверки в симуляторе с сертификатом того же
типа, что у агента: RSA 2048, самоподписанный, CA:FALSE, SAN localhost/127.0.0.1,
срок пять лет. Отдельно проверяются чужой отпечаток и истёкший сертификат.
`tools/tls_fixture.py` запускается в CI перед сборкой тестов; закрытые ключи
создаются временно на runner и не включаются в приложение или артефакты.
- Сообщение «непригодные данные» при импорте приглашения пока не разобрано:
пользователь попросил отложить его. Следующий ручной шаг — повторить сопряжение
после установки новой IPA, затем проверить команды, прогресс и обложку.
## Карта
- `MusicBridge/Models.swift`: контракт и проверка входных данных.