今天遇到一个问题,记录下来,由于网上说的五花八门,记录下自己处理的方式
需求主要是服务端http改https。
tomcat做https,自己作了张证书,由于其他应用有通过httpclient访问的接口,结果就出现异常
No subject alternative names present
网上解决方式基本2种,证书做的时候不能用IP的方式,要使用域名的方式, 或者重写一个验证方法,等于绕过去。
后来在stackOverFlow上看到一个哥们的帖子,在制作证书时候增加个参数
keytool -genkey -v -alias tomcat -keyalg RSA -keystore d:\tomcat.keystore -validity 3650 -ext san=ip:192.168.1.1
去oracle http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html
可以查到参数的说明 ,不过我看了也没太看明白。
然后又报错 PKIX path building failed...
网上又是让重写方法 绕过去
仔细研究一下,原因应该是客户端需要验证服务端的证书,所以需要做一张证书 加载到客户端的JRE中
keytool -export -file d:\tomcat.crt -alias tomcat -keystore d:\tomcat.keystore
keytool -import -alias tomcat -file "D:\tomcat.crt" -keystore "D:\jdk1.7.0_51\jre\lib\security\cacerts" -storepass changeit