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