我们开发了一个控制台应用程序,它将从HTTPS上的ESB(https://esb.mkcl.org/)中获取数据。当我打到这个网站时,我得到了javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
异常。我将网址更改为https://netbanking.hdfcbank.com/netbanking/,它也位于HTTPS上,打出后我没有收到任何异常。为什么我需要在java中导入服务器证书
经过一番搜索后,我才知道我必须在java的keystore中导入公共证书,例如cacerts(C:\ Program Files \ Java \ jre6 \ lib \ security)。所以我从浏览器导出了https://esb.mkcl.org/的证书,并使用keytool
在java中导入了证书,然后执行了控制台应用程序并且它可以正常工作!没有发生异常。
因此,问题是为什么我需要导入微粒 URL的证书(其他HTTPS URL在没有导入任何证书的情况下工作在Java中)?
我知道为什么我需要将证书导入到java和关于ssl配置我告诉我的IT infra团队,但他们说在glassfish中的所有配置是完美的!我不知道他们是怎么说的。感谢您的证据。如果您对哪个配置不是“完美”有任何想法,请指导。 – Amogh
那么,ssllabs测试页面列出的问题将在那里详细解释。如果您查看第二个信任路径,您会发现它需要额外下载由AddTrust External Root CA交叉签名的上述根证书的[version](http://crt.comodoca.com/COMODORSAAddTrustCA.crt) (应该在信托商店中)。Java不会自动执行下载,因此对于该服务器来说,需要发送该证书,然后它将适用于较老的客户端。 – mata