Главная
» Как сделать
»
Устранение ошибок подтверждения WOPI путем проверки ключей, обнаружения и URL-адресов.
Устранение ошибок подтверждения WOPI путем проверки ключей, обнаружения и URL-адресов.
Когда хост WOPI сообщает об ошибке «проверка подтверждения не удалась» или «недействительное подтверждение WOPI», сначала выясните, какая система зарегистрировала отказ. Если хост хранилища отклоняет подписанный запрос Collabora, проверьте пару «ключ подтверждения» и ответ обнаружения, прежде чем изменять списки разрешенных хостов WOPI или отключать проверки подтверждения. Для установки пакетов Collabora обычно генерирует пару ключей; для развертываний Docker, Kubernetes и многорепликационных развертываний пара должна быть предоставлена и сохранена согласованно.
Прежде чем менять ключи, определите неисправность, выявленную в ходе проверки.
Проверка подлинности WOPI использует подписанный запрос и открытый ключ, объявленный клиентом WOPI в метаданных обнаружения. Она отделена от списка доверенных хостов WOPI Collabora, проверки сертификата TLS и проверки токена доступа хоста хранения. Перегенерация ключа может помочь, если закрытый ключ отсутствует или не совпадает с объявленным открытым ключом, но может создать новое несоответствие, если изменяется только одна реплика или хост все еще имеет кэшированные данные обнаружения.
Сообщение, подтверждающее недействительность ключа на стороне хоста, указывает в первую очередь на обнаружение ключа, построение подписи или время запроса.
Доказательства в журнале
Вероятное место для проверки
При получении запроса CheckFileInfo или другого запроса WOPI хост хранилища выдает сообщение «Недействительное подтверждение WOPI».
Ключ подтверждения Collabora, данные обнаружения хоста, восстановление URL-адреса или метка времени.
Collabora выдает сообщение «Неавторизованный хост WOPI» или «Нет допустимых хостов WOPI».
Конфигурация списка разрешенных хостов WOPI / домена, а не ключ подтверждения.
Ошибка: недействительный, просроченный токен или отказ в доступе без подтверждения.
Выданный хостом токен доступа, права доступа или срок действия токена
Проверьте наличие одного неудачного запроса в журналах Collabora и на хосте хранения; один только индикатор загрузки в браузере не указывает на сбой подтверждения ключа.
Выберите способ ремонта, подходящий для данного развертывания.
Начните с наименее ресурсоемкого варианта. При установке на основе пакетов сначала проверьте существующие файлы ключей и журналы служб; в текущей документации Collabora указано, что установка пакетов RPM и Debian автоматически генерирует пару ключей подтверждения WOPI. Если эти файлы присутствуют и стабильны, их обычно не требуется менять.
Collabora использует закрытый ключ подтверждения и публикует соответствующий ему открытый ключ посредством механизма обнаружения WOPI.
Развертывание
Рекомендуемое действие
Компромисс
Сервер с управлением одним пакетом
Сохраните сгенерированную пару ключей; исправляйте права доступа или генерируйте новые только в случае отсутствия или несоответствия.
Изменения незначительны, но проверьте версию пакета и настроенные пути.
Отдельный контейнер Docker
Создайте пару один раз и постоянно монтируйте её в контейнер.
Для работы coolwsd требуется постоянный том и корректный доступ для чтения.
Kubernetes или несколько реплик
В каждом экземпляре Collabora можно установить одну общую пару секретный ключ/ключ.
Согласованные подписи на всех репликах; ротация также должна обновлять представление обнаружения хоста.
URL хоста изменен за прокси-сервером.
Проверьте открытую схему, хост, путь и строку запроса, используемые для проверки подписи.
Более сложный способ, чем смена ключей, но позволяющий избежать ненужных изменений учетных данных.
В руководстве Collabora версии 24.04 указано, что общедоступный образ Docker не включает пару «ключ подтверждения»; сгенерируйте её и постоянно монтируйте. Официальная диаграмма Helm поддерживает секреты с ключом подтверждения. Никогда не генерируйте отдельную пару для каждой реплики, иначе балансировка нагрузки может привести к периодическим сбоям.
Проверьте и безопасно отремонтируйте пару ключей.
Найдите настроенные пути к ключу. На хосте Collabora или внутри контейнера проверьте настройки coolwsd.xmlпути к ключу подтверждения и убедитесь, что доступны как закрытый, так и открытый ключи. Обычно они находятся в папке /etc/coolwsd/, но структура пакетов и контейнеров может отличаться. Никогда не вставляйте закрытый ключ в журналы, заявки или чат.
Убедитесь, что ключи совпадают. Для стандартных путей по умолчанию сравните отпечатки ключей, не отображая закрытый ключ: sudo openssl pkey -in /etc/coolwsd/proof_key -pubout -outform DER | sha256sumи openssl pkey -pubin -in /etc/coolwsd/proof_key.pub -outform DER | sha256sum. Полученные хеши должны совпадать. Если ваши пути отличаются, замените их фактическими настроенными путями. Если закрытый ключ невозможно прочитать, исправьте права собственности и разрешения в соответствии с моделью безопасности сервиса; не делайте его доступным для чтения всем.
Генерируйте заново только при необходимости. Если закрытый ключ отсутствует или пара не совпадает, используйте sudo coolconfig generate-proof-keyместо установки соответствующей утилиты. Для Docker сгенерируйте пару в подходящем постоянном месте, затем смонтируйте оба файла туда, где их ожидает Collabora, и убедитесь, что процесс coolwsd может прочитать закрытый ключ. На управляемой платформе используйте поддерживаемый механизм Secret вместо ручного редактирования работающего пода.
Обеспечьте согласованность всех экземпляров. Для реплик разверните одну и ту же пару ключей на каждом экземпляре и перезапустите или разверните Collabora, чтобы она считывала файлы. Затем обновите или повторно получите данные обнаружения WOPI на хосте хранения, используя поддерживаемый этим хостом механизм. Смена ключа изменяет открытый ключ; кэши или другая реплика, продолжающая обслуживать прежний ключ, могут поддерживать работоспособность при сбоях.
Реплики должны использовать одну постоянную пару ключей подтверждения, чтобы каждый экземпляр мог последовательно подписывать запросы.
Когда ключ совпадает, но проверка доказательства по-прежнему не удается.
Проверьте синхронизацию времени в обеих системах. Запросы подтверждения WOPI включают метку времени; хост может отклонить старую или выходящую за рамки временного окна метку времени. Убедитесь, что NTP или служба времени платформы работают исправно и что серверы сообщают корректное время UTC. Не ослабляйте проверку меток времени, чтобы обойти проблему с часами.
Далее проверьте публичный URL-адрес, используемый хостом для восстановления подписанного запроса. Подтверждение привязано к URL-адресу запроса, включая соответствующие параметры запроса, и спецификация WOPI требует, чтобы представление URL-адреса, используемое для проверки, соответствовало подписанной форме. Обратный прокси-сервер, завершающий HTTPS-соединение, может заставить приложение видеть внутренний HTTP-адрес, даже если Collabora подписала публичный HTTPS-адрес. Настройте заголовки доверенного прокси-сервера и параметры внешнего URL-адреса приложения в соответствии с официальными рекомендациями хоста WOPI; не переписывайте логику подтверждения и не удаляйте параметры запроса.
Если проверка подлинности завершается неудачей только после смены ключа, обновите механизм обнаружения и убедитесь, что все реплики Collabora используют один и тот же открытый ключ. Если неудача возникает только при запросах, проходящих через один прокси-сервер или одну реплику, сравните журналы и конфигурацию этого пути, а не выполняйте повторную смену ключа. Отключение проверки подлинности может ослабить проверку безопасности и не должно использоваться в качестве решения для производственной среды.
Проверьте ремонт
Получите конечную точку обнаружения Collabora из сети хоста хранения и убедитесь, что она возвращает актуальные метаданные ключа подтверждения.
Откройте тестовый документ и убедитесь, что хранилище принимает запрос CheckFileInfo и последующие запросы к документам без ошибки, связанной с недействительным подтверждением.
Повторите эти действия для каждого маршрута прокси или реплики, затем убедитесь, что пара ключей остается подключенной после перезапуска контейнера или замены пода.
Подтвердите успешное восстановление, открыв документ и убедившись, что хост принимает его WOPI-запросы.
Успешное открытие документа подтверждает только этот путь; повторите проверку для каждого хоста WOPI и маршрута прокси, с которыми вы работаете.