목차 1. 인증서 준비 1. 무료 SSL 인증서 발급 기관 2. Self sign 인증서 2. LDAP 설정 1. ldap_ssl을 이용한 등록 2. 직접 등록 3. ssl 설정 제거 3. OpenLDAP 재시작 4. 설정 확인
1. 인증서 준비
SSL 인증서는 공인된 기관에서 발급하는 SSL인증서와 본인이 직접 발급하는 Self sign 인증서가 있습니다. 이 중 후자인 Self sign 인증서는 private 인증서라고 하여 공인된 인증서로 취급을 받지 못합니다만, ldap 구성을 하는데 있어서는 사용함에 크게 문제는 없습니다. 다만, LDAP gui tool을 사용할 경우, private 인증서라는 경고창이 뜰 수 있기 때문에(사용하는데는 지장이 없습니다.), 무료 SSL 인증서에 대한 정보를 같이 기술 합니다.
또한, 기존에 SSL 인증서를 이미 가지고 있다면, 해당 인증서를 사용할 수도 있습니다. 다만, 대부분의 LDAP GUI tool들이 SAN(Subject Alternative Name)을 지원하지 않기 때문에, Astrik 도메인이나, SAN으로 여러 도메인을 관리하는 경우라면, 인증서를 hostname 과 동일하게 발급하는 것이 좋습니다.
무료 인증서 발급에 대해서는 구글 검색을 하여 발급을 받도록 합니다. 회원 가입과 여러가지 주의 사항들이 있으며, 여기서 일일이 설명을 하기에는 양이 많으므로, 구글 검색을 이용하십시오.
위의 3개의 인증서를 테스트 한 결과, 발급을 하기 위한 편리성 및 발급 시간은 WoSign이 가장 인상적이었습니다. Let's encrypt는 발급 및 유지가 너무 불편하여 권장하지 않습니다.
발급 받은 인증서를 /etc/openldap/certs/pki 디렉토리에 풀어 놓습니다. 그리고, 소유권과 퍼미션 설정을 하고, key 파일의 암호를 해제 합니다. 암호 해제는 다음의 명령으로 할 수 있습니다.
WoSign 인증서의 경우 여러가지 형식의 인증서가 있는데, 이 중 Apache 인증서를 이용하시면 됩니다.
참고로, replication 설정을 할 것이라면, ldap server들은 동일한 CA에서 발급한 인증서를 사용하시기 바랍니다. client에서 연결을 할 때, CA 인증서가 다르면 좀 복잡해 지는 문제가 있습니다. 이런 경우는, NSS certificate database를 사용해야 하는데, 이에 대해서는 이 문서에서는 다루지 않으므로, 스스로 해결을 해야 합니다. 이에 대해서는 https://docops.ca.com/ca-single-sign-on/12-52-sp1/kr/ssl-265531127.html 문서를 참고해 보십시오.
ldap-auth-utils에서 제공하는 ldap_ssl 명령을 이용하며 간단하게 self sign 인증서를 생성할 수 있습니다. ldap_ssl 명령을 -c 옵션과 함께 실행을 하면 /etc/openldap/certs/pki에 ldap.crt와 (key 암호가 제거된)ldap.key 파일이 생성이 됩니다.
[root@an3 ~]$ ldap_ssl -c* 1. 개인키 생성GeneratingRSAprivatekey,1024bitlongmodulus............++++++...........................................................++++++eis65537 (0x10001)writingRSAkeySuccesscreate/etc/openldap/certs/pki/ldap.key* 2. 서버키 생성Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.-----CountryName (2 lettercode) [XX]:KRStateorProvinceName (full name) []:LocalityName (eg, city) [Default City]:SeoulOrganizationName (eg, company) [Default Company Ltd]:OOPS.ORGOrganizationalUnitName (eg, section) []:Cert TeamCommonName (eg, yournameoryourserver's hostname) []:an3.pkg.oops.orgEmail Address []:admin@domain.comPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []: => 그냥 엔터(설정 안함)An optional company name []: => 그냥 엔터(설정 안함)Success create /etc/openldap/certs/pki/ldap.csr* 3. 자체 사인 인증서 생성Signature oksubject=/C=KR/L=Seoul/O=OOPS.ORG/OU=Cert Team/CN=an3.pkg.oops.org/emailAddress=admin@domain.comGetting Private keySuccess create /etc/openldap/certs/pki/ldap.crt[root@an3 ~]$
2. LDAP 설정
ldap-auth-utils에서 제공하는 ldap_ssl 명령을 이용하여 간단하게 등록할 수 있습니다.
slapd daemon을 재시작 하라는 메시지가 나오지만, OLC 설정 방식의 특성 상 재시작 하지 않아도 설정 변경이 반영이 됩니다. 다만 slapd daemon이 여전이 ldaps port를 binding 하고 있기 때문에 ldaps port binding을 하지 않게 하려면 slapd daemon을 재시작 시켜 주어야 합니다.
2. 직접 등록
다음과 같이 ssl-conf.ldif 파일을 생성하여, ldapmodify 명령을 이용하여 OLC에 반영 합니다. 다음 예제는 StartSSL의 Class 2 인증서를 사용할 경우 입니다.
[root@an3 ~]$ cat ssl-conf.ldifdn:cn=configchangetype:modifyadd:olcTLSCACertificateFileolcTLSCACertificateFile:/etc/openldap/certs/pki/startssl-sub.class2.server.ca.sha2.pem-replace:olcTLSCertificateFileolcTLSCertificateFile:/etc/openldap/certs/pki/oops.org.crt-replace:olcTLSCertificateKeyFileolcTLSCertificateKeyFile:/etc/openldap/certs/pki/oops.org.decrypt.key[root@an3 ~]$ ldapmodify -Y EXTERNAL -H ldapi:/// -f ssl-conf.ldif[root@an3 ~]$ rm -f ssl-conf.ldif # ldif 파일은 굳이 보관할 필요 없습니다.
slapd daemon을 재시작 하라는 메시지가 나오지만, OLC 설정 방식의 특성 상 재시작 하지 않아도 설정 변경이 반영이 됩니다. 다만 slapd daemon이 여전이 ldaps port를 binding 하고 있기 때문에 ldaps port binding을 하지 않게 하려면 slapd daemon을 재시작 시켜 주어야 합니다.
3. OpenLDAP 재시작
OLC를 이용하면 굳이 재시작 할 필요가 없지만, slapd 시작 시에 기본으로 ldaps 프로토콜을 사용하지 않도록 실행이 되었을 경우, 이를 수정해서 재시작 해야 합니다.
RHEL/CentOS 6 또는 AnNyung 2 에서는 /etc/sysconfig/ldap 에서 SLAPD_URLS 의 값을 yes로 수정 합니다.
[root@an3 ~]$ service slapd restartslapd를정지중: [ OK]slapd (을)를 시작 중: [ OK ][root@an3 ~]$
4. 설정 확인
먼저, ldap client에서 인증서를 사용하기 위하여 /etc/openldap/ldap.conf에 다음의 설정을 합니다. CA 인증서 경로는 ldap_ssl 실행 시에 지정한 경로로 지정 합니다. Self sign 인증서를 사용할 경우에는, 자체 CA sign을 하지 않았다면 TLS_CACERT는 지정하지 않아도 상관 없습니다.