闲着无聊,所以就是用keytool创建证书,并且提交到CA去获取一个免费30天的认证证书,但是最后导入证书的时候报
keytool error: java.lang.Exception:Failed to establish chain from reply
keytool 错误:java.lang.Exception:无法从回复中建立链接。
创建keytool的文章见:http://www.chinaunix.net/jh/13/456376.html,注意第五步导入的证书名是client.cer而不是client.crt。估计是转载太多自己美操作过,所以没发现这个问题吧。
既然报错了,那只能解决。从网上查的这个错误的原因有:
1.CA根证书有更新,我使用的是旧的。----这个错误我排除掉,我的根证书是CA直接email给我的地址下载的,理论来说就是最新的,我也看过根帧数,2009~2019年,没问题
2.
使用JDK4.1中的keytool安装WebServer证书,正常下载证书,但是在使用keytool导入证书的时候报错:keytool error: java.lang.Exception:Failed to establish chain from reply
原因:用户使用linux系统,安装了多个jdk,但是系统环境变量中的jdk路径,与产生证书请求的jdk路径不相同。
解决办法:修改环境变量的设置,或者使用绝对路径执行keytool。详见:http://www.cfca.com.cn/help/jishu-WS-1-5.htm
这个网站很权威啊,我机器上是装了很多个JDK,所以我采用绝对路径创建证书,结果错误。没办法,只要去找一台新的机器使用,装了JDK,然后再开始创建证书,结果还是一样的失败。
最后我无语了,一度怀疑是不是JDK6的原因还是http://www.chinaunix.net这个地址被我们的网络屏蔽了,导致我们认证不了。正式的证书都是要钱的,不知道还有哪个CA中心能提供这种免费的测试证书。希望有高手能指点一二。
好吧。既然我创建不了证书,但是之间也恶补了下数字证书的基本信息,下面我来个汇总。
密钥和证书:(详见:http://www.microsoft.com/china/technet/security/guidance/secmod39.mspx)
非对称加密使用公钥/死钥对。对以使用私钥加密的数据,只能使用相应的公钥进行解密,反之依然。
顾名思义,公钥是指可以提供给很多人的密钥。相反,私钥是特定个人所独有的。向用户传送公钥使用的分发机制是证书。通常,证书颁发机构 (CA) 对证书进行签名,以便确认公钥来自声称发送公钥的主体。CA 是一个相互信任的实体。
数字认证的典型实现包含证书签名过程。例案:
1. | 王丽将一个签名的证书请求(包含她的名字、公钥、可能还有其他一些信息)发送到 CA。 |
2. | CA 使用王丽的请求创建一个消息。CA 使用其私钥对消息进行签名,以便创建一个单独的签名。CA 将消息和签名返回给王丽。消息和签名共同构成了王丽的证书。 |
3. | 王丽将她的证书发送给李华,以便授权他访问她的公钥。 |
4. | 李华使用 CA 的公钥对证书签名进行验证。如果证明签名是有效的,他就承认证书中的公钥是王丽的公钥. |
上面出现了几个专业术名,大学都学过,只是很久没用有点遗忘了,做个笔记提点下:
数字签名(详见:http://baike.baidu.com/view/7626.htm):
数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
上面的说法比较抽象,我举个场景:
我需要对某一个明星的名字加密,比如甄子丹。
1.我将公钥先共享给用户B,这样我们之间就约定了签名方式
2.我用私钥对消息体也就是甄子丹进行加密,加密后的数据就是签名了(假设是1111)
3.我将消息体和签名(甄子丹,1111)一起发送给用于B
4.用户B用我先前共享的公钥对数字签名也就是1111进行解密,解密后比对是否是甄子丹这个信息,如果是,那么说明这份信息是我发送的。
当然用户B用公钥数字签名发送给我,我再用私钥解密,也是一样的。
CA根证书(详见:http://baike.baidu.com/view/554880.htm)
通过对数字签名的理解之后,你也就知道CA根证书的作用了,在密钥和证书哪里,CA使用其私钥对王丽发送的消息进行签名,创建了一个单独的签名,由此可见,CA根证书其实可以理解我CA共享给全世界的公钥,使用此公钥去王丽的证书是否属于王丽当初提交给CA备案的证书。当然这是我片面的理解,欢迎有高手指出更详细的信息,上面的地址连接也不是很详细。
PS:最后提供一个对keytool介绍比较详细的网站:http://www.infosecurity.org.cn/article/pki/case/23823.html
对于我们这种英文比较差的人,还是需要更多的中文翻译才好,当然我也在努力学习英文^_^~