OpenLDAP TLSエラー:TLSネゴシエーションに失敗しました

OpenLDAP TLSエラー:TLSネゴシエーションに失敗しました

Helm Chartを介してkubernetesでOpenLDAPを設定しようとしています。

正しくデプロイされており、ローカルでコンテナ内やphpldapadminなどのクラスタ内の他のコンテナからポート389(暗号化されていない)を介してサーバー(URL:openldap.ldap.svc.cluster.local経由)にアクセスできます。

ただし、TLSを使用してアクセスすることはできません。コンテナ内で次のコマンドを実行すると、ldapsearch -x -ZZログに次のものが表示されます。

5e2e6f05 conn=1035 fd=15 ACCEPT from IP=127.0.0.1:44820 (IP=0.0.0.0:389)
5e2e6f05 conn=1035 op=0 EXT oid=1.3.6.1.4.1.1466.20037
5e2e6f05 conn=1035 op=0 STARTTLS
5e2e6f05 conn=1035 op=0 RESULT oid= err=0 text=
TLS: can't accept: (unknown error code).
5e2e6f05 conn=1035 fd=15 closed (TLS negotiation failure)

同様に、ローカル openLDAP コンテナ自体で試してみると、次のような結果がldapsearch -x -H ldaps://localhost -b "dc=domain,dc=com"得られます。

5e2e6a87 conn=1138 fd=15 ACCEPT from IP=127.0.0.1:45638 (IP=0.0.0.0:636)
TLS: can't accept: (unknown error code).
5e2e6a87 conn=1138 fd=15 closed (TLS negotiation failure)

デバッグの面では、次に何を確認するのかわかりません。私が見た問題の1つは、dockerコンテナでパラメータを使用して実行する必要があることです--hostname。しかし、helmチャートではそうしないようで、ホスト名を設定する必要があるかもしれません。たぶん、証明書のドメイン名localhostではなくホスト名を介してldap.domain.comアクセスするという事実は気に入らないかもしれません。この場合、ホスト名をに設定する方法はまだわかりません。ldapこれが私がしなければならないすべてだと仮定する時です。

環境:

このチャートをインストールしました。https://github.com/helm/charts/tree/master/stable/openldap

これは次のDockerイメージに基づいています。https://github.com/osixia/docker-openldap

次に、Helmチャートに次のパラメータを設定します。

existingSecret: openldap-admin-pass
tls.enabled: true
tls.secret: ldap-tls
persistence.enabled: true
persistence.accessMode: ReadWriteMany
persistence.existingClaim: openldap-vol

また、構成図を変更してLDAP_DOMAIN = domain.com

証明書自体は Let's encrypt の cert-manager によって生成されます。証明書のドメイン名はですldap.domain.com。 cloudflareのDNS解決を使用して署名され、有効な証明書です。

サーバーの起動ログにエラーは表示されず、TLS構成と証明書が正しくインポートされたようです。https://pastebin.com/raw/q9iEZCGN

どんな助けでも大変感謝します。ありがとうございます。

ベストアンサー1

ここで解決策を見つけました。 https://github.com/osixia/docker-openldap/issues/105

openLDAPコンテナに環境変数を設定する必要があります。LDAP_TLS_VERIFY_CLIENT = try

それ以外の場合、クライアントも独自の証明書を持つことが期待されます。

おすすめ記事