Enterprise Edition의 경우 서버측에서 NSS(Network Security Services) 디지털 인증서를 사용하여 개인 키와 인증서를 저장하는 데이터베이스를 관리합니다. 클라이언트측(응용 프로그램 클라이언트 또는 독립 실행형)의 경우 JSSE(Java Secure Socket Extension) 도구 사용에서 설명한 대로 JSSE 형식을 사용합니다.
NSS(Network Security Services)를 사용하여 보안을 관리하는 도구는 다음 사항을 포함합니다.
certutil은 인증서 및 키 데이터베이스를 관리하기 위한 명령줄 유틸리티입니다. certutil 유틸리티를 사용한 몇 가지 예는 certutil 유틸리티 사용에 있습니다.
pk12util은 인증서/키 데이터베이스와 PKCS12 형식의 파일 간에 키와 인증서를 내보내고 가져오기 위해 사용하는 명령줄 유틸리티입니다. pk12util 유틸리티를 사용한 몇 가지 예는 pk12util 유틸리티를 사용하여 인증서 가져오기 및 내보내기에 있습니다.
modutil은 secmod.db 파일 또는 하드웨어 토큰 내에서 PKCS #11 모듈 정보를 관리하기 위해 사용하는 명령줄 유틸리티입니다. modutil 유틸리티를 사용한 몇 가지 예는 modutil을 사용하여 PKCS11 모듈 추가 및 삭제에 있습니다.
도구는 install-dir/lib/ 디렉토리에 있습니다. 다음 환경 변수는 NSS 보안 도구의 위치를 나타내는 데 사용됩니다.
LD_LIBRARY_PATH =${install-dir}/lib
${os.nss.path}
예에서 인증서 공통 이름(CN)은 클라이언트나 서버의 이름입니다. CN은 SSL 핸드셰이크 중에 인증서 이름과 인증서를 만든 호스트 이름을 비교하는 데도 사용됩니다. 인증서 이름과 호스트 이름이 일치하지 않으면 SSL 핸드셰이크 중에 경고나 예외가 생성됩니다. 몇 가지 예에서 편의상 인증서 공통 이름 CN=localhost가 사용되는데 모든 사용자는 실제 호스트 이름을 사용하여 새 인증서를 만드는 대신 이 인증서를 사용할 수 있습니다.
다음 예는 NSS 도구를 사용한 인증서 처리와 관련된 사용법을 보여줍니다.
인증서 데이터베이스 도구인 certutil은 Netscape Communicator cert8.db 및 key3.db 데이터베이스 파일을 작성 및 수정할 수 있는 명령줄 유틸리티입니다. 또한 cert8.db 파일 내에 인증서를 나열, 생성, 수정 또는 삭제하거나, 비밀번호를 작성 또는 변경하거나 새로운 공개 및 개인 키 쌍을 생성하거나, 키 데이터베이스 내용을 표시하거나 key3.db 파일 내의 키 쌍을 삭제할 수도 있습니다.
키와 인증서 관리 프로세스는 대개 키 데이터베이스에 키를 만든 다음 인증서 데이터베이스에 인증서를 생성 및 관리하는 것으로 시작됩니다. 다음의 설명서에서는 certutil 유틸리티의 구문을 포함하여 NSS를 사용한 인증서 및 키 데이터베이스 관리에 대해 설명합니다. http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html
아래 목록의 각 항목은 NSS 및 JSSE 보안 도구를 사용하여 인증서를 만들거나 관리하는 예를 보여줍니다.
자체 서명된 서버와 클라이언트 인증서를 생성합니다. 이 예에서 CN 형식은 hostname.domain.[com|org|net|...]입니다.
이 예의 경우 domain-dir/config입니다. serverseed.txt와 clientseed.txt 파일은 임의의 텍스트를 포함할 수 있습니다. 임의의 텍스트는 키 쌍을 생성하는 데 사용됩니다.
certutil -S -n $SERVER_CERT_NAME -x -t "u,u,u" -s "CN=$HOSTNAME.$HOSTDOMAIN, OU=Java Software, O=Sun Microsystems Inc., L=Santa Clara, ST=CA, C=US" -m 25001 -o $CERT_DB_DIR/Server.crt -d $CERT_DB_DIR -f passfile <$CERT_UTIL_DIR/serverseed.txt |
클라이언트 인증서를 생성합니다. 이 인증서도 자체 서명된 인증서입니다.
certutil -S -n $CLIENT_CERT_NAME -x -t "u,u,u" -s "CN=MyClient, OU=Java Software, O=Sun Microsystems Inc., L=Santa Clara, ST=CA, C=US" -m 25002 -o $CERT_DB_DIR/Client.crt -d $CERT_DB_DIR -f passfile <$CERT_UTIL_DIR/clientseed.txt |
이전의 글머리표 기호에서 인증서가 생성되었는지 확인합니다.
certutil -V -u V -n $SERVER_CERT_NAME -d $CERT_DB_DIR certutil -V -u C -n $CLIENT_CERT_NAME -d $CERT_DB_DIR |
사용할 수 있는 인증서를 표시합니다.
certutil -L -d $CERT_DB_DIR |
RFC 텍스트 형식 인증서를 NSS 인증서 데이터베이스로 가져옵니다.
certutil -A -a -n ${cert.nickname} -t ${cert.trust.options} -f ${pass.file} -i ${cert.rfc.file} -d ${admin.domain.dir}/${admin.domain}/config |
인증서를 NSS 인증서 데이터베이스에서 RFC 형식으로 내보냅니다.
certutil -L -a -n ${cert.nickname} -f ${pass.file} -d ${admin.domain.dir}/${admin.domain}/config > cert.rfc |
인증서를 NSS 인증서 데이터베이스에서 삭제합니다.
certutil -D -n ${cert.nickname} -f ${pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
인증서를 NSS 데이터베이스에서 JKS 형식으로 이동합니다.
certutil -L -a -n ${cert.nickname} -d ${admin.domain.dir}/${admin.domain}/config > cert.rfc keytool -import -noprompt -trustcacerts -keystore ${keystore.file} -storepass ${keystore.pass} -alias ${cert.alias} -file cert.rfc |
pk12util은 PKCS12 형식의 인증서/키 데이터베이스 및 파일 간에 키와 인증서를 가져오고 내보내는 데 사용하는 명령줄 유틸리티입니다. PKCS12는 Personal Information Exchange Syntax Standard(개인 정보 상호 교환 구문 표준)의 PKCS(Public-Key Cryptography Standards) #12입니다. pk12util 유틸리티에 대한 자세한 내용은 http://www.mozilla.org/projects/security/pki/nss/tools/pk12util.html을 참조하십시오.
PKCS12 형식의 인증서를 NSS 인증 데이터베이스로 가져옵니다.
pk12util -i ${cert.pkcs12.file} -k ${certdb.pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
PKCS12 형식의 인증서를 NSS 인증 데이터베이스 토큰 모듈로 가져옵니다.
pk12util -i ${cert.pkcs12.file} -h ${token.name} -k ${certdb.pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
인증서를 NSS 인증서 데이터베이스에서 PKCS12 형식으로 내보냅니다.
pk12util -o -n ${cert.nickname} -k ${pass.file} -w${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
인증서를 NSS 인증서 데이터베이스 토큰 모듈에서 PKCS12 형식(하드웨어 가속기 구성에 유용)으로 내보냅니다.
pk12util -o -n ${cert.nickname} -h ${token.name} -k ${pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
PKCS12 인증서를 Java 소스를 필요로 하는 JKS 형식으로 변환합니다.
<target name="convert-pkcs12-to-jks" depends="init-common"> <delete file="${jks.file}" failonerror="false"/> <java classname="com.sun.enterprise.security.KeyTool"> <arg line="-pkcs12"/> <arg line="-pkcsFile ${pkcs12.file}"/> <arg line="-pkcsKeyStorePass ${pkcs12.pass}"/> <arg line="-pkcsKeyPass ${pkcs12.pass}"/> <arg line="-jksFile ${jks.file}"/> <arg line="-jksKeyStorePass ${jks.pass}"/> <classpath> <pathelement path="${s1as.classpath}"/> <pathelement path="${env.JAVA_HOME}/jre/lib/jsse.jar"/> </classpath> </java> </target>
보안 모듈 데이터베이스 도구인 modutil은 secmod.db 파일이나 하드웨어 토큰 내에서 PKCS #11(Cryptographic Token Interface Standard, 암호화 토큰 인터페이스 표준) 모듈 정보를 관리하는 명령줄 유틸리티입니다. 이 도구를 사용하여 PKCS #11 모듈을 추가 및 삭제하고, 비밀번호를 변경하며 기본값을 설정하고, 모듈 내용을 나열하고 슬롯을 활성화하거나 비활성화하며, FIPS-140-1 호환을 활성화하거나 비활성화하고 기본 공급자를 암호화 작업에 할당할 수 있습니다. 이 도구는 key3.db, cert7.db 및 secmod.db 보안 데이터베이스 파일도 만들 수 있습니다. 이 도구에 대한 자세한 내용은 http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html을 참조하십시오.
새 PKCS11 모듈이나 토큰을 추가합니다.
modutil -add ${token.module.name} -nocertdb -force -mechanisms RSA:DSA:RC4:DES -libfile ${SCA.lib.path} -dbdir ${admin.domain.dir}/${admin.domain}/config |
NSS 저장소에서 PKCS11 모듈을 삭제합니다.
modutil -delete ${token.module.name} -nocertdb -force -mechanisms RSA:DSA:RC4:DES -libfile ${SCA.lib.path} -dbdir ${admin.domain.dir}/${admin.domain}/config |
NSS 저장소의 사용 가능한 토큰 모듈을 나열합니다.
modutil -list -dbdir ${admin.domain.dir}/${admin.domain}/config |