| |
| Sun Java(TM) System Directory Server 5 2004Q2 관리 설명서 | |
부록 A
Sun Crypto Accelerator 보드 사용이 부록에서는 Directory Server와 함께 Sun Crypto Accelerator 보드를 사용하여 인증서 기반의 인증과 SSL(Secure Sockets Layer) 프로토콜을 사용한 연결의 성능 향상 방법에 대해 설명합니다.
시작 전 주의 사항표 A-1에는 Sun Crypto Accelerator 보드를 사용하여 SSL 연결 성능을 향상시키기 위해 먼저 수행해야 하는 항목이 설명되어 있습니다.
표 A-1 보드 사용을 위한 필수 사항
필수 사항
주의
보드 설치
호스트에 하드웨어, 드라이버, 패치 및 관리 유틸리티를 설치하는 경우 보드용으로 제공된 제품 설명서를 참조하십시오.
Directory Server 설치
자세한 내용은 Sun Java Enterprise System 2004Q2 설치 설명서를 참조하십시오.
서버 인증서(PKCS#12 형식)
Directory Server에 대한 서버 인증서를 .p12 파일로 받습니다.
CA 인증서(PEM 형식)
인증 기관(CA)에 대한 CA 인증서를 PEM(Privacy Enhanced Mail) 형식의 파일로 받습니다.
SSL 프로토콜과 SSL 인증서에 대한 자세한 설명 및 서버 콘솔을 통한 관리를 지원하는 Sun Java System 서버와 함께 프로토콜을 사용하는 방법은 11장, "인증 및 암호화 관리"를 참조하십시오.
토큰 작성Directory Server는 토큰과 비밀번호를 사용하여 가속 보드에 있는 해당 암호화 키 자료에 액세스합니다. 토큰은 user@realm 형식을 사용하며, 여기서 user는 가속 보드의 사용자로서, 암호화 키 생성 자료의 소유자를 나타내고 realm은 가속 보드의 영역으로, 사용자 및 해당 키 생성 자료의 논리적 분할 영역입니다. 가속 보드 user는 시스템의 사용자 계정과 아무런 관계를 가질 필요가 없으며 보드에만 적용됩니다. 사용자 및 영역에 대한 자세한 내용은 가속 보드 제품 설명서를 참조하십시오.
보드용으로 제공된 secadm(1M) 유틸리티를 사용하여 토큰 사용자와 영역을 작성할 수 있습니다. 가속 보드에서는 다수의 slots을 작성하여 여러 응용 프로그램에 대한 토큰을 관리할 수도 있습니다. 여기서는 성능을 위해 호스트를 Directory Server 전용으로 설정하여 기본값인 한 개의 슬롯을 사용한다고 가정합니다. 여러 소프트웨어 응용 프로그램에 대해 보드를 사용하는 방법은 가속 보드 제품 설명서를 참조하십시오.
기본 슬롯에 액세스할 토큰 사용자와 영역을 작성하려면 다음 단계를 수행합니다.
- secadm 유틸리티를 시작합니다.
$ CryptoPath/bin/secadm
기본 CryptoPath는 /opt/SUNWconn/crypto입니다.
- 토큰 영역을 작성합니다.
secadm> create realm=dsrealm
System Administrator Login Required
Login: super-user
Password:
Realm dsrealm created successfully.- 작성하려는 사용자가 포함될 영역을 설정합니다.
secadm> set realm=dsrealm
secadm{dsrealm}> su
System Administrator Login Required
Login: super-user
Password:
secadm{root@dsrealm}#- SSL이 구성된 Directory Server를 다시 시작할 때 사용되는 비밀번호를 제공하여 기본 슬롯을 사용할 nobody 사용자를 작성합니다.
secadm{root@dsrealm}# create user=nobody
Initial password: password
Confirm password: password
User nobody created successfully.
secadm{root@dsrealm}# exit이제 nobody@dsrealm 토큰의 사용자와 영역이 작성되었으며 Directory Server를 다시 시작할 때 사용되는 비밀번호를 제공했습니다.
보드 바인딩 생성가속 보드의 바인딩은 Directory Server가 보드에 바인드할 수 있도록 생성하는 외부 보안 모듈의 형식을 사용합니다. 다양한 SSL 알고리즘을 지원하는 Directory Server 인증서 데이터베이스와 외부 보안 모듈 간의 바인딩을 생성하려면 다음 단계를 수행합니다.
- modutil을 사용하기 전에 LD_LIBRARY_PATH를 설정합니다.
$ set LD_LIBRARY_PATH=ServerRoot/lib ; export LD_LIBRARY_PATH
- 보안 모듈 데이터베이스가 없을 경우 아래 명령을 실행하여 작성합니다.
$ cd ServerRoot/shared/bin
$ ./modutil -create -dbdir ../../alias -dbprefix "slapd-serverID"- 외부 보안 모듈을 보안 모듈 데이터베이스에 추가합니다.
$ ./modutil -add "Crypto Mod" -dbdir ../../alias -nocertdb \
-libfile CryptoPath/lib/libpkcs11.so \
-mechanisms "RSA:DSA:RC4:DES" -dbprefix "slapd-serverID"기본 CryptoPath는 /opt/SUNWconn/crypto입니다.
- 보안 모듈을 나열하여 모듈이 제대로 추가되었는지 확인합니다.
$ ./modutil -list -dbdir ../../alias -dbprefix "slapd-serverID"
단계 3에서 추가한 Crypto Mod 항목이 표시되어야 합니다.
- 이 외부 보안 모듈을 RSA, DSA, RC4 및 DES의 기본값으로 설정합니다.
$ ./modutil -default "Crypto Mod" -dbdir ../../alias \
-mechanisms "RSA:DSA:RC4:DES" -dbprefix "slapd-serverID"이렇게 하면 기본 보안 모듈이 제대로 변경됩니다.
이제 가속 보드에 대한 바인딩을 생성했으므로 인증서를 가져올 수 있습니다.
인증서 가져오기SSL을 구성하기 전에 먼저 표 A-1에 설명된 대로 받은 서버 인증서와 CA 인증서를 가져와야 합니다. 인증서를 가져오려면 다음 단계를 수행합니다.
- 서버 인증서 .p12 파일을 가져옵니다.
$ cd ServerRoot/shared/bin
$ ./pk12util -i ServerCert.p12 -d ../../alias -P "slapd-serverID" \
-h "nobody@dsrealm"
Enter Password or Pin for "nobody@dsrealm": password
Enter Password for PKCS12 file: password- CA 인증서를 가져옵니다.
$ ./certutil -A -n "Crypto CA Cert" -t CT -i CACert.txt \
-d ../../alias -P "slapd-serverID" -h "nobody@dsrealm"- 토큰과 관련된 인증서를 나열하여 인증서를 제대로 가져왔는지 확인합니다.
$ ./certutil -L -d ../../alias -P "slapd-serverID" \
-h "nobody@dsrealm"이제 인증서를 가져왔으므로 Directory Server에서 SSL 연결을 수신하도록 구성할 수 있습니다.
SSL 구성작성한 토큰과 비밀번호, 외부 보안 모듈과 Directory Server 인증서 데이터베이스 간에 생성한 바인딩, 그리고 가져온 인증서를 사용하여 Directory Server가 보안 모드로 시작되도록 구성할 수 있습니다. SSL을 구성하고 Directory Server를 보안 모드로 다시 시작하려면 다음 단계를 수행합니다.
- SSL 관련 Directory Server 구성 항목을 변경하기 위한 수정 작업이 요약된 ssl.ldif 파일을 작성합니다.
코드 예 A-1 보드를 사용하여 SSL을 활성화하기 위한 수정 작업(ssl.ldif)
dn: cn=RSA,cn=encryption,cn=config
changetype: add
objectclass: top
objectclass: nsEncryptionModule
cn: RSA
nsSSLToken: nobody@dsrealm
nsSSLPersonalitySSL: ServerCertNickname1
nsSSLActivation: on
dn: cn=encryption,cn=config
changetype: modify
replace: nsSSL3
nsSSL3: on
-
replace: nsSSLClientAuth
nsSSLClientAuth: allowed
-
replace: nsSSL3Ciphers
nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,
+rsa_rc2_40_md5,+rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,
+rsa_fips_3des_sha,+fortezza,+fortezza_rc4_128_sha,
+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,
+tls_rsa_export1024_with_rc4_56_sha,
+tls_rsa_export1024_with_des_cbc_sha
-
replace: nsCertfile
nsCertfile: alias/slapd-serverID-cert8.db
-
replace: nsKeyFile
nsKeyFile: alias/slapd-serverID-key3.db
dn: cn=config
changetype: modify
replace: nsslapd-secureport
nsslapd-secureport: port
-
replace: nsslapd-security
nsslapd-security: on
1이 별명은 Directory Server 인증서에 포함되어 있습니다.
여기서 nsslapd-secureport 값인 port는 보안 모드로 시작된 Directory Server에서 SSL 연결을 수신하는 포트입니다.
- 수정 작업을 적용하여 Directory Server 구성을 변경합니다.
$ ldapmodify -p currPort -D "cn=directory manager" -w password -f ssl.ldif
여기서 currPort는 Directory Server에서 현재 클라이언트 요청을 수신하는 포트 번호입니다.
- Directory Server를 보안 모드로 다시 시작합니다.
$ ServerRoot/slapd-serverID/restart-slapd
Enter PIN for nobody@dsrealm: password여기서 password는 nobody@dsrealm 토큰을 작성할 때 입력한 nobody 사용자 비밀번호입니다.
이제 Directory Server는 지정한 포트에서 SSL 트래픽을 수신합니다. 이 포트에서 SSL을 통해 Directory Server에 액세스하도록 Sun Java System Administration Server와 클라이언트 응용 프로그램을 구성할 수 있습니다. 자세한 내용은 11장, "인증 및 암호화 관리"를 참조하십시오.