database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
ㆍLDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
LDAP Q&A 3230 게시물 읽기
No. 3230
LDAP 서버에 접속해서 CRL 검증하는 방법좀 알려주십시요
작성자
뎅글이
작성일
2012-03-16 17:35ⓒ
2012-03-16 17:37ⓜ
조회수
4,667

안녕하세요 다름이 아니라 공인인증서에 CRL 배포포인터에 보면 ldap 서버를 통해서 인증서폐기목록을 검색하도록 되어있습니다.

VC++ 환경에서 인증서의 CRL 배포포인터까지 취득은 했지만 그다음으로 ldap 서버로 접속해서 CRL 검증하는 루틴을 코딩해야하는데

어떻게 풀어나가야할지 막막합니다. 인터넷으로 몇일동안 계속 알아는 보고 있으나 이와관련 자료가 너무 없네요.

OpenLDAP api 를 이용해서 CRL 검색을 하면 되지않나 생각을 갖고 검색을 해봤습니다.

 

 

1. Windows에서 기본적으로 제공하는 Wldap32.dll 이라는 api 라는게 있더군요 이걸 이용해서 OpenLDAP에

접근하면 되는건지? 이와 관련 자료가 나와있는 사이트나 해결방안이 있을까요


2. Openldap.lib 파일과 Openldap.dll 파일을 이용해도 되리라 생각은 듭니다. 여기서 혹시 직접 라이브러리

파일을 만들수있는 방법은 없는지? OpenSSL 라이브러리는 자료를 참고해서 만들어보기는 했습니다.

방법이 있다면 참고할만한 사이트가 있을까요? 이부분에 대해서도 저또한 지속적으로 알아는 보았으나

초보개발자라 지식이 짧네요


3. OpenLDAP 사이트에서 OpenLDAP for Windows 설치파일을 다운받아 설치후 테스트를 해보았습니다.

설치시 BDB 설정으로 했습니다.

slapd으로 시작되는 실행파일만 존재하고 ldapadd 와  ldapsearch 등 ldap으로 시작되는 exe파일은 없더군요

그래서 ldapadd 실행파일을 구해서 적용해보았습니다.

프로토콜 오류에대한 버전문제는 해결했으나 ldapadd 로 디렉터리 추가시 에러가 나는 문제와 ldapsearch 시

No Search Object  라는 메세지와 함께 검색이 안되는 문제가 있더군요

관련 자료를 찾아 보았으나 무슨 문제인지 감이 안옵니다. ;;

C:\Program Files\OpenLDAP> 설치 디렉터리 구요, 여기에 ldap관련 실행파일 갔다놨구요

slapd.conf 설정은 아래와 같습니다.

# BDB Backend configuration file
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
ucdata-path ./ucdata
include  ./schema/core.schema
include  ./schema/cosine.schema
include  ./schema/nis.schema
include  ./schema/inetorgperson.schema
include  ./schema/openldap.schema
include  ./schema/dyngroup.schema


pidfile  ./run/slapd.pid
argsfile ./run/slapd.args

access to * by * read  <- search시 anonymously 하게되면 설정을 해줘야 한다해서 넣었습니다만 여기다 하는게 맞는건지는 모르겠습니다.

# Enable TLS if port is defined for ldaps


TLSVerifyClient never
TLSCipherSuite HIGH:MEDIUM:-SSLv2
TLSCertificateFile ./secure/certs/server.pem
TLSCertificateKeyFile ./secure/certs/server.pem
TLSCACertificateFile ./secure/certs/server.pem

 

#######################################################################
# bdb database definitions
#######################################################################


database bdb
suffix  "dc=maxcrc,dc=com"
rootdn  "cn=Manager,dc=maxcrc,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw    {SSHA}3hWsr0wmdLVaTVpecjiHv7f1YJAh6Rwc# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory ./data
dirtyread
searchstack 20
# Indices to maintain
index mail pres,eq
index objectclass pres
index default eq,sub
index sn eq,sub,subinitial
index telephonenumber
index cn


root.ldif 파일이란걸 만들었습니다.

dn: dc=maxcrc,dc=com
objectClass: domain
objectClass: top
dc: maxcrc

dn: ou=People,dc=maxcrc,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries


그런다음 서버 start 시키고  아래와 같이 했으나

ldapadd -D "cn=Manager,dc=portal,dc=com" -W -f root.ldif   <- 추가할 DN 값을 설정해주면 되는건지

-> ldap_bind: Invalid credentials(49)

오류 메세지가 나오더군요 이부분에대해서도 검색은 해보고 적용도 해보았으나

딱히 해결은 하지 못했습니다.

ldapsearch -x -b "dc=maxcrc,dc=com" "(objectClass=*)"

-> # search result

    search: 2

    result: 32 No such object

   # numResponses:1

이렇게 결과가 나오더군요

 

어떻게 풀어나가야할지 너무 답답해서 이곳에다 글을 남겨봅니다.

혹시 LDAP 에서 CRL 검증관련 책이나 사이트가 존재한다면 알려주시면 감사하겠습니다.

 

 

 

 

 

 


 

이 글에 대한 댓글이 총 2건 있습니다.

제 생각은 Visual Studio .NET에서 제공하는 LDAP API가 있을텐데요. 그걸 이용하시면 될듯합니다.

 

송상준(sjsong)님이 2012-03-21 19:38에 작성한 댓글입니다.

댓글 감사드립니다.

ldapadd는 여전히 해결못한채로

현재 openssl 라이브러리를 이용해 검증을 해보았습니다만 제대로 검증이 되는건지는 잘모르겠습니다.

아래에 관련 소스를 올립니다. vals 에 값이 NULL 인지 아닌지만 체크하고 마는데 NULL 대신에

어떤값을 주고 비교해야되는지 모르겠습니다. 제가아는 지식으로는 인증서 시리얼넘버값을 가지고

비교하는걸로 아는데...아래 소스대로만 해도 제대로 crl 검증을 하는건지

지식이 짧은 관계로 좀더 분석이 필요합니다만 혹시나 아는 부분이 있으시면 답변해주시면 감사하겠습니다.

  if ( ( rc = ldap_search_ext_s( ld, FIND_DN, LDAP_SCOPE_BASE,"(objectclass=*)", NULL, 0, NULL, NULL, LDAP_NO_LIMIT,LDAP_NO_LIMIT, &result ) ) != LDAP_SUCCESS ) {
    fprintf(stderr, "ldap_search_ext_s: %s\n", ldap_err2string(rc));
    return( 1 );
  }
  * Since we are doing a base search, there should be only
  one matching entry. */
  e = ldap_first_entry( ld, result ); //ldap_first_entry를 이용하여 처음 검색되어질 엔트리 지정하여 e객체에 담는다
  if ( e != NULL ) {
   printf( "\nFound %s:\n\n", FIND_DN ); //없을경우 해당 DN없다고 알려줌
   /* Iterate through each attribute in the entry. 해당 도메인의 어트리뷰트 수만큼 무한루프*/
   for ( a = ldap_first_attribute( ld, e, &ber );a != NULL; a = ldap_next_attribute( ld, e, ber ) )
  {/* For each attribute, print the attribute name and values. */
    if ((vals = ldap_get_values( ld, e, a)) != NULL ) { //해당 어트리뷰트의 값을 가져와서 vals에 담는다.
     for ( i = 0; vals[i] != NULL; i++ ) {
      printf( "%s: %s\n", a, vals[i] ); //값출력
     }
     ldap_value_free( vals );
    }
    ldap_memfree( a );
   }
   if ( ber != NULL ) {
    ber_free( ber, 0 );
   }
  }
  ldap_msgfree( result ); //result 헤제
  ldap_unbind( ld );  //LDAP 타입 ld값 헤제

 

뎅글이님이 2012-03-22 15:42에 작성한 댓글입니다.
이 댓글은 2012-03-22 15:44에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3233문의 주실때 유의점
송상준
2012-03-21
3300
3232anonymous 권한으로 search 문의 [2]
자운몽
2012-03-20
2920
3231ldapadd 시 문의드립니다. [1]
자운몽
2012-03-19
2691
3230LDAP 서버에 접속해서 CRL 검증하는 방법좀 알려주십시요 [2]
뎅글이
2012-03-16
4667
3229ldapadd 시 오류 질문 [3]
김도훈
2012-02-10
2795
3227LDAP 클라이언트와 서버에서 언어.... [2]
김도훈
2012-02-07
2760
3226ldap 백업에 대해 질문좀 드려요 [2]
김종현
2012-02-07
3053
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.091초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다