既然搞了https连接,就深入了解一下相关问题,主要还是注重实际解决办法。既然是https的连接,ca证书就不可避免,但是经常出现各种连不上SSL的问题,看日志就是关于SSL,security,X509之类的一堆异常信息。
连接SSL异常有很多原因,但是根据SSL的原理,总结异常的原因其实很清楚:服务器用证书表明身份,请求客户端信任它,并用协商的方式加密传输数据;但是客户端识别证书失败,于是报错。根本原因就是客户端程序不信任服务器的证书,比如证书过期了等等各方面原因。
解决办法:
1,买证书。主流浏览器支持的证书,java7以上客户端基本也支持。
2,“欺骗”java程序去信任证书。java通过keystore来验证证书,所以可以将证书导入keystore中,或者放一个单独的keystore。具体方法可以自行查资料。
3,直接通过程序跳过验证。java安全机制依赖于一个X509TrustManager接口,这个接口的实现就是验证证书是否可信,所以通过代码跳过检查就可以了,具体代码网上有很多源码,可以查找一下。