web-dev-qa-db-ja.com

OpenDirectoryでDIGEST-MD5SASLメカニズムを有効にする方法は?

OSX 10.10 Yosemite + Server.appv4でOpenDirectoryマスターを作成しました。

$ 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を有効にするにはどうすればよいですか?

2
eggyal

パスワードサーバーでサポートされているハッシュタイプをリストしてみてください

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

...そしてそれが必要な認証メカニズムを追加するかどうかを確認します。これは、次にパスワードが変更されるまで、個々のユーザーには適用されないことに注意してください。

1
Gordon Davisson

これが、サーバー5.1.7を搭載したOS X10.11.6でこのログインの問題を解決するために私が働いた理由です。これらの手順により、信頼の問題、ユーザー権限の問題、サーバーに接続できないなどの理由でプロファイルをインストールできないなど、他のいくつかの問題も解決されました。

から https://support.Apple.com/en-us/HT200018

DNSを確認してください:

  1. ターミナルを開き、ホスト名を入力してサーバーの名前を確認します。

  2. Server.appを開き、サイドバーでサーバーを選択します。

  3. [概要]タブを選択します。サーバーの完全修飾ドメイン名が[ホスト名]フィールドに表示されます。

    サーバーウィンドウの修飾ドメイン名がhostnameコマンドの結果と一致しない場合は、この記事の次の手順に進む前に、これを修正する必要があります。サーバーのIPアドレスに割り当てられた完全修飾ドメイン名が正しいことが確実な場合は、サーバーのホスト名変更アシスタントを使用して、サーバーの正しいホスト名を設定します。

  4. システム環境設定を開き、ネットワークアイコンをクリックします。

  5. サーバー用に構成されているネットワークインターフェースを選択します。サーバーのIPアドレスがここに表示されます。

  6. リストされているDNSサーバーに注意してください。

    サーバーでDNSサーバーを構成し、このサーバーのDNSレコードが作成されている場合、サーバーは127.0.0.1(サーバーのIPアドレスではない)としてリストされているはずです。

    ネットワーク上の別のサーバーがサーバーのDNSレコードをホストしている場合は、そのサーバーのIPアドレスを[DNSサーバー]フィールドに表示する必要があります。

    この情報が正しくない場合は、[詳細...]ボタンをクリックしてから、[DNS]タブをクリックしてください。正しいDNSサーバーアドレスはここで設定できます。

DNS設定のテスト

ターミナルを使用して、名前からIPアドレスへの解決をテストできます。ターミナル(/Applications/Utilities/Terminal.app)を開き、次のコマンドを使用します。

「ホスト」コマンドを使用して、名前からIPアドレスへの解決をテストします。

Host <your server's fully qualified domain name>

期待される出力は次のとおりです。アドレスがあります。「ホスト」コマンドを使用して、IPアドレスから名前解決をテストすることもできます。

Host <your ip address> 

期待される出力は.in-addr.arpaドメイン名ポインターです

これに加えて、デフォルトのネットワークアクセスをすべてのネットワークに設定する必要があり、それが役立つかどうかはわかりませんが、設定でAppleプッシュ通知をオンにすることは私が取った別のステップでした(MDMはある程度プッシュに依存しています)。

さらに、.localドメイン名でホストしている場合は、サーバーに割り当てられた証明書がコンピューターのOpen Directory認証局によって署名されていることも重要です(そうでない場合は、もちろん、実際の署名された証明書を使用する必要があります)証明する機関)。 OS Xサーバーバージョン5には、Webサイトを含むさまざまなサービスに証明書を自動的に割り当てる方法に関していくつかの厄介なバグがあります。私がしなければならなかったのは、このような新しい証明書を手動で作成することでした。以下のrekerberizeステップの前に、システムの証明書をリセットするために次のステップを実行しました。

  1. (オプション)システムを新たにバックアップした後、すべてのサーバーサービスをオフにし、OpenDirectoryからマスターを削除して新たに開始します。次に、[証明書]に移動し、カスタムWebサイト用の特別な証明書を除くすべての証明書を削除します。また、/ etc/certificatesに移動してサーバーアプリに表示されない不正な証明書がないことを確認します(ある場合は、一時フォルダーに移動するか、削除します)。

  2. 次に、OS X Serverアプリで、まだ行っていない場合は、すべてのサービスをオフにします。次に、OS X Serverアプリに移動し、[証明書]> +> [証明書IDの作成...]を実行します。

  3. 名前にはホスト名を入れましたが、ここには何でも入れられます。 IDタイプ:リーフ。証明書の種類:SSLサーバー。 「デフォルトを上書きさせてください」にチェックを入れます。 「続行」をクリックします。

  4. シリアル番号は、まだ使用していないものを選んでください。 [続行]をクリックします。

  5. 名前(共通名)については、ホスト名と一致していることを確認してください。残りは関係ありません。 [続行]を押します。

  6. 認証局には、「Open Directory Certificate Authority」というテキストが含まれているものを選択します。これは、OpenDirectoryを最初に設定したときに作成されているはずです。 [続行]を押します。

  7. 証明書のビットサイズを設定します(2048 RSAで問題ありません)。

  8. Key Usage Extensionで、必ずKeyEnciphermentとKeyAgreementを選択してください。 [続行]を押します。

  9. Key Usage Extensionで、必ずSSLクライアント認証とPKINITクライアント認証を選択してください(これは問題ではないかもしれませんが、クライアントが証明書を必要としていることを示すエラーがiPadログに表示され、すべてをリセットしてこれを確認すると、起動しました動作中です。)続行を押します。

  10. Basic ConstraintExtensionを通過します。そこで続行を押します。

  11. サブジェクト代替名拡張子で、dDNSNameが上記のAppleの[DNSの確認]手順で確認したホスト名に設定されていることを確認します。 IPアドレスにサーバーの実際のIPが含まれていることを確認してください。続行を押します。

  12. 認証して[OK]を押します。これで、新しい証明書がOSXサーバーの[証明書]領域に表示されます。以下を使用してセキュアサービスを選択します:>カスタム。ポップアップ表示される[サーバー証明書]ボックスで、すべてのサービス(独自の証明書を必要とするカスタムWebサイトを除く)の証明書を新しい証明書に設定します。

  13. (オプション)手順0でOpen Directoryマスターを削除した場合は、ここで新しいマスターを作成します。少なくとも、OpenDirectoryにローカルIP範囲のロケールがあることを確認してください。 10.1.10.0/24など.

次に、Appleから以下の「rekerberize」ステップを実行します。

サーバーを再暗号化します。

Sudo mkdir /var/db/openldap/migration
Sudo touch /var/db/openldap/migration/.rekerberize
Sudo slapconfig -firstboot

上記の最後のターミナルコマンドは、OpenDirectoryサーバーをオンにします。サーバーアプリに戻り、OpenDirectoryがオンになっていることを確認します。次に、次の手順を実行します(最初のいくつかの手順は、.localサーバーで機能することを確認するためだけです)。

  1. サーバーのDNSサーバーがマシンのホスト名のエントリで構成されていることを確認し、他のすべてのDNS要求を通常のDNSサーバーに転送するように設定します。 (これは、マシンに.localドメインを使用している場合に特に重要です。)ホスト名とIPのエントリを追加してから、DNSサーバーをオンにします。

  2. 次に、Webサイトをオンにします。まだテスト段階にあり、サーバーがまだ.localドメイン名を使用している場合は、サーバーWebサイト(SSL)をダブルクリックして、SSL証明書が上記で作成した新しい証明書として設定されていることを確認します。

  3. プロファイルマネージャーをオンにします。構成プロファイルに署名するように設定します。表示されている証明書は、仲介機関によって署名されていることを示しているはずです。

  4. [ユーザー]で、プロファイルマネージャーで使用するユーザーを作成します。 Profile Managerで使用されるすべてのユーザーは、「ローカルネットワークディレクトリ」ではなく「ローカルディレクトリ」に存在する必要があります...これは非常に重要です...!その理由は、OS X Server(プロファイルマネージャーでも)からログアウトすると、そのユーザーのデータを含むボリュームがアンマウントされ、ユーザーによるそれ以上のログインが妨げられる可能性があるためです。このAppleサポートサイトを参照してください: https://support.Apple.com/en-us/HT203325

  5. Safariで、サーバーのプロファイルマネージャーにログインします。 ようこそ画面からデバイスを自動セットアップする場合は、[Everyone]グループの[Apple Configurator "。このSpiceworksの投稿と返信 を参照)。これがオフになっている場合、「準備された」デバイスでのようこそ画面プロセス中に、ユーザーのログインは説明なしで失敗します。

ここで、.localサーバーを使用している場合、iPadにプロファイルをダウンロードしてインストールさせるには、次の手順を実行する必要があります。

  1. IPadのセルラーデータをオフにしてWiFiに移動し、サーバーと同じサブネット上にあることを確認します。

  2. IPadがすでに[ようこそ]画面を超えてセットアップされている場合は、iPadのDNSサーバーを、上記の[DNSの確認]の手順で決定されたホスト名と正確に一致するように設定します(例:mycomputer.local)。

    OR

  3. IPadがようこそ画面にあり、セットアップ時に.local MDMサーバーからプロファイルをダウンロードするようにConfiguratorでセットアップされた監視対象デバイスである場合は、サーバーでインターネット共有をオンにしてホットスポットを作成する必要があります。それを最初のWIFI接続に使用します。これには、上記のAppleのサポートサイトから引用した「DNSの確認」セクションで説明されているように、サーバーでDNSサーバーを適切に設定する必要があることに注意してください。


ご注意ください:

•技術的に言えば、.localアドレスは完全修飾ドメイン名です。クライアントがサーバーと同じLANおよびサブネット上にある場合、サーバーでAppleプッシュ通知サービスがアクティブ化されている限り、サーバーに.localアドレスがあれば問題なく動作します。プロファイルマネージャーを設定し、後でOS X ServerでAPNをオフにした場合、APNを再度有効にするように求められることはなく、問題が発生し始めます。

•次のタイプのエラーが発生した場合は、デバイスログに記録されます。

Desc   : The server certificate for “https://my-macbook-pro.local/devicemanagement/api/device/mdm_checkin” is invalid.

それはあなたのiPadが証明書を信頼していないからです。これは、いくつかのことの1つを意味する可能性があります。

  1. 証明書の問題を意味している可能性があります。 OS XServerアプリのプロファイルマネージャーでプロファイル署名がオンになっていることを確認します。そうでない場合で、それをオンにしたくない場合は、ルート証明書をデバイスに電子メールで送信するか、Webサイトに掲載してそこからダウンロードすることにより、デバイスにルート証明書をインストールして信頼する必要があります。デバイスへのWebサイト。ところで、「ルート証明書」とは、リモート管理プロファイルの署名に使用されるコード署名プロファイルに署名した中間ルートに署名したものを意味します。キーチェーンアクセスに移動し、証明書の詳細を確認することで、どの証明書がどの証明書に署名したかを確認できます(私が知る限り、OS X Serverアプリ自体からルートにアクセスすることはできません)。 (証明書をKeychain Accessから.cerファイルとしてエクスポートし、それを/Library/Server/Web/Data/Sites/Default/、次にSudo chown _www:_www CertName.cer、次にiPadでmyserver.local/CertName.cerに移動することで、iOSデバイスにインストールできます。)ただし、私がこれを行う必要はありませんでした。証明書に署名したばかりです。それでも失敗する場合は、問題の証明書のIPまたはホスト名または設定が間違っているか、Kerberosのリセットが必要であるなどの理由で、上記のすべての手順を繰り返します。

  2. クライアントのDNSサーバーとしてサーバーのホスト名がない可能性があります。上記の両方を使用するように設定するか、サーバーのインターネット共有ホットスポットを使用するように設定します。


このAppleディスカッションスレッド、特にLinc Davisの投稿も非常に役に立ちました: https://discussions.Apple.com/message/30689429#30689429

1
CommaToast