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

JAVA数字证书制作生成的更多相关文章

  1. Java数字证书操作

    为服务器生成证书 keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500 为 ...

  2. 数字证书KeyTool使用(第二篇)

    http://my.oschina.net/frankies/blog/344914 J2SDK提供了keytool命令行工具,可以根据指定的参数来创建数字证书.生成的证书或证书库默认保存在命令行当前 ...

  3. 【转】Android数字证书

    Android数字证书的作用是非常重要的.Android操作系统每一个应用程序的安装都需要经过这一数字证书的签名. Android手机操作系统作为一款比较流行的开源系统在手机领域占据着举足轻重的地位. ...

  4. Activex打包于发布完整版---微软证书制作

    众所周知,Activex组件没有进行有效的签名,在IE上无法安装的,除非你让用户手工开启“接收任何未签名的ActiveX”,这个很明显不现实.而组件签名需要证书,证书从哪里来,你可以选择付1000到3 ...

  5. 免费CA数字证书的申请、安装、导入、导出

    http://wenku.baidu.com/link?url=oDUw50eCE5zX8tmg4N3-ddYGLt1U5aJYGEN7rk_z7t6LuMHL3M4oBstYBI_dQ1UnCtcK ...

  6. JAVA JDK keytool 生成数字证书

    简介: 数字证书作为网络安全数据传输的凭证,web在传输时客户端(浏览器)和 服务端(服务器)先进行会话握手,在握手过程中服务端会验证客户端的是否已经在服务端做了认证,这是单向认证.如果是双向认证的话 ...

  7. Java使用数字证书加密通信(加解密/加签验签)

    本文中使用的Base64Utils.java可参考:http://www.cnblogs.com/shindo/p/6346618.html 证书制作方法可参考:http://www.cnblogs. ...

  8. 利用keytool工具生成数字证书

    一.制作数字证书  因测试微信小程序, 腾讯要求使用 https协议,所以需要使用证书.使用jdk工具制作数字证书流程如下: 1.查看JDK是否安装,使用命令java -version 2.切换目录至 ...

  9. Java加密技术(八)——数字证书

    原文:http://snowolf.iteye.com/blog/391931 请大家在阅读本篇内容时先阅读 Java加密技术(四),预先了解RSA加密算法. 在构建Java代码实现前,我们需要完成证 ...

随机推荐

  1. uva 558 - Wormholes(Bellman Ford判断负环)

    题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...

  2. Java数据类型简单认识

    Java是一种强类型编程语言,因而在声明变量的时候必须声明数据类型,java语言有基本数据类型和引用数据类型这两大数据类型,基本数据类型有8种分别是4种整型.2种浮点类型.1种用于Unicode表示字 ...

  3. 27.怎样在Swift中声明typedef?

    在OC中,我们经常会用typedef关键字来声明Block,例如: /** * 通用的空闭包类型,无参数,无返回值 */ typedef void (^GofVoidBlock)(void); 在Sw ...

  4. axTE3DWindowEx双屏对比控件白屏解决方法以及网上方法的校正(CreateControlOveride)

    环境:vs2012,TE 6.5.1,winfrom C# 要做skyline的双屏显示功能,网上找到方法是用axTE3DWindowEx控件实现,把控件拖进去,运行,发现axTE3DWindow是正 ...

  5. Jquery 方式获取 iframe Dom元素

    Jquery 方式获取 iframe Dom元素 測试页面代码: <html>  <head>   <title>jquery方式,訪问iframe页面dom元素& ...

  6. Ajax 无刷新在注册用户名时的应用的代码

    var xmlHttp; uName() //用户名失去焦点时 { if(all.uname.=="") { all.l1.innerHTML="不能为空!"; ...

  7. ccConfig(设置一些底层接口状态:是否支持动作叠加 设置fps更新间隔和位置 是否画边框等。。)

    #ifndef __CCCONFIG_H__ #define __CCCONFIG_H__ #include "platform/CCPlatformConfig.h" /** @ ...

  8. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  9. 使用AutoMapper实现Dto和Model的自由转换

    AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...

  10. linux安装qwt插件linux

    Optional: Get, Compile, Install QWT 5.0.0 (or newer): * NOTE: You should not need to set the environ ...