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协议为例详细讲解使用过程。

相关文章
相关标签/搜索