这个异常有可能是SAN (Subject alternative name) 与CN (Common Name)没设置好引起。
网上翻阅了许多资料,下面记录一下解决的方法。
1. 拿着Server 给的server.jks EXPORT对应的CER 然后generate 自己CLIENT SIDE 的JKS. (用的是JAVA8)
keytool -genkeypair -alias testingkey2 -keyalg RSA -validity 365 -keystore server.jks -ext SAN=dns:localhost,ip:127.0.0.1
keytool -list -v -keystore server.jks
keytool -export -alias testingkey2 -keystore server.jks -rfc -file testing.cer
keytool -import -alias testingkey2 -file testing.cer -keystore client.jks
keytool -list -v -keystore client.jks
2. 在JAVA代码中或者startup batch中输入下面的代码,用来读取相对应的KEY。.
- java -Djavax.net.ssl.trustStore=Client.jks -Djavax.net.ssl.trustStorePassword=password
- Properties systemProps = System.getProperties();
- systemProps.put( "javax.net.ssl.trustStore", "Client.jks");
- systemProps.put( "javax.net.ssl.trustStorePassword", "password");
- System.setProperties(systemProps);
还有另一种方法就是用X509TrustManager 来实现,具体可以查考下面链接:
http://www.cnblogs.com/devinzhang/archive/2012/02/28/2371631.html