안녕하세요 다름이 아니라 공인인증서에 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 검증관련 책이나 사이트가 존재한다면 알려주시면 감사하겠습니다.
|