一、 生成證書
假設金鑰庫為dlt.p12,庫密碼ipcc@95598,有效期1天,則命令為:
keytool -genkey -v -alias root -keyalg rsa -storetype pkcs12 -keystore dlt.p12 -dname "cn=www.handtimes.com,ou=ipcc,o=雲電同方,l=昆明,st=雲南,c=中國" -storepass ipcc@95598 -keypass ipcc@95598
生成客戶端用的證書:
keytool -genkey -v -alias p12client -keyalg rsa -storetype pkcs12 -keystore dlt.p12 -dname "cn=www.handtimes.com,ou=ipcc,o=雲電同方,l=昆明,st=雲南,c=中國" -storepass ipcc@95598 -keypass 123456 -validity 1
要檢視已生成的證書,用下面的命令:
keytool -list -v -alias p12client -keystore dlt.p12 -storepass ipcc@95598 -storetype pkcs12
或者:keytool -list -v -keystore ipccca – dlt.p12 ipcc@95598 -storetype pkcs12
如果需要將p12證書匯出為.cer格式,可以使用命令:
keytool -export -alias p12client -keystore dlt.p12 -storetype pkcs12 -storepass ipcc@95598 -rfc -file p12.cer
檢視.cer檔案:
keytool -printcert -v -file /users/kmyhy/desktop/client.cer
如果需要將keystore中的私鑰匯出為.p12格式:
keytool.exe -importkeystore -srckeystore ipccca -srcstoretype jks -srcstorepass ipcc@95598 -srcalias p12client -destkeystore dltclient.p12 -deststoretype pkcs12 -deststorepass ipcc@95598 -destkeypass 123456 – validity 3
注意,keytool用的是jdk1.6提供的版本。此時命令提示忽略使用者輸入的destkeypass密碼:
重新輸入密碼123456,回車,將在使用者主目錄下生成dltclient.p12檔案。
檢視dltclient.p12內容:
keytool.exe -list -keystore dltclient.p12 -storepass ipcc@95598 -storetype pkcs12
可以看到如下輸出:
可以看到其中包含了證書和私鑰,並且其認證指紋是和ipccca中的一模一樣的。
先把生成的p12證書庫dlt.p12放到伺服器目錄下。
新建乙個servlet:getp12cert。
// 讀取 alias 指定的證書內容
publicx509certinfo getx509certinfo(string alias)throwsexception ;
// 向金鑰庫中新增條目 , 使用已存在別名將覆蓋已存在條目
keystore .setkeyentry(alias, pkey, keypass.tochararray(), chain);
// 將 keystore 儲存至檔案
fileoutputstream fout =newfileoutputstream( file );
keystore .store(fout, storepass );
fout.close();
// 獲取簽名演算法
publicstring getsigalgname(string alias)throwsexception valuateresult;
@inte***ce mytrustservice : nsobject else if (result== 4 ) else elsecatch(exception e)
finallycatch(exception e)catch(ioexception e)
keystore = store;
returnkeystore ;
// 讀取 alias 指定的證書內容
publicx509certinfo getx509certinfo(string alias)throwsexception ;
// 向金鑰庫中新增條目 , 使用已存在別名將覆蓋已存在條目
keystore .setkeyentry(alias, pkey, keypass.tochararray(), chain);
// 將 keystore 儲存至檔案
fileoutputstream fout =newfileoutputstream( file );
keystore .store(fout, storepass );
fout.close();
// 獲取簽名演算法
publicstring getsigalgname(string alias)throwsexception valuateresult;
@inte***ce mytrustservice : nsobject else if (result== 4 ) else else {
nslog ( @"result = unknown (%zu)" , ( size_t ) result);
return ret;
-( void )dealloc{
[ efficientdate release ];
[ super dealloc ];
@end
PKCS12 證書的生成及驗證
pkcs12 證書的生成及驗證 一 生成證書 假設金鑰庫為dlt.p12,庫密碼ipcc 95598,有效期1天,則命令為 keytool genkey v alias root keyalg rsa storetype pkcs12 keystore dlt.p12 dname cn www.ha...
PKCS12 證書的生成及驗證
一 生成證書 假設金鑰庫為dlt.p12,庫密碼ipcc 95598,有效期1天,則命令為 keytool genkey v alias root keyalg rsa storetype pkcs12 keystore dlt.p12 dname cn www.handtimes.com,ou i...
openssl 生成自簽CA和pkcs12證書
基礎環境 mkdir test cd test mkdir p ca touch ca index.txt touch ca serial touch ca crlnumber echo 01 ca serial echo 01 ca crlnumber cp etc pki tls openssl...