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)
디버깅 측면에서 다음에 무엇을 확인해야 할지 모르겠습니다. 내가 본 한 가지 문제는 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
그렇지 않으면 클라이언트도 자체 인증서를 가질 것으로 예상됩니다.