我们已经在OSX 10.10 Yosemite + Server.app v4上创build了一个Open Directory主机:
$ sudo slapconfig -createldapmasterandadmin admin Administrator 1000
但是它不支持DIGEST-MD5 :
$ ldapsearch -x -LLL -b "" -s base supportedSASLMechanisms dn: supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: CRAM-MD5
这是一个问题,因为用户无法通过collabd进行身份validation(对于Profile / Device Manager或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 ?
尝试列出密码服务器支持的哈希types
pwpolicy -n /LDAPv3/127.0.0.1 -getglobalhashtypes
…看看它是否包含RECOVERABLE(我相信这是DIGEST-MD5和WEBDAV-DIGEST都需要的)(注意,这不会列出GSSAPI / Kerberos,因为这是由一个单独的服务处理)。 不幸的是,我没有办法testing这个权利,但是如果缺less,请尝试:
pwpolicy -n /LDAPv3/127.0.0.1 -a admin -setglobalhashtypes RECOVERABLE on
…看看是否增加了所需的authentication机制。 请注意,这将不会适用于个人用户,直到他们的密码下次更改。
以下是我用Server 5.1.7解决OS X 10.11.6上的这个login问题的工作。 这些步骤还解决了其他一些问题,例如由于信任问题,用户权限问题或无法联系服务器等原因而无法安assembly置文件等。
从https://support.apple.com/zh-cn/HT200018 :
检查DNS:
打开terminal并键入主机名以validation您的服务器的名称。
打开Server.app并在侧边栏中select您的服务器。
select概览选项卡。 您的服务器的完全合格的域名应显示在主机名字段中。
如果“服务器”窗口中的限定域名与主机名命令的结果不匹配,则需要在继续本文中的下一步之前更正此问题。 如果您确定分配给您的服务器IP地址的完全限定域名是正确的,请使用服务器中的更改主机名助理为您的服务器设置正确的主机名。
打开系统偏好设置,然后点击networking图标。
select为您的服务器configuration的networking接口。 这里列出您的服务器的IP地址。
请注意列出的DNS服务器。
如果您已经在服务器上configuration了DNS服务器,并且已经为该服务器创build了DNSlogging,那么您的服务器应该被列为127.0.0.1(不是服务器的IP地址)。
如果networking上的另一台服务器正在为您的服务器托pipeDNSlogging,那么该服务器的IP地址应该列在“DNS服务器”字段中。
如果此信息不正确,请单击“高级…”button,然后单击“DNS”选项卡。 在这里可以设置正确的DNS服务器地址。
testing你的DNS设置
您可以使用terminal来testing您的名称到IP地址parsing。 打开terminal(/Applications/Utilities/Terminal.app)并使用以下命令:
使用“主机”命令来testing名称到IP地址parsing:
host <your server's fully qualified domain name>预期的输出是有地址你也可以使用“主机”命令来testingIP地址来命名parsing:
host <your ip address>预期的输出是.in-addr.arpa域名指针
除此之外,默认networking访问应该设置为所有networking,我不确定是否有帮助,但是在设置中打开Apple推送通知是我采取的另一个步骤(MDM依赖推送到一个学位)。
此外,如果您使用.local域名进行托pipe,则分配给您的服务器的证书由您的计算机上的开放目录authentication中心进行签名也很重要(否则当然您需要使用实际签名的证书证书颁发机构)。 OS X服务器版本5有一些恼人的错误,当涉及到它如何自动分配证书到各种服务,包括网站。 我所要做的是手动创build一个像这样的新证书,在下面的rekerberize步骤之前,我按照以下步骤重新设置了系统的证书:
(可选)新备份系统后,closures所有服务器服务并从开放式目录中删除主服务器,重新启动。 然后转到证书并删除任何自定义网站的特殊证书除外的任何证书。 另外去/ etc /证书,并确保没有任何stream氓证书没有出现在服务器应用程序(如果有,移动到临时文件夹或删除)。
接下来,在OS X Server应用程序中,如果您还没有,请closures所有服务。 然后转到OS X Server应用程序并执行证书> +>创build证书标识…
名字,我把我的主机名,但你可以把任何东西在这里。 身份types:叶子。 证书types:SSL服务器。 选中“让我重写默认值”。 点击“继续”。
对于序列号,select您尚未使用的东西。 点击继续。
对于名称(通用名称),确保它匹配您的主机名。 其余的并不重要。 按继续。
对于“证书颁发机构”,请select包含文本“Open Directory Certificate Authority”的文本,该文本应该在首次设置Open Directory时创build。 按继续。
设置证书的位大小(2048 RSA是好的)。
在密钥使用扩展中,确保select密钥encryption和密钥协议。 按继续。
在密钥使用扩展中,确保selectSSL客户端身份validation和PKINIT客户端身份validation(这可能无关紧要,但我确实在iPad日志中看到错误,指出客户端需要证书,并且重置所有内容并检查了这一点,工作)。按继续。
经过基本约束扩展。 按下继续。
在主题备用名称扩展中,确保将dDNSName设置为您在上述Apple的“检查DNS”步骤中validation的主机名。 确保IP地址包含您的服务器的实际IP。 按继续。
validation并按OK。 现在新的证书应该显示在OS X服务器的证书区域。 select安全服务使用:>自定义。 在popup的“服务器证书”框中,将所有服务的证书(除了需要自己的证书的自定义网站除外)都设置为新证书。
(可选)如果您在步骤0中删除了开放目录主机,则在此创build一个新主机。 至less要确保Open Directory具有本地IP范围的语言环境,例如10.1.10.0/24等
接下来,从苹果公司下面的“rekerberize”步骤:
重新标记您的服务器:
sudo mkdir /var/db/openldap/migration sudo touch /var/db/openldap/migration/.rekerberize sudo slapconfig -firstboot
上面的最后一个terminal命令将打开Open Directory服务器。 回到服务器应用程序,并确保打开目录打开。 然后执行以下步骤(我相信只是确保它可以与.local服务器一起工作的前几个步骤):
确保您的服务器的DNS服务器configuration了您的机器主机名的条目,并设置为将所有其他DNS请求转发到正常的DNS服务器。 (如果您的计算机使用的是.local域,则这一点尤为重要。)添加主机名和IP的条目,然后打开DNS服务器。
现在打开网站。 如果您仍处于testing阶段,并且您的服务器仍处于.local域名,请双击服务器网站(SSL),并validation其SSL证书是否已设置为我们上面创build的新证书。
打开configuration文件pipe理器。 将其设置为签署configuration文件。 显示的证书应该说是由中介机构签署的。
在用户中,创build一个用户以使用Profile Manager。 与Profile Manager一起使用的所有用户必须在“本地目录”中,而不在“本地networking目录”中…这是非常重要的…! 原因是当你从OS X服务器(甚至个人资料pipe理器)注销时,它可能会导致包含该用户数据的卷的卸载,从而阻止他们进一步login。 请参阅以下Apple支持网站: https : //support.apple.com/en-us/HT203325
在Safari中,login到您的服务器的configuration文件pipe理器。 如果您打算从“欢迎”屏幕自动设置设备,则需要选中Everyone组中的框,以获取“允许在设置助理期间针对使用Apple Configuratorconfiguration的设备进行注册”中的框。 (看到这个Spiceworks的post和回复。 )。 如果closures,那么在“准备好的”设备上的欢迎屏幕过程中,用户的login将失败,没有解释。
现在,如果您使用的是.local服务器,那么要让iPad下载并安assembly置文件,您需要执行以下步骤:
closuresiPad的蜂窝数据并转到WiFi,并确保它与您的服务器在同一个子网上。
如果iPad已经通过“欢迎”屏幕设置,请将iPad的DNS服务器设置为与上面的“检查DNS”步骤(例如mycomputer.local)中确定的主机名完全匹配。
要么
如果iPad处于“欢迎”屏幕上,并且它是使用Configurator在安装时从本地MDM服务器下载configuration文件的受监视设备,则需要在服务器上打开“Internet共享”以创build热点,并将其用于最初的WIFI连接。 请注意,这需要服务器按照上述Apple支持站点引用的“检查DNS”部分中的说明正确地设置DNS服务器。
请注意:
•从技术上讲,.local地址是完全合格的域名。 如果您的客户端与服务器位于同一局域网和子网上,那么只要服务器上的Apple推送通知服务已激活,服务器就拥有一个.local地址,那么情况就会起作用。 如果您设置了configuration文件pipe理器,然后closuresOS X服务器中的APN,那么您将不会被提示重新启用它,事情将开始失败。
•在设备日志中,如果出现以下types的错误:
Desc : The server certificate for “https://my-macbook-pro.local/devicemanagement/api/device/mdm_checkin” is invalid.
那是因为你的iPad不信任证书。 这可能意味着几件事情之一:
这可能意味着证书问题。 确保在OS X Server应用程序中的configuration文件pipe理器中打开configuration文件签名。 如果不是,而您又不想要,则可能需要将根证书安装并信任到您的设备,方法是将其发送到设备,或将其放在网站上,然后从该设备下载网站到设备上。 顺便提一下,“根证书”是指签署了用于签署远程pipe理configuration文件的代码签名configuration文件的中间根目录; 你可以通过进入Keychain Access并查看证书的详细信息(根据我所知,根目录不能从OS X Server应用程序本身访问)来看到哪个证书被签名。 (您可以通过从Keychain Access以.cer文件的forms导出证书,然后将其放置在/Library/Server/Web/Data/Sites/Default/ ,然后使用sudo chown _www:_www CertName.cer ,然后在iPad上,导航到myserver.local/CertName.cer 。)但是,我不需要这样做,如果我只是签署了证书。 如果所有这些都失败了,那么重复上述所有步骤,因为您可能在有问题的证书上有错误的IP或主机名或设置,或者Kerberos需要重置等。
这可能意味着您的客户端不具有服务器的主机名作为其DNS服务器。 要么将其设置为使用,要么将其设置为使用服务器的“Internet共享”热点,这两者都是上述内容。
这个Apple讨论主题,特别是Linc Davis的post,也非常有帮助: https : //discussions.apple.com/message/30689429#30689429