程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JAVA數字證書制作生成,java數字證書生成

JAVA數字證書制作生成,java數字證書生成

編輯:JAVA綜合教程

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved