JAVA數位憑證製作產生,java數位憑證產生
1、密碼編譯演算法
為了網路通訊中的報文安全,一般需要對報文進行加密,目前常用的密碼編譯演算法有:
非對稱式加密演算法:又稱公開金鑰加密演算法,如RSA、DSA/DSS,最常用的就是RSA演算法(演算法公開,可自行百度瞭解演算法細節),演算法產生一個公開金鑰一個私密金鑰,用公開金鑰加密的報 文只能用私密金鑰解密,用私密金鑰加密的報文只能用公開金鑰解密;
對稱式加密演算法:3DES、AES、RC4,加密金鑰與解密密鑰相同,一般用於只有通訊雙方知道密鑰的通訊方式;
HASH演算法:MD5、SHA1、SHA256,由雜湊演算法計劃得到雜湊值,加密過程無法復原,由雜湊值不能得到原明文,一般用於作摘要簽名;
2、數位憑證
數位憑證是由CA(Certificate Authority)機構,發行的用於網路通訊中驗證身份的一種方式; 關於數位憑證在此不做綴述,有興趣的小夥伴可以自行網上尋找;
數位憑證中一般包含了此認證擁有者、認證使用者、認證名稱、認證公開金鑰等資訊。
3、認證產生
用JDK提供的認證管理工具keytool可以製作認證,命令如下:
keytool -genkey -keyalg RSA -keysize 2048 -validity 36500 -alias SEC_TEST -keypass 123456 -keystore test.keystore -storepass 123456 -dname "CN=localhost,OU=DEP,O=CN,L=BJ,ST=BJ,C=CN"
其中,-keyalg 指定演算法,
-keysize指定密鑰大小,
-validity指定有效期間,單位為天,
-alias 別名
-keypass 指定私密金鑰使用密碼,
-keystore指定密鑰庫名稱,
-storepass 認證庫的使用密碼,從裡面提取公開金鑰時要求輸入密碼
-dname :CN擁有者名字,一般為網站名或IP+連接埠,如www.baidu.com,OU組織機構名 O組織名 L城市 ST州或省 C國家代碼
以上命令執行後將在目前的目錄下產生一個keystore檔案,裡面儲存著密鑰和認證資訊;
匯出公開金鑰:
keytool -export -alias SEC_TEST -file test_pub_cer.cer -keystore test.keystore -storepass 123456
在目前的目錄下會產生一個test_pub_cer.cer的認證,包含了公開金鑰資訊及認證相關資訊;
匯入合作方公開金鑰:
通訊雙方假設為A和B,A發布了自己的認證並公開了公開金鑰,B所有經過A的公開金鑰加密的報文發送給A後,A可以正確解密,如果A給B發送報文,A用私密金鑰加密,B可以用公開金鑰解密,但這裡有一個問題就是公開金鑰是公開的,A發送給B的報文,任何有公開金鑰的人都可以解密,不能保證A向B發送資訊的安全性,所以B也需要製作自己的認證,並對A公開自己的公開金鑰,這樣A向B發送資訊裡用B的公開金鑰加密,這樣B就可以用私密金鑰解密,而其他截獲資訊的人因為沒有私密金鑰也不能解密;A需要將B的公開金鑰匯入自己的認證庫;
keytool -import -file B.cer -keystore test.keystore -storepass 123456
提示是否信任這個認證,y,斷行符號後即可匯入,然後查看認證庫中的認證條目:
keytool -list -v -keystore test.keystore -storepass 123456
先寫一點,下章將以HTTPS協議為例詳細講解使用過程。