在叢集和企業設定檔的伺服器端,使用 Network Security Services (NSS) 數位憑證管理儲存私密金鑰和憑證的資料庫。對於用戶端 (應用程式用戶端或獨立用戶端),使用使用 Java 安全套接字延伸 (JSSE) 工具中所述的 JSSE 格式。
使用 Network Security Services (NSS) 管理安全性的工具包括:
certutil,指令行公用程式,用於管理憑證和金鑰資料庫。使用 certutil 公用程式中提供了使用 certutil 公用程式的一些範例。
pk12util,指令行公用程式,用於以 PKCS12 格式在憑證/金鑰資料庫和檔案之間匯入和匯出金鑰及憑證。使用 pk12util 公用程式匯入和匯出憑證中提供了使用 pk12util 公用程式的一些範例。
modutil,指令行公用程式,用於管理 secmod.db 檔案或硬體記號中的 PKCS #11 模組資訊。使用 modutil 增加和刪除 PKCS11 模組中提供了使用 modutil 公用程式的一些範例。
這些工具位於 as-install/lib/ 目錄中。以下環境變數用於指向 NSS 安全性工具的位置︰
LD_LIBRARY_PATH =${as-install}/lib
${os.nss.path}
在這些範例中,憑證一般名稱 (CN) 是指用戶端或伺服器的名稱。CN 還用於在 SSL 交換過程中比較憑證名稱和產生憑證的主機名稱。如果憑證名稱和主機名稱不符,則在 SSL 交換過程中會產生警告或異常。在某些範例中,為方便起見,使用憑證一般名稱 CN=localhost,以便所有使用者均可以使用該憑證,而不必使用其真實主機名稱建立新憑證。
以下小節中的範例說明了與使用 NSS 工具處理憑證相關的用法︰
執行 certutil 之前,請確定 LD_LIBRARY_PATH 指向執行此公用程式所需之程式庫的位置。這個位置可以從 asenv.conf (整個產品的配置檔案) 中 AS_NSS_LIB 的值加以識別。
憑證資料庫工具 certutil 是 NSS 指令行公用程式,可建立和修改 Netscape Communicator cert8.db 和 key3.db 資料庫檔案。該公用程式還可以列出、產生、修改或刪除 cert8.db 檔案中的憑證,以及建立或變更密碼、產生新的公開和私密金鑰對、顯示金鑰資料庫的內容或刪除 key3.db 檔案中的金鑰對。
金鑰和憑證管理程序通常以在金鑰資料庫中建立金鑰開始,然後在憑證資料庫中產生和管理憑證。以下文件論述了如何使用 NSS (包括 certutil 公用程式的語法) 管理憑證和金鑰資料庫: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 |
以 RFC 格式從 NSS 憑證資料庫中匯出憑證。
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 為公開金鑰加密標準 (PKCS) #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 |
以 PKCS12 格式從 NSS 憑證資料庫中匯出憑證。
pk12util -o -n ${cert.nickname} -k ${pass.file} -w${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
以 PKCS12 格式從 NSS 憑證資料庫記號模組中匯出憑證 (對硬體加速功能配置有用)。
pk12util -o -n ${cert.nickname} -h ${token.name} -k ${pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
將 PKCS12 憑證轉換為 JKS 格式 (需要 Java 來源)︰
<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 (加密記號介面標準) 模組資訊。您可以使用此工具來增加和刪除 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 |