天天看點

java處理加密檔案---數字證書檔案格式(cer和pfx)的差別

java處理加密檔案中常見的兩種數字證書檔案格式(cer和pfx)

數字證書檔案格式(cer和pfx)的差別  

1.帶有私鑰的證書

由Public Key Cryptography Standards #12,PKCS#12标準定義,包含了公鑰和私鑰的二進制格式的證書形式,以pfx作為證書檔案字尾名。

2.二進制編碼的證書

證書中沒有私鑰,DER 編碼二進制格式的證書檔案,以cer作為證書檔案字尾名。

3.Base64編碼的證書

證書中沒有私鑰,BASE64 編碼格式的證書檔案,也是以cer作為證書檔案字尾名。

由定義可以看出,隻有pfx格式的數字證書是包含有私鑰的,cer格式的數字證書裡面隻有公鑰沒有私鑰。

在pfx證書的導入過程中有一項是“标志此密鑰是可導出的。這将您在稍候備份或傳輸密鑰”。一般是不選中的,如果選中,别人就有機會備份你的密鑰了。如果是不選中,其實密鑰也導入了,隻是不能再次被導出。這就保證了密鑰的安全。

如果導入過程中沒有選中這一項,做證書備份時“導出私鑰”這一項是灰色的,不能選。隻能導出cer格式的公鑰。如果導入時選中該項,則在導出時“導出私鑰”這一項就是可選的。

如果要導出私鑰(pfx),是需要輸入密碼的,這個密碼就是對私鑰再次加密,這樣就保證了私鑰的安全,别人即使拿到了你的證書備份(pfx),不知道加密私鑰的密碼,也是無法導入證書的。相反,如果隻是導入導出cer格式的證書,是不會提示你輸入密碼的。因為公鑰一般來說是對外公開的,不用加密