JAVA數字證書製做生成

一、加密算法算法

    爲了網絡通信中的報文安全,通常須要對報文進行加密,目前經常使用的加密算法有:安全

    非對稱加密算法:又稱公鑰加密算法,如RSA、DSA/DSS,最經常使用的就是RSA算法(算法公開,可自行百度瞭解算法細節),算法產生一個公鑰一個私鑰,用公鑰加密的報 文只能用私鑰解密,用私鑰加密的報文只能用公鑰解密;網絡

    對稱加密算法:3DES、AES、RC4,加密密鑰與解密密鑰相同,通常用於只有通信雙方知道密鑰的通信方式;工具

     HASH算法:MD五、SHA一、SHA256,由哈希算法計劃獲得哈希值,加密過程不可逆,由哈希值不能獲得原明文,通常用於做摘要簽名;網站

二、數字證書加密

    數字證書是由CA(Certificate Authority)機構,發行的用於網絡通信中驗證身份的一種方式;   關於數字證書在此不作綴述,有興趣的小夥伴能夠自行網上查找;blog

    數字證書中通常包含了此證書擁有者、證書使用者、證書名稱、證書公鑰等信息。get

三、證書生成it

     用JDK提供的證書管理工具keytool能夠製做證書,命令以下:test

     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協議爲例詳細講解使用過程。

相關文章
相關標籤/搜索