1.3. 명령줄을 사용하여 Directory Server에 대한 TLS 암호화 연결 활성화
TLS 암호화 또는 인증서 기반 인증을 사용하려면 NSS(네트워크 보안 서비스) 데이터베이스에서 인증서를 관리해야 합니다. 인스턴스를 생성할 때 dscreate 유틸리티는 /etc/dirsrv/slapd-instance_name/ 디렉터리에 이 데이터베이스를 자동으로 생성하고 강력한 암호로 보호합니다.
절차
개인 키와 CSR(인증서 서명 요청)을 생성합니다. 외부 유틸리티를 사용하여 생성하려면 이 단계를 건너뜁니다.
하나의 이름으로만 호스트에 연결할 수 있는 경우 다음을 입력합니다.
# dsctl instance_name tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization"여러 이름으로 호스트에 연결할 수 있는 경우:
# dsctl instance_name tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization" server.example.com server.example.net호스트 이름을 마지막 매개변수로 지정하면 명령에서
DNS:server.example.com, DNS:server.example.net항목에 SAN(Subject Alternative Name) 확장을 CSR에 추가합니다.
-s subject매개변수에 지정된 문자열은 RFC 1485에 따라 유효한 주체 이름이어야 합니다. 주체의CN필드가 필요하며 서버의 FQDN(정규화된 도메인 이름) 중 하나로 설정해야 합니다. 이 명령은 CSR을/etc/dirsrv/slapd-instance_name/Server-Cert.csr파일에 저장합니다.- CSR을 CA(인증 기관)에 제출하여 발급된 인증서를 가져옵니다. 자세한 내용은 CA 설명서를 참조하십시오.
CA에서 발급한 서버 인증서를 NSS 데이터베이스로 가져옵니다.
dsctl tls generate-server-cert-csr명령을 사용하여 개인 키를 생성한 경우 다음을 입력합니다.# dsconf -D "cn=Directory Manager" ldap://server.example.com security certificate add --file /root/instance_name.crt --name "server-cert" --primary-cert--name _certificate_nickname매개변수에 설정한 인증서의 이름을 기록해둡니다. 이후 단계에서 필요합니다.외부 유틸리티를 사용하여 개인 키를 생성한 경우 서버 인증서와 개인 키를 가져옵니다.
# dsctl instance_name tls import-server-key-cert /root/server.crt /root/server.key이 명령을 사용하려면 먼저 서버 인증서의 경로를 지정한 다음 개인 키 경로를 지정해야 합니다. 이 방법은 항상 인증서의 닉네임을
Server-Cert로 설정합니다.
CA 인증서를 NSS 데이터베이스로 가져옵니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate add --file /root/ca.crt --name "Example CA"CA 인증서의 trust 플래그를 설정합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate set-trust-flags "Example CA" --flags "CT,,"이렇게 하면 TLS 암호화 및 인증서 기반 인증에 대해 CA를 신뢰하도록 Directory Server가 구성됩니다.
TLS를 활성화하고 LDAPS 포트를 설정합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-securePort=636 nsslapd-security=onfirewalld서비스에서 LDAPS 포트를 엽니다.# firewall-cmd --permanent --add-port=636/tcp # firewall-cmd --reloadRSA 암호화 제품군을 활성화하고 NSS 데이터베이스 보안 장치 및 서버 인증서 이름을 설정합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com security rsa set --tls-allow-rsa-certificates on --nss-token "internal (software)" --nss-cert-name Server-Cert기본적으로 NSS 데이터베이스의 보안 장치 이름은
내부(소프트웨어)입니다.선택사항: 일반 텍스트 LDAP 포트를 비활성화합니다.
# dsconf inst security disable_plain_port인스턴스를 다시 시작
# dsctl instance_name restart
검증
LDAPS 프로토콜을 사용하여 Directory Server에 대한 연결을 설정합니다. 예를 들어 쿼리를 실행합니다.
# ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s baseldap_sasl_bind(SIMPLE)를 사용하여 명령이 실패하면 LDAP 서버(-1) 오류에 연결할 수 없으며디버그 수준 1로 명령을 다시 실행합니다.# ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base -d 1