버전은 openldap 2.0.27 Release 버전입니다.
TLS통신 즉 암호회된 통신을 하고 싶은데요..
메뉴얼을 찾아 봐도 어떤함수를 써야 할지 모르겠습니다.
ldap_start_tls, ldap_start_tls_s 라는 함수를 써보긴 했지만 not support 라는 에러 메시지를 리턴 하네요.
아시는 분 도와 주세요
서버는 설정하셨는지요? 먼저 서버를 설정하고 그 다음에 클라이언트를 개발해야 하지 않을까요? 그래서 not support라는 메시지가 나오는 겁니다. http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html 를 참조해 보세요. openldap의 모든 해법은 http://www.openldap.org에 다 있습니다. 그럼 수고하세요.
답변 감사합니다.. 하지만 제가 원하는 답은 아닌거 같네요^0^ 일단 서버 세팅은 되어 있는 상태 입니다. SLS 는 인증 하는 부분이라 세팅을 하지 않은 부분이지만. TLS는 되어 있는 상태로 알고 있습니다. 실제로 첨부하신 메뉴얼의 7장 마지막 부분의 -z 옵션을 추가 했을때 두 서버간에 패킷을 잡아 본결과 암호화가 된 것을 확인할수 있었습니다. 문제는 -z 옵션 부분에 해당되는 C library를 찾는 것입니다. openldap.org를 열심히 찾아 보았지만. 셀스크립트 따로 C library 따로 찾게 되어 있어 찾기가 쉽지 않네요. 그래서 TLS에 관한 C library를 참고 했지만 앞글에서도 말씀 드렸듯이 NOT support 라는 에러메시지가 뜨더군요 제가 보기엔 서버에서 세팅이 안된게 아니고 버전이 낮아서 그 library의 형태만 존재하고 실제로 쓰지 못하는 게 아닌가 생각됩니다. 암튼 머리가 좀 아프네요 ㅡㅡ;;
일단 암호화 하는데는 성공 하였습니다.
지난번엔 ldap_set_option 앞에 ldap_start_tls_s를 써서 에러가 났는데
ldap_set_option 뒤에 ldap_start_tls_s를 쓰니까 암호화가 수행되었습니다.
근데 패킷 상태에서 암호화 복호화가 잘 처리되어 수행은 잘되는데. 값도 재대로 나오구요..
문제는 ldap_start_tls_s 의 결과를 ldap_perror 로 찍어보니까 "Connect error" 라는 메시지가 뜨네요.
리턴값도 91번 핵사로 0x8B라고 뜹니다.
서버는 SLS세팅이 되어 있지 않은 상태입니다만..
제가 영어가 짧긴 하지만 제 나름대로 메뉴얼 해석해본 결과 SLS 와 TLS는 별개라고 ...써 있던거 같은
데..
제가 잘못 해석한걸까요?
SLS세팅 하지 않고 해결할수 있는 방법 아시는분은 댓글 부탁드립니다.
질문에 대한 답은 아니지만 참고로 말씀을 드립니다. SSL과 TLS는 다른 부분입니다.
오고가는 패킷을 암호화하는 것은 SSL/TLS 두가지 방법이 있습니다.
오렐리 LDAP 서적 26쪽에 나와있는 내용입니다.
ㅇ LDAP over SSL (LDAPS - 636 port) 일반적으로 말하는 SSL입니다.
ㅇ TLS : 389 PORT 로 암호화해서 통신하는 기능으로 RFC 2830 에서 추가된 기능이라고 합니다.
389 동일한 포트에서 암호화 되지 않은 패킷과 암호화된 패킷을 동시에 전송할 수 있는 기능입니다.
php에는 ssl 을 지원하는 636 port 로 접속할 경우 host 에 ldaps 로 지정하고 포트를 636 지정합니다. start_tls는 명시하지 않습니다. 오히려 명시하면 에러가 나지요.
TLS를 이용하는 경우는 389 PORT 자체적으로 암호화를 지원하기 때문에 389 포트를 이용합니다. PHP 의 경우는 기본적으로 프로토콜 2를 사용하기 때문에 프로토콜 3을 사용하도록 옵션을 세팅하고 호스트에서는 ldaps 가 아닌 ldap으로 지정을 합니다. 반드시 start_tls 옵션을 사용해야지요.
ldaps 와 start_tls 기능은 별개라는 것을 생각하셔야 할 것입니다.
그리고 SSL이나 TLS를 이용하는 경우 접속하려는 호스트에서 서버의 인증서가 있어야지요. 리눅스의 경우 /etc/openldap/cacerts 디렉토리에 ca인증서가 있으며 LDAP서버의 CA인증서를 복사해놓고 authconfig 를 이용하여 ldap 사용을 다시 지정해주어야 하더군요.
php 에서 start_tls 사용하기
http://kr.php.net/ldap_start_tls