续之前的博文–客户端访问https站点(自定义证书)。
上述博文中,将客户端访问Https Server分为了三种方式:
- 浏览器方式
- 终端方式
- java 程序
但除此之外,还有一种特殊的场景:Client端是一个用Glassfish部署的应用,在这种情况下不仅需要将Server的证书导入到JDK中,还需将该证书导入到Glassfish安装目录下的config/cacerts.jks文件中。
实际上,在Glassfish的启动参数里,有如下两个参数设置:
-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
keystore.jks存放的是本机(server)的证书,客户端访问时需要加载该证书。cacerts.jks存放的是所信任的server的证书,此时glassfish所在主机相当于客户端。
详情请Unable to find valid certification path to requested target - error even after cert imported和HTTPS REST ClientResponse。