handshake alert: unrecognized_name
1 | javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name |
Java 7引进了SNI(Server Name Indication 是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。既是,在连接到服务器建立SSL连接之前先发送要访问站点的域名(Hostname),这样服务器根据这个域名返回一个合适的证书。)的支持,默认是开启状态的,这个会导致在建立SSL连接握手的时候需要获取到访问连接的正确的虚拟域。要使用SNI,需要客户端和服务器端同时满足条件(客户端和服务器端都支持SNI,客户端发送了正确的域名,服务器端也做了相应的SNI配置)。
为了解决这个问题,可以手动的设置一下jsse.enableSNIExtension
属性,暂时把SNI禁用掉,设置方法:
- 方法一:启动参数中添加:-Djsse.enableSNIExtension=false
- 方法二:System.setProperty(“jsse.enableSNIExtension”, “false”);
Xstream no-args constructor error
1 | com.thoughtworks.xstream.converters.ConversionException: Cannot construct ClassXXX as it does not have a no-args constructor : Cannot construct java.util.RandomAccessSubList as it does not have a no-args constructor |
升级JDK版本,导致xstream
不兼容,解决方法:
- 提供一个无参构造函数
- xstream版本升级到1.4.4以上
- ClassXXX实现序列化接口
2016-08-03 10:21:39.972 [schedulerFactoryBean_Worker-2] WARN com.yeepay.common.utils.CallbackUtils - connection error : java.lang.RuntimeException: Could not generate DH keypair
javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1862)
把低版本的bcprov
exclude掉:
引入新的版本:
1 | <dependency> |
References
SSL handshake alert: unrecognized_name error since upgrade to Java 1.7.0
Xstream no-args constructor error
快钱报错:javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name解决