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

时间: 2025-01-16 10:27:21

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

JAVA数字证书

在构建Java代码实现前,我们需要完成证书的制作. 1.生成keyStroe文件 在命令行下执行以下命令: keytool -genkey -validity 36000 -alias jlxrsa -keyalg RSA -keystore d:\jlxrsz.keystore 其中 -genkey表示生成密钥 -validity指定证书有效期,这里是36000天 -alias指定别名,这里是www.zlex.org -keyalg指定算法,这里是RSA -keystore指定存储位置,这里是

SSL证书必知必会:数字证书及CA基础知识

SSL证书必知必会:数字证书及CA基础知识 数字证书 数字证书是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字***,而是身份认证机构盖在数字***上的一个章或印(或者说加在数字***上的一个签名).它是由权威机构--CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份.最简单的证书包含一个公开密钥.名称以及证书授权中心的数字签名.数字证书的一个重要的特征就是只在特

iOS -证书制作

iOS证书制作攻略及配置注意事项 使用APICloud平台开发APP商用,首先得有开发者账号和各种证书,之后云编译打包正式版,上传到appstore审核上架.现在APICloud特别推出,证书申请和配置在控制台配置证书的注意事项的攻略,提供给大家. 云编译p12证书制作 生成certSigningRequest文件 如图,打开应用程序->实用工具->钥匙串访问 如图,选择从证书颁发机构请求证书 接下来填写邮件地址,选择存储到磁盘,点击继续 如图,保存文件到桌面. 制作p12证书 首先打开苹果开

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

J2SDK提供了keytool命令行工具,可以根据指定的参数来创建数字证书.生成的证书或证书库默认保存在命令行当前目录下. 1. 创建数字证书  keytool -genkey -v -alias scent -dname "CN=John,OU=MNG,O=Corp,L=Hangzhou,ST=Zhejiang,C=CN" -keyalg RSA -keysize 2048 -keypass 123456 -keystore prospectlib -storepass 123456

Java 生成数字证书系列(二)剖析数字证书

序 上一篇介绍了一下 CA 证书的几个相关概念,这几个概念还是很重要的,目的在于了解数字证书,以及其的工作原理.这篇文章主要是对 CA 证书进行剖析,讲一下证书的基本构成,这对于生成正确的.可以访问的证书是必不可少的. 构成 废话不多说,直接上内容. 先看一下证书到底是什么,在 Windows 下查看证书时(这里以 cer 为例),界面是这样的. 常规 选项卡里,主要介绍了证书信息,颁发者,和有效日期等. 而 详细信息 选项卡中,包含的信息是比较多的,他们都是以一种 Key - Value 的形

Java 生成数字证书系列(四)生成数字证书(续)

序 上一篇文章讲到了 Java 生成数字证书,使用的是第三方的组件 BC .这篇文章也是介绍生成数字证书的,只不过与上一篇不同的是,这篇采用的是 KeyStore 的存储方式,导出的证书文件格式为 pfx ,这种格式的证书不仅包含有公钥,还包含有私钥.从证书中就可以读取到私钥. 正文 废话不多说,直接上内容. 与上一篇相同,这里也是使用的 Bouncy Castle 提供的组件,不同的是,这里的证书采用的是公钥加密技术12号标准生成的,简写 PKCS12 .具体内容这里就不再详细的介绍了,有需要

Java 生成数字证书系列(一)了解数字证书

序 最近的工作一直围绕着数字证书,对于 CA 证书的了解还是多少有一点的,只不过没有那么深入,现在要用到这方面的东西,显然还是有点欠缺,那么从这篇开始,我就将我自己的学习.工作历程跟大家一同分享,希望对想了解 CA 证书的童鞋有所帮助吧. 很显然,这篇文章大部分都是理论介绍,后续会有相关的一些实例.不喜欢看理论的童鞋,可以直接略过此章,直接看后续的文章. 概要 这篇文章,我主要是想谈一下 CA 证书的工作原理,数字签名,证书格式等几个比较重要的概念.因为在后续的文章中,都会用到这几个概念,而且,

Java安全之数字证书

在前面说到,消息摘要用于验证数据完整性,对称与非对称加密用于保证数据保密性,数据签名用于数据的抗否认性,于是集这些安全手段于一身的终极武器--数字证书出现了.数字证书具备了加密/解密的必要信息,包含签名算法,可用于网络数据加密/解密交互,标识网络用户(计算机)身份.数据证书为发布公钥提供了一种简便途径,成为加密算法以及公钥的载体. 数字证书有多种文件编码格式,主要包含CER编码.DER编码等: a.CER(Canonical Encoding Rules,规范编码格式),是数字证书的一种编码格式

iOS 推送证书制作(JAVA/PHP)

iOS 推送证书制作(JAVA/PHP) 在使用Java或者PHP制作iOS推送服务器的时候,需要自己从开发者网站上导出的aps_developer_identity证书和Apple Development Push Services证书进行合成,生成可以供Java使用的p12证书或供PHP使用的pem证书.aps_developer_identity证书和Apple Development Push Services证书的申请过程可以参考:http://www.cnblogs.com/hubj