인증서를 사용하여 TLS를 통해 PHP 스크립트를 LDAP에 연결해야 합니다. LDAP 연결은 TLS 없이 작동합니다. 자세한 내용을 보려면 여기를 클릭하세요.https://stackoverflow.com/questions/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend
Softerra LDAP 브라우저를 사용하여 tls를 통해 Windows에서 연결했습니다. 인증서를 설치하고 이를 신뢰하는지 여부를 묻습니다.
내 최종 결과는 PHP에서 TLS를 사용하여 LDAP를 통해 인증할 수 있다는 것입니다. .cer 유형 인증서를 얻었습니다. Windows Exchange 컴퓨터에서 제공됩니다. 내가 아는 한 SLES는 .pem 인증서를 지원합니다. 그래서 내 질문은 ...
Q1: .cer에서 .pem으로 변환해야 합니다.먼저 클라이언트(예: SLES 서버)에 인증서를 설치하고 마지막으로Q2: 내 PHP 애플리케이션이 인증서에 액세스하고 작업을 수행할 수 있도록 서버에 이 인증서를 설치하는 가장 좋은 방법은 무엇입니까?. SLES 서버에서는 다른 LDAP 서버에 연결해야 합니다.
현재 우리가 실행하면
ldapsearch -H ldaps://localhost:9215 -W
우리는 얻었다
Enter LDAP Password:
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (unable to get local issuer certificate)
여기서 좋은 정보를 많이 얻었네요http://www.php.net/manual/de/function.ldap-connect.php#36156특히나 이 문장은 내 눈에는 매우 중요하다Once you've gotten the ldapsearch tool working correctly PHP should work also.
- SUSE Linux 엔터프라이즈 서버 11(x86_64)
- ldapsearch: @(#) $OpenLDAP: ldapsearch 2.4.26 (2012년 9월 26일 13:14:42) $ abuild@baur:/usr/src/packages/BUILD/openldap-2.4.26/clients/tools (LDAP 라이브러리 : 오픈LDAP 20426)
답변1
이는 서버의 인증서가 만료되었거나 유효하지 않음을 의미합니다.
해결 방법은 다음과 같이 LDAPTLS_REQCERT
변수를 사용하여 인증서를 무시하는 것입니다.
LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"
그렇지 않으면 인증서를 가져와서 신뢰할 수 있는 것으로 표시할 수 있습니다.
답변2
pem에서 cer로의 변환에 대해서는 잘 모르겠지만 ldapsearch에서 ldap.conf 또는 글로벌 인증서 수정 권한 없이 인증서를 사용하도록 하려면 다음을 수행할 수 있어야 합니다.
env LDAPTLS_CACERT=/path/to/cert ldapsearch
답변3
사용
LDAPTLS_REQCERT=never
LDAP 서버에 대한 인증서 확인을 제거합니다. 이는 우선 TLS가 제공하는 보안을 무너뜨립니다. 이렇게 하지 마십시오. 문제가 있는 경우 Tink에 설명된 대로 인증서를 복구한 다음 LDAP 클라이언트에 인증 기관을 제공해야 합니다.