PKCS 全稱是 Public-Key Cryptography Standards ,是由 RSA 實驗室與其它安全系統開發商為促進公鑰密碼的發展而制訂的一系列标準,PKCS 目前共釋出過 15 個标準。 常用的有:
1. PKCS#7 Cryptographic Message Syntax Standard
2. PKCS#10 Certification Request Standard
3. PKCS#12 Personal Information Exchange Syntax Standard
X.509是常見通用的證書格式。所有的證書都符合為Public Key Infrastructure (PKI) 制定的 ITU-T X509 國際标準。
1. PKCS#7 常用的字尾是: .P7B .P7C .SPC
2. PKCS#12 常用的字尾有: .P12 .PFX
3. PKCS#10: .p10是證書請求
.DER = 擴充名DER用于二進制DER編碼的證書。這些證書也可以用CER或者CRT作為擴充名。比較合适的說法是“我有一個DER編碼的證書”,而不是“我有一個DER證書”。
.PEM = 擴充名PEM用于ASCII(Base64)編碼的各種X.509 v3 證書。檔案開始由一行"—– BEGIN …“開始。
.CRT = 擴充名CRT用于證書。證書可以是DER編碼,也可以是PEM編碼。擴充名CER和CRT幾乎是同義詞。這種情況在各種unix/linux系統中很常見。
CER = CRT證書的微軟型式。可以用微軟的工具把CRT檔案轉換為CER檔案(CRT和CER必須是相同編碼的,DER或者PEM)。擴充名為CER的檔案可以被IE識别并作為指令調用微軟的cryptoAPI(具體點就是rudll32.exe cryptext.dll, CyrptExtOpenCER),進而彈出一個對話框來導入并/或檢視證書内容。
.KEY = 擴充名KEY用于PCSK#8的公鑰和私鑰。這些公鑰和私鑰可以是DER編碼或者PEM編碼。
CRT檔案和CER檔案隻有在使用相同編碼的時候才可以安全地互相替代。
X.509 PAM 編碼(Base64)的字尾是: .PEM .CER .CRT
pfx/p12用于存放個人證書/私鑰,他通常包含保護密碼,2進制方式
.csr 證書請求檔案
jks(java key store): java用的存儲密鑰的容器。可以同時容納n個公鑰或私鑰,字尾一般是.jks或者.keystore或.truststore等,千奇百怪。 不管什麼字尾,它就是一個容器,各個公司或機構叫法不同而已。比如把隻包含"受信任的公鑰"的容器存成.truststore檔案等。 用jdk\bin目錄下的keytool.exe對其進行檢視,導入,導出,删除,修改密碼等各種操作。 可以對jks容器加密碼,輸入正确才可以操作此容器中密鑰。
pfx: 和jks功能相同但檔案格式不同,pfx是Windows和浏覽器常用的。 可以用一些工具程式把pfx轉化成jks格式供java程式使用(如銀行隻提供了pfx,但是我們想用httpclient模拟浏覽器自動通路時)。 據說IE導出的pfx格式不标準,轉化jks時往往報錯,可以嘗試用Netscape Navigator導入再導出,然後再轉化。碰到過這樣的情況。
PKCS#12是公鑰加密标準,它規定了可包含所有私鑰、公鑰和證書。其以二進制格式存儲,也稱為 PFX 檔案,在windows中可以直接導入到密鑰區,注意,PKCS#12的密鑰庫保護密碼同時也用于保護Key。
key and crt -> jks: http://baike.soso.com/h481267.htm?sp=l521305
1. openssl pkcs12 -export -export -chain -CAfile gd_bundle.crt -in server.crt -inkey server.key -out server.p12 -name "server"
2. keytool -rfc -list -keystore server.p12 -storetype pkcs12
3. keytool -importkeystore -v -srckeystore server.p12 -srcstoretype pkcs12 -srcstorepass changeit -destkeystore server.keystore -deststoretype jks -deststorepass changeit
4. keytool -list -keystore server.keystore