搞了个服务器程序,注册使用邮件发送(原谅屌丝用不起短信),在本机测试时很正常,都是发布到阿里Centos7上之后,邮件怎么也发不出来,开始以为是端口没有开放的原因,整了端口很久,后来看下异常代码如下
错误代码
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:503)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:234)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
各种google,百度,大部分说要证书,也有说是jdk的问题,本着少数服从多数的原则,自以为也是证书的问题,可是跟同事商量后觉得程序中应该不至于这么麻烦,本着试试的态度,觉得应该是jdk1.8的问题,正好网站有说替换掉jdk1.8的两个包,包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
下载后替换掉jdk安装目录下的jre\lib\security\的两个包,重启服务器,问题解决
更直接的解决方式:替换掉jdk1.8使用1.7