LDAPS 経由で Active Directory にバインドできない

LDAPS 経由で Active Directory にバインドできない

Windows Server 2019 で実行されている DC があり、ドメイン サービス ロールがインストールされています。AD CS ロール (ルートは電源オフ、中間は電源オフ、発行は電源オン、ドメイン参加) を使用して、同じドメインに多層 CA を設定しています。

サードパーティのクライアント (ドメインに参加していないマシンや Web アプリケーションなど) を LDAPS/636 経由で BIND するのに問題があります。LDAP/389 経由では問題なく動作し、StartTLS でも動作するものもありますが、常に使用できるとは限らず、適切な LDAPS を使用することを好みます。

AD サーバーの証明書を生成し、証明書の件名にその FQDN を使用し、すべてのベースをカバーするために DNS ホスト名と IP アドレスを SAN として含めるようにしました。また、拡張キー使用法拡張機能で「サーバー認証」が選択されていることも確認しました。

環境へのリモート アクセスがないため、まだ確認していませんが、Microsoft のドキュメントに従って Schannel CSP を使用して証明書が生成されたと仮定します。証明書は正しい発行 CA によって署名されており、クライアントには CA チェーン全体がインストールされており、AD 証明書をローカルで検証できます (AD から証明書をエクスポートしてクライアントの 1 つにコピーする場合)

ここで奇妙なことが起きます。AD サーバーにアクセスして を開くとldp.exe、SSL を使用して LDAPS/636 経由で接続でき、Host supports SSL, SSL cipher strength = 256 bits出力/コンソール ビューに が表示されます。ただし、クライアントの 1 つ (たとえば Linux マシン) にアクセスして openssl を使用して接続しようとすると、次のようになります。

openssl s_client -showcerts -state -connect <AD_FQDN>:636

証明書は取得しません。代わりにこれを取得します (ネットワークの性質上、コピー/貼り付けではなく書き留める必要があったため、若干の不正確さがある可能性があります)。

CONNECTED (00000003)
write: errno = 104
---
no peer certificate available
---
No client cert CA names sent
---
SSL handshake has read 0 bytes and written 324 bytes
Verification: OK
---
<snip>

実際、認証に LDAPS を使用するようにクライアントを設定しようとしても、まだうまくいきません。通常、次のような役に立たないエラーが表示されます。SSL_Certificate error: Connection closed by peerこれは、私の経験からすると、証明書の検証/信頼の問題を示しています (クライアントが検証する証明書を取得していないのであれば、これは理にかなっています)。他のクライアントの中には、さらに役に立たないものもあり、「LDAP サーバーへのバインドに失敗しました」とだけ表示されます。

DC は間違いなくポート 636 をリッスンしており、クライアントから外部的に接続できます (つまり、DC マシン内のループバックだけでなく)。これは netcat を使用して確認しました。

nc -vz <AD_FQDN> 636

この問題の原因は何だと思いますか?

答え1

ファイアウォールがアプリケーション検査を実行し、SSL 接続を切断していたことが判明しました。アプリケーション検査をオフにすると、問題は解決しました。

関連情報