DotNetOpenAuth - диагностика «Не найдена конечная точка OpenID» на Mono - PullRequest
4 голосов
/ 16 октября 2010

Я использую моно ветку DotNetOpenAuth и испытываю проблемы с No OpenID Endpoint Found ошибками при попытке аутентификации с помощью Google, но не знаю, как их диагностировать.

Подробнее:

  • Запуск той же моно ветки под Windows работает.
  • Аутентификация с локальным поставщиком openid работает нормально (Windows и Linux).
  • Аутентификация с использованием миопенидов работает (может быть, потому что это не https как в Google?)
  • Тот же Web.Config, бинарные файлы под Windows и Linux.
  • Отключен параметр DNOA openid cacheDiscovery.
  • Проверено, работает ли SSL через брандмауэр с компьютера с Linux. (т.е.: wget <a href="https://www.google.com" rel="nofollow">https://www.google.com</a> работает).
  • Проверены журналы ошибок apache, ошибок нет.

Любые советы о том, как диагностировать это?

Продолжение: все еще изучаю это, насколько я могу судить, это проблема mono / ssl, не связанная с dotnetopenauth. Простой ssl-запрос из кода C # завершается неудачно с неверным сертификатом, полученным с сервера. Код ошибки: исключение 0xffffffff800b010a.

Запуск mozroots под рабочим столом mono 2.4 / ubuntu 9.10 решает проблему, но та же команда mozroots на сервере mono 2.6 / ubuntu 10.10 не помогает. Я использую это:

yes yes|sudo mozroots --import --machine

В нем говорится, что он импортировал сертификаты, но простая программа командной строки для запроса https://www.google.com все еще не работает.

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

Вам необходимо создать пустой каталог 'keypairs' рядом с каталогом 'certs' в магазине машин:

  sudo mkdir /usr/share/.mono/keypairs

mozroots (и certmgr под капотом) не создают его, но без него mono runtime откажется от создания соединений (и не может создать его сам, поскольку хранилище машины доступно для записи только root; зачем нужно его создавать, а затем оставь это пустым, я не знаю).

0 голосов
/ 16 октября 2010

Это хакерский ответ, но по крайней мере у меня все заработало ...

Кажется, что хранилище сертификатов машины не работает на сервере mono 2.6 / ubuntu 10.10.Не знаю почему.

Исправление заключается в импорте корневых сертификатов mozroots в хранилище пользовательских сертификатов www-data.Поскольку я не мог понять, как это сделать с помощью инструмента mozroots, я сделал это вручную следующим образом:

sudo mkdir /var/www/.config/.mono/certs/Trust
sudo mkdir /var/www/.config/.mono/certs/CA
sudo cp /usr/share/.mono/certs/Trust /var/www/.config/.mono/certs/Trust

Теперь это работает ...

...