Мы создали мастер Open Directory на OSX 10.10 Yosemite + Server.app v4:
$ sudo slapconfig -createldapmasterandadmin admin Administrator 1000
Но не поддерживает DIGEST-MD5
:
$ ldapsearch -x -LLL -b "" -s base supportedSASLMechanisms
dn:
supportedSASLMechanisms: GSSAPI
supportedSASLMechanisms: CRAM-MD5
Который проблема потому что пользователи не могут пройти аутентификацию collabd
(для профиля / диспетчера устройств или Wiki):
<Error>: [CSAuthService.m:326 667e000 +86ms] Digest did not validate
<Error>: [CSServiceDispatcher.m:261 667e000 +0ms] Caught exception "Invalid Credentials" [CSAuthBadDigest] executing [http]Request{AuthService.validateUsernameAndPasswordDigest:remember:(<<scrubbed>>)}:
(
0 CoreFoundation 0x00007fff8d35c64c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff92ec76de objc_exception_throw + 43
2 CSService 0x000000010425fc90 -[CSAuthService sessionForDigest:remember:] + 1681
3 CSService 0x000000010425f5a7 -[CSAuthService validateUsernameAndPasswordDigest:remember:] + 65
4 CoreFoundation 0x00007fff8d23533c __invoking___ + 140
5 CoreFoundation 0x00007fff8d235192 -[NSInvocation invoke] + 290
6 CSService 0x00000001041dce3d -[CSServiceDispatcher executeRequest:asPartOfBatch:usingServiceImpl:] + 4774
7 CSService 0x00000001041dd91e __43-[CSServiceDispatcher executeBatchRequest:]_block_invoke_3 + 83
8 CSService 0x00000001041e2a22 -[NSArray(CollabBlockMethods) map:] + 249
9 CSService 0x00000001041dd877 __43-[CSServiceDispatcher executeBatchRequest:]_block_invoke_2 + 160
10 CSService 0x00000001041e3100 +[CSExecutionTimer recordTime:ofBlock:] + 74
11 CSService 0x00000001041e2f3b +[CSExecutionTimer timerNamed:aroundBlock:] + 76
12 CSService 0x00000001041dd5c4 __43-[CSServiceDispatcher executeBatchRequest:]_block_invoke + 323
13 PostgreSQLClient 0x00000001041400b3 -[PGCConnection transactionInBlock:onError:] + 149
14 CSService 0x00000001041dd3fa -[CSServiceDispatcher executeBatchRequest:] + 277
15 CSService 0x0000000104253aab +[CSServiceDispatchHTTPRouter routeServiceRequest:response:] + 1024
16 CSService 0x00000001041e399e __21-[CSServiceBase init]_block_invoke_6 + 48
17 CSService 0x0000000104250af4 __53-[CSRoutingHTTPConnection httpResponseForMethod:URI:]_block_invoke + 92
18 CSService 0x00000001042540ea -[CSHTTPBackgroundResponse bounce:] + 284
19 Foundation 0x00007fff8e14cb7a __NSThread__main__ + 1345
20 libsystem_pthread.dylib 0x00007fff9ad2f2fc _pthread_body + 131
21 libsystem_pthread.dylib 0x00007fff9ad2f279 _pthread_body + 0
22 libsystem_pthread.dylib 0x00007fff9ad2d4b1 thread_start + 13
)
Как включить DIGEST-MD5
?
Вот что помогло мне решить эту проблему входа в систему в OS X 10.11.6 с сервером 5.1.7. Эти шаги также разрешили несколько других проблем, таких как невозможность установки профилей из-за проблем с доверием, проблем с разрешениями пользователей или невозможности связаться с сервером и т. Д.
Из https://support.apple.com/en-us/HT200018 :
Проверить DNS:
Откройте Терминал и введите имя хоста, чтобы проверить имя вашего сервера.
Откройте Server.app и выберите свой сервер на боковой панели.
Выберите вкладку Обзор. Полное доменное имя вашего сервера должно отображаться в поле Host Name.
Если квалифицированное доменное имя в окне «Сервер» не соответствует результатам команды hostname, вам необходимо исправить это, прежде чем переходить к следующим шагам в этой статье. Если вы уверены, что полное доменное имя, назначенное IP-адресу вашего сервера, является правильным, используйте помощника по изменению имени хоста на сервере, чтобы установить правильное имя хоста для вашего сервера.
Откройте «Системные настройки» и щелкните значок «Сеть».
Выберите сетевой интерфейс, настроенный для вашего сервера. Здесь указан IP-адрес вашего сервера.
Обратите внимание на перечисленные DNS-серверы.
Если вы настроили DNS-сервер на своем сервере и для него были созданы записи DNS, ваш сервер должен быть указан как 127.0.0.1 (а не IP-адрес сервера).
Если другой сервер в вашей сети размещает записи DNS для вашего сервера, IP-адрес этого сервера должен быть указан в поле DNS-серверов.
Если эта информация неверна, нажмите кнопку «Дополнительно…», а затем вкладку DNS. Здесь можно указать правильный адрес (а) DNS-сервера.
Проверка настроек DNS
Вы можете использовать Терминал для проверки разрешения вашего имени на IP-адрес. Откройте Терминал (/Applications/Utilities/Terminal.app) и используйте следующие команды:
Используйте команду «host» для проверки разрешения имени и IP-адреса:
host <your server's fully qualified domain name>
Ожидаемый результат имеет адрес. Вы также можете использовать команду «host» для проверки IP-адреса на разрешение имен:
host <your ip address>
Ожидаемый результат - указатель доменного имени .in-addr.arpa
В дополнение к этому для сетевого доступа по умолчанию следует установить значение «Все сети», и я не уверен, поможет ли это, но включение push-уведомлений Apple в настройках было еще одним шагом, который я сделал (MDM в определенной степени полагается на Push).
Кроме того, если вы размещаетесь на доменном имени .local, также важно, чтобы сертификат, назначенный вашему серверу, был подписан центром сертификации Open Directory на вашем компьютере (в противном случае, конечно, вы захотите использовать сертификат, подписанный действительным центр сертификации). Сервер OS X версии 5 имеет несколько досадных ошибок, когда дело доходит до того, как он автоматически назначает сертификаты различным службам, включая веб-сайты. Что мне нужно было сделать, так это вручную создать новый сертификат, подобный этому, до шага rekerberize, описанного ниже, я выполнил следующие шаги для сброса сертификатов для системы:
(Необязательно) После создания новой резервной копии вашей системы начните заново, выключив все серверные службы и удалив мастер из Open Directory. Затем перейдите в раздел «Сертификаты» и удалите все сертификаты, кроме специальных для любых настраиваемых веб-сайтов. Также перейдите в / etc / Certificates и убедитесь, что там нет никаких мошеннических сертификатов, которые не отображаются в приложении Server (если они есть, переместите во временную папку или удалите).
Затем в приложении OS X Server, если вы еще этого не сделали, ВЫКЛЮЧИТЕ ВСЕ УСЛУГИ. Затем перейдите в приложение OS X Server и выполните Certificates> +> Create a Certificate Identity ...
В качестве имени я указал свое имя хоста, но вы можете указать здесь что угодно. Тип идентичности: Лист. Тип сертификата: SSL-сервер. Установите флажок «Позвольте мне изменить настройки по умолчанию». Щелкните «Продолжить».
В качестве серийного номера выберите то, что вы еще не использовали. Щелкните продолжить.
Убедитесь, что имя (общее имя) соответствует вашему имени хоста. Остальное значения не имеет. Нажмите Продолжить.
Для центра сертификации выберите тот, который включает текст «Центр сертификации Open Directory», который должен был быть создан при первой настройке Open Directory. Нажмите Продолжить.
Установите битовый размер сертификата (2048 RSA подойдет).
В разделе «Расширение использования ключа» обязательно выберите «Шифрование ключа и согласование ключа». Нажмите Продолжить.
В разделе «Расширение использования ключа» обязательно выберите «Проверка подлинности клиента SSL» и «Проверка подлинности клиента PKINIT» (это может не иметь значения, но я увидел ошибку в журнале iPad, в которой указывалось, что клиенту нужен сертификат, и когда я все сбросил и проверил, он запустился работает.) Нажмите продолжить.
Пройдите мимо расширения базовых ограничений. Нажмите продолжить там.
В поле Subject Alternate Name Extension убедитесь, что для dDNSName установлено ваше имя хоста, подтвержденное на шаге Check DNS от Apple выше. Убедитесь, что IP-адрес включает фактический IP-адрес вашего сервера. Нажмите продолжить.
Авторизуйтесь и нажмите ОК. Теперь новый сертификат должен появиться в области сертификатов сервера OS X. Выберите Защищенные службы с помощью:> Пользовательский. Во всплывающем окне «Сертификаты сервера» установите сертификат для ВСЕХ ваших служб (кроме любых настраиваемых веб-сайтов, которым нужен собственный сертификат) для вашего нового сертификата.
(Необязательно.) Если вы удалили мастер Open Directory на шаге 0, создайте новый здесь. По крайней мере, убедитесь, что в Open Directory есть локаль с вашим локальным диапазоном IP-адресов, например 10.1.10.0/24 и т. Д.
Затем выполните шаг "rekerberize" ниже от Apple:
Рекерберизуйте свой сервер:
sudo mkdir /var/db/openldap/migration sudo touch /var/db/openldap/migration/.rekerberize sudo slapconfig -firstboot
Последняя команда терминала выше будет включать сервер Open Directory. Вернитесь в серверное приложение и убедитесь, что Open Directory включен. Затем выполните следующие шаги (я считаю, что первые несколько шагов предназначены только для того, чтобы убедиться, что он может работать с сервером .local):
Убедитесь, что DNS-сервер вашего сервера настроен с записью для имени хоста вашего компьютера и настроен на пересылку всех других DNS-запросов на обычный DNS-сервер. (Это особенно важно, если вы используете для своего компьютера домен .local.) Добавьте запись для вашего имени хоста и вашего IP-адреса, затем включите DNS-сервер.
Теперь включите веб-сайты. Если вы все еще находитесь на этапе тестирования и ваш сервер все еще использует доменное имя .local, дважды щелкните веб-сайт сервера (SSL) и убедитесь, что его сертификат SSL настроен как новый, который мы создали выше.
Включите диспетчер профилей. Установите для него значение Подписать профили конфигурации. В предъявленном сертификате должно быть указано, что он был подписан посредником.
В разделе «Пользователи» создайте пользователя для использования с диспетчером профилей. Все пользователи, используемые с Profile Manager, ДОЛЖНЫ находиться в «Локальном каталоге», а НЕ в «Локальном сетевом каталоге» ... это ОЧЕНЬ важно ...! Причина в том, что когда вы выходите из OS X Server (даже из Менеджера профилей), это может привести к отключению тома, содержащего данные этого пользователя, что предотвратит их дальнейшие входы в систему. См. Этот сайт поддержки Apple: https://support.apple.com/en-us/HT203325
В Safari войдите в диспетчер профилей вашего сервера. Если вы хотите, чтобы устройства автоматически настраивались с экрана приветствия, вам необходимо установить флажок в группе «Все» для «Разрешить регистрацию во время Ассистента настройки для устройств, настроенных с помощью Apple Configurator». (Видеть это сообщение и ответы Spiceworks.). Если этот параметр отключен, то во время процесса экрана приветствия на «подготовленном» устройстве вход пользователя в систему будет невозможен без объяснения причин.
Теперь, если вы используете сервер .local, то чтобы получить iPad для загрузки и установки профилей, вам необходимо выполнить следующие шаги:
Выключите сотовые данные iPad, перейдите к Wi-Fi и убедитесь, что он находится в той же подсети, что и ваш сервер.
Если iPad уже настроен после экрана приветствия, настройте DNS-сервер iPad так, чтобы он точно соответствовал имени хоста, определенному в шагах проверки DNS выше (например, mycomputer.local).
ИЛИ
Если iPad находится на экране приветствия и это контролируемое устройство, настроенное с помощью конфигуратора для загрузки профиля во время установки с вашего .local сервера MDM, вам необходимо включить общий доступ к Интернету на сервере, чтобы создать точку доступа, и используйте его для начального подключения к WIFI. Обратите внимание, что для этого требуется, чтобы сервер правильно настроил DNS-сервер, как описано в разделе «Проверка DNS», цитируемом на сайте поддержки Apple выше.
Пожалуйста, обратите внимание:
• Технически говоря, адрес .local - это полностью определенное доменное имя. Если ваши клиенты находятся в той же локальной сети и подсети, что и сервер, то все будет работать, если у сервера есть локальный адрес, пока на сервере активирована служба Apple Push Notification. Если вы настроили диспетчер профилей, а затем отключили APN на сервере OS X, вам не будет предложено повторно включить его, и все начнется с ошибкой.
• В журналах устройства, если вы получите следующий тип ошибки:
Desc : The server certificate for “https://my-macbook-pro.local/devicemanagement/api/device/mdm_checkin” is invalid.
Тогда это потому, что ваш iPad не доверяет сертификату. Это может означать одно из нескольких:
Это может означать проблему с сертификатом. Убедитесь, что подпись профиля включена в диспетчере профилей в приложении OS X Server. Если это не так, и вы не хотите, чтобы он был включен, вам может потребоваться установить и доверять корневой сертификат на вашем устройстве, отправив его по электронной почте на Устройство или разместив на веб-сайте, а затем загрузив его с этого устройства. веб-сайт на устройство. Кстати, «корневой сертификат» означает тот, который подписал промежуточный корень, который подписал профиль подписи кода, используемый для подписи профиля удаленного управления; вы можете увидеть, какой сертификат подписан, перейдя в Keychain Access и просмотрев детали сертификатов (насколько мне известно, корни недоступны из самого приложения OS X Server). (Вы можете установить сертификат на устройство iOS, экспортировав его из Keychain Access как .cer
файл, а затем поместите его в /Library/Server/Web/Data/Sites/Default/
, затем sudo chown _www:_www CertName.cer
, затем на iPad перейдите к myserver.local/CertName.cer
.) Однако мне не нужно было этого делать, если я просто подписал сертификат. Если все это не помогает, повторите все вышеперечисленные шаги, потому что у вас, вероятно, неправильный IP-адрес, имя хоста или настройки в соответствующих сертификатах, или Kerberos требуется сброс и т. Д.
Это может означать, что у вашего клиента нет имени хоста сервера в качестве DNS-сервера. Либо настройте его, либо настройте на использование точки доступа сервера общего доступа к Интернету, как описано выше.
Эта ветка обсуждений Apple, в частности сообщение Линка Дэвиса, также очень помогла: https://discussions.apple.com/message/30689429#30689429
Попробуйте перечислить поддерживаемые сервером паролей типы хэшей с помощью
pwpolicy -n /LDAPv3/127.0.0.1 -getglobalhashtypes
... и посмотрите, включает ли он RECOVERABLE (который, я считаю, необходим как для DIGEST-MD5, так и для WEBDAV-DIGEST) (обратите внимание, что это не будет перечислять GSSAPI / Kerberos, поскольку это обрабатывается отдельной службой). К сожалению, у меня нет возможности проверить это правильно, но если он отсутствует, попробуйте:
pwpolicy -n /LDAPv3/127.0.0.1 -a admin -setglobalhashtypes RECOVERABLE on
... и посмотрите, добавит ли это необходимых механизмов аутентификации. Обратите внимание, что это не относится к отдельным пользователям, пока их пароль не будет изменен в следующий раз.