ssl握手会有很多意想不到的exception, 其中很多都是因为没有配置好cacerts导致的。
以tomcat为例,你需要在conf/server.xml中指定你的keystore并且配置好keyalias,
同时,tomcat会到java_home/jre/lib/security目录下读取cacerts文件。
在weblogic中,你也需要配置trust.jks和identity.jks(可以参考webloigc security in action)。
问题是,ie究竟根据什么来提交证书(包含私钥的证书)?
很简单,服务器提交他的证书到客户端,客户端会根据服务器的证书的dn,检索本地私钥,
选择那些由此dn签发证书x,然后确定使用x对应的本地私钥,用于ssl握手。
cacerts是jdk容器信任的证书列表,如果cacerts中没有包含客户端私钥对应的证书链中的
信任证书,则服务器会拒绝任何从客户端的ssl请求。
典型的weblogic日志就是: