PKCS12 證書的生成及驗證

2021-09-10 05:43:37 字數 3443 閱讀 6472

一、 生成證書

假設金鑰庫為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...