%20%E3%81%AB%E3%82%88%E3%82%8B%20LDAPS%20%E3%81%AE%E8%B2%A0%E8%8D%B7%E5%88%86%E6%95%A3.png)
レイヤー 3/レイヤー 4 (IP プロトコル) データに基づいてトラフィックを正常なサーバーに誘導するネットワーク ロード バランサーを設定しようとしています。
質問: これは LDAP over SSL (LDAPS) でも機能しますか?(レイヤー 7 では必要に応じて TLS/SSL 復号化が実行されることを認識しています)
ネットワーク ロード バランサーがあり、2 つのバックエンド サーバーで LDAP サービスを実行しています。次の結果で
実行できます。ldapsearch
目標 | クエリ | 状態 |
---|---|---|
バックエンドサーバー1 | ldapsearch -x -H ldap://<Backend1> |
成功 |
バックエンドサーバー1 | ldapsearch -x -H ldaps://<Backend1> |
成功 |
バックエンドサーバー2 | ldapsearch -x -H ldap://<Backend2> |
成功 |
バックエンドサーバー2 | ldapsearch -x -H ldaps://<Backend2> |
成功 |
ネットワークロードバランサー | ldapsearch -x -H ldap://<NLB> |
成功 |
ネットワークロードバランサー | ldapsearch -x -H ldaps://<NLB> |
ない成功 |
これを解決する方法について何か提案はありますか?
編集:
実行時にldapsearch -x -H ldaps://<NLB>
次のエラーが発生します:
ldap_sasl_interactive_bind: Can't contact LDAP server (-1)
additional info: (unknown error code)
オプションの追加-d1
:
ldap_url_parse_ext(ldaps://ipa.example.com)
ldap_create
ldap_url_parse_ext(ldaps://ipa.example.com:636/??base)
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ipa.example.com:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.141.4.23:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
TLS: hostname (ipa.example.com) does not match common name in certificate (ipa2.exmaple.com).
TLS: can't connect: (unknown error code).
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
つまり、証明書に ipa1 と ipa2 の両方が含まれる証明書を NLB に添付する必要があるようです。これがクラウド プロバイダーでサポートされているかどうかはわかりません。
注記:NLB はマネージド サービスであるため、SSH で接続できません。
答え1
It seems like I need to attach a certificate to the NLB containing both ipa1 and ipa2 in the certificate?
いいえ、ipa.example.com
ロードバランサーに使用していると思われる名前の が付いた証明書が必要です。
LDAP サーバーに直接接続できるようにする場合 (ロード バランサーをバイパス)、複数の SAN を含む証明書が必要になります。
いずれにしても、ロード バランサはレイヤー 4 で動作しており、SSL 接続を終了せず、トラフィックをいずれかのサーバーに転送するだけなので、証明書を LDAP サーバーに直接インストールする必要があります。
答え2
TLS: hostname (ipa.example.com) does not match common name in certificate
使用している証明書には、クライアントが接続している SAN の名前がありません。