CA数字证书以及keytool 错误:java.lang.Exception:无法从回复中建立链接求帮助

本文介绍了在尝试使用keytool创建并导入数字证书时遇到的"keytool error: java.lang.Exception:Failed to establish chain from reply"错误。内容包括错误排查,如检查CA根证书、确认JDK环境一致性,以及对数字证书、非对称加密和CA根证书的基本概念解释。作者寻求解决方案,并分享了相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闲着无聊,所以就是用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

      对于我们这种英文比较差的人,还是需要更多的中文翻译才好,当然我也在努力学习英文^_^~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值