加密证书及证书管理(keytool工具实例)
加密证书及证书管理(keytool工具实例)
一: 什么是证书?为什么要使用证书?
对数据进行签名(加密)是我们在网络中最常见的安全操作。签名有双重作用,作用一就是保证数据的完整性,证明数据并非伪造,而且在传输的过程中没有被篡改,作用二就是防止数据的发布者否认其发布了该数据。
签名同时使用了非对称性加密算法和消息摘要算法,对一块数据签名时,会先对这块数据进行消息摘要运算生成一个摘要,然后对该摘要使用发布者的私钥进行加密。 比如微信公众平台开发中最常见的调用api接口方法是将参数进行字典序排序,然后将参数名和参数值接成一个字符串,组合的字符串也就相当于我们这里说的摘要,然后将摘要用平台密钥加密。
接收者(客户端)接受到数据后,先使用发布者的公钥进行解密得到原数据的摘要,再对接收到的数据计算摘要,如果两个摘要相同,则说明数据没有被篡改。同时,因为发布者的私钥是不公开的,只要接收者通过发布者的公钥能成功对数据进行解密,就说明该数据一定来源于该发布者。
那么怎么确定某公钥一定是属于某发布者的呢?这就需要证书了。证书由权威认证机构颁发,其内容包含证书所有者的标识和它的公钥,并由权威认证机构使用它的私钥进行签名。信息的发布者通过在网络上发布证书来公开它的公钥加密证书及证书管理(keytool工具实例),该证书由权威认证机构进行签名,认证机构也是通过发布它的证书来公开该机构的公钥,认证机构的证书由更权威的认证机构进行签名,这样就形成了证书链。证书链最顶端的证书称为根证书,根证书就只有自签名了。总之,要对网络上传播的内容进行签名和认证,就一定会用到证书。关于证书遵循的标准,最流行的是 X.509
二:证书管理
是一个Java数据证书的管理工具,这个工具一般在 JDKjrebin\目录下 。所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的每个证书包含该条证书的私钥,公钥和对应的数字证书的信息。
证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥
将密钥(key)和证书()存在一个称为的文件中
在里,包含两种数据:
密钥实体(Key )— 密钥( key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体( )— 只包含公钥
1. 创建证书
– -alias “” – “RSA” – “d:.” -dname “CN=, OU=, O=, L=SH, ST=SH, C=CN” – “” – – 180
参数说明:
– 表示要创建一个新的密钥
-dname 表示密钥的 Names, 表明了密钥的发行者身份
CN= 注:生成证书时,CN要和服务器的域名相同,如果在本地测试php des,则使用
OU=
O=
L=
S=
C=
- 使用加密的算法,这里是RSA
-alias 和关联的别名,这个alias通常不区分大小写
- 私有密钥的密码,这里设置为
– 密钥保存在D:盘目录下的文件中
– 存取密码,这里设置为,这个密码提供系统从文件中将信息取出
- 该密钥的有效期为 180天 (默认为90天)
下面是各选项的缺省值。
-alias “mykey”
– “DSA”
– 1024
– 90
– 用户宿主目录中名为 . 的文件
-file 读时为标准输入,写时为标准输出
证书文件(The File)
该证书文件存在于java.homejrelib目录下,是Java系统的CA证书仓库
2.导出证书,由客户端安装
– -alias – d: -file d:.cer –
3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)
– – -alias – “%%/jre/lib// ” -file d:.cer –
生成的证书可以交付客户端用户使用,用以进行SSL通讯,或者伴随电子签名的jar包进行发布者的身份认证。
常出现的异常:“未找到可信任的证书”–主要原因为在客户端未将服务器下发的证书导入到JVM中,可以用
-list -alias – “$/jre/lib//” –
来查看证书是否真的导入到JVM中。
生成根证书时出现如下错误:
错误:java.io.: was with,or was
原因是在你的home目录下是否还有.存在。如果存在那么把他删除掉,然后再执行或者删除”%%/jre/lib// 再执行

数字证书中命令使用说明
-alias 证书别名
– 指定密钥库的名称(是jre中默认的证书库名字,也可以使用其它名字 )
– 指定密钥库的密码
– 指定别名条目的密码
-list 显示密钥库中的证书信息
-v 显示密钥库中的证书详细信息
– 将别名指定的证书导出到文件
-file 指定导出到文件的文件名
– 删除密钥库中某条目
– 将已签名数字证书导入密钥库
– 修改密钥库中指定条目口令
-dname 指定证书拥有者信息
– 指定密钥的算法
– 指定创建的证书有效期多少天
– 指定密钥长度
示例说明:
浏览证书库里面的证书信息,可以使用如下命令:
-list -v -alias – –
-list -rfc – e:/. –
-list -v – .store
缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书
要删除证书库里面的某个证书,可以使用如下命令:
– -alias – –
要导出证书库里面的某个证书,可以使用如下命令:
– – – -alias -file F:.cer
– -alias – e:/.jks -file e:/.crt -rfc –
*备注: .jks 也可以为 .格式 ; .crt也可以为 .cer格式
“-rfc” 表示以输出文件,否则以二进制输出。
要修改某个证书的密码(注意:有些数字认证没有私有密码,只有公匙,这种情况此命令无效)
这个是交互式的,在输入命令后,会要求你输入密码
– -alias –
这个不是交互式的,输入命令后直接更改
– -alias – -new – –
修改别名:
– – . -alias 当前别名 – 新别名
主流数字证书都有哪些格式
一般来说,主流的Web服务软件,通常都基于和Java两种基础密码库。
如何判断证书文件是文本格式还是二进制格式
您可以使用以下方法简单区分带有后缀扩展名的证书文件:
您也可以使用记事本直接打开证书文件。如果显示的是规则的数字字母,例如:
—–BEGIN CERTIFICATE—–
MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh......
—–END CERTIFICATE—–
那么,该证书文件是文本格式的。
证书格式之间的转换如下图:

Note: 阿里云云盾证书服务统一使用 PEM 格式的数字证书文件。
(Java、.Net、Php)语言需要的证书格式并不一致,比如说Java我们采用jks,.Net采用pfx和cer,Php则采用pem和cer;
主要分成两类,其一为密钥库文件格式、其二为证书文件格式;
密钥库文件格式
秘钥库概念:所有的公钥和私钥同证书都会被存储在密钥库中 因为证书需要被签名, 签名必须使用非对称加密算法+HASH算法 所以一般是或者
格式扩展名描述特点
JKS
.jks/.ks

【Java 】密钥库的Java实现版本,为SUN
密钥库和私钥用不同的密码进行保护
JCEKS
.jce
【JCE 】密钥库的JCE实现版本,为SUN JCE
相对于JKS安全级别更高,保护私钥时采用
.p12/.pfx
【PKCS #12】个人信息交换语法标准
1、包含私钥、公钥及其证书
2、密钥库和私钥用相同密码进行保护
BKS
.bks
【 】密钥库的BC实现版本,为BC
基于JCE实现
UBER
.ubr
【 UBER 】密钥库的BC更安全实现版本,为BC
证书文件格式【】
格式扩展名描述特点DER.cer/.crt/.rsa【ASN .1 DER】用于存放证书不包含私钥,二进制格式PKCS7.p7b/.p7r【PKCS #7】加密信息语法标准1、p7b以树状展示证书链,不含私钥
2、p7r为CA对证书请求签名的回复,只能用于导入CMS.p7c/.p7m/.p7s【 】
1、p7c只保存证书
2、p7m: with data
3、p7s:时间戳签名文件
PEM.pem【 】1、该编码格式在中定义php des,其实PEM是【- Mail】的简写,但他也同样广泛运用于密钥管理
2、ASCII文件
3、一般基于base 64编码.p10/.csr【PKCS #10】公钥加密标准【 】1、证书签名请求文件
2、ASCII文件
3、CA签名后以p7r文件回复SPC.pvk/.spc【 】微软公司特有的双证书文件格式,经常用于代码签名,其中
1、pvk用于保存私钥
2、spc用于保存公钥
证书格式转换工具介绍
目前两大开发平台Java和.Net都提供了相关的证书管理工具,
Java是,参考
;
.Net为,参考
//CHS//html/.asp;
但是两者遵循的标准并不是完全兼容加密证书及证书管理(keytool工具实例),有很多都是基于自己的实现,所以很多的文件格式并不通用,在实际开发使用过程中我们可能需要进行格式转换,
在转换过程中,常见格式的转换可以运用或者是证书管理导入导出工具;
另外一个很有用的工具就是,首页地址为,各种格式间的转换示例这里就不提供了
这里要提一些注意事项和小工具:
1、Java平台对X.509证书的支持并不一致,6.0版本之前生成的证书都是v1版本的,这在很多应用场合可能会导致一些潜在的问题php des,但是他还是能够管理v3版本的证书的,从6.0开始支持v3版本的证书生成;
2、插件推荐,这是一个国人贡献的证书生成、管理工具,效果还是不错的,而且可以下载源代码查看,对学习方面的编程很有帮助,可以从
更新,目前版本为2.0,不过好像现在作者也没有更新了;
3、 IUI工具推荐,这是一个老外编写的 GUI工具,功能大致和类似,他可以以或者Java Web Start启动查看,但作者并没有提供源代码下载,首页为
;
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 加密证书及证书管理(keytool工具实例)
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

