Ssl JavaMail:“;握手期间远程主机关闭连接”;在连接office365时
我尝试使用javaMail v1.5.3连接到office365邮件服务器(应用程序部署在Tomcat6上)。我在启动时运行一个线程,在一分钟睡眠的循环中检查新电子邮件。在大多数情况下,连接已成功建立,一切正常,但有时我会 “握手期间远程主机关闭连接”错误 错误是由以下原因引起的:Ssl JavaMail:“;握手期间远程主机关闭连接”;在连接office365时,ssl,jakarta-mail,office365,Ssl,Jakarta Mail,Office365,我尝试使用javaMail v1.5.3连接到office365邮件服务器(应用程序部署在Tomcat6上)。我在启动时运行一个线程,在一分钟睡眠的循环中检查新电子邮件。在大多数情况下,连接已成功建立,一切正常,但有时我会 “握手期间远程主机关闭连接”错误 错误是由以下原因引起的: Caused by: java.io.EOFException: SSL peer shut down incorrectly at sun.security.ssl.InputRecord.read(InputRe
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
我试过以下几种方法:
以及:
将-Dhttps.protocols=TLSv1、SSLv3
和-Dsun.security.ssl.allowUnsafeRenegotiation=true
添加到我的tomcat环境中
但我没有得到任何结果。仍然随机地发生异常
我在javax.net和IMAP连接上启用了调试模式,并获得了结果:连接未正确建立时,日志如下所示:
DEBUG: setDebug: JavaMail version 1.5.3
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: closeFoldersOnStoreFailure
DEBUG IMAP: trying to connect to host "outlook.office365.com", port 993, isSSL true
Ignoring unavailable cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Ignoring unavailable cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA
Ignoring unavailable cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
%% Client cached [Session-4, TLS_RSA_WITH_AES_128_CBC_SHA]
%% Try resuming [Session-4, TLS_RSA_WITH_AES_128_CBC_SHA] from port 51400
*** ClientHello, TLSv1
RandomCookie:
GMT: 1435130635
bytes = { , , , , , , , , , , , , , , , , , , , , , , , , , , }
Session ID: {66, 20, 0, 0, 123, 9, 142, 72, 150, 39, 215, 34, 63, 169, 129, 23, 25, 182, 88, 196, 86, 27, 216, 191, 117, 196, 37, 118, 229, 8, 9, 64}-
Cipher Suites: [TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]-
Compression Methods: { }
Extension server_name, server_name: [host_name: outlook.office365.com]
***-
[write] MD5 and SHA1 hashes: len = 125
46@CheckMailThread, WRITE: TLSv1 Handshake, length = 125
[Raw write]: length = 130
46@CheckMailThread, received EOFException: error
46@CheckMailThread, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
46@CheckMailThread, SEND TLSv1 ALERT: fatal, description = handshake_failure
46@CheckMailThread, WRITE: TLSv1 Alert, length = 2
[Raw write]: length = 7
46@CheckMailThread, called closeSocket()
然后发生异常
javax.mail.MessagingException: Remote host closed connection during handshake;
nested exception is:
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:733)
at javax.mail.Service.connect(Service.java:364)
at javax.mail.Service.connect(Service.java:245)
(...)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:953)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:574)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:369)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:117)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:120)
at com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:753)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:696)
... 6 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
... 16 more
javax.mail.MessaginException:握手期间远程主机关闭连接;
嵌套异常是:
javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接
在com.sun.mail.imap.IMAPStore.protocolConnect上(IMAPStore.java:733)
在javax.mail.Service.connect(Service.java:364)
在javax.mail.Service.connect(Service.java:245)
(...)
原因:javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接
位于sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:953)
位于sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
位于sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
位于sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
位于com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:574)
在com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:369)上
位于com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
在com.sun.mail.iap.Protocol.(Protocol.java:117)
在com.sun.mail.imap.protocol.IMAPProtocol.(IMAPProtocol.java:120)
位于com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:753)
在com.sun.mail.imap.IMAPStore.protocolConnect上(IMAPStore.java:696)
... 还有6个
原因:java.io.EOFException:SSL对等机错误关闭
位于sun.security.ssl.InputRecord.read(InputRecord.java:482)
位于sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
... 还有16个
另一方面,在大多数情况下,线程运行正常,日志如下所示:
DEBUG: setDebug: JavaMail version 1.5.3
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: closeFoldersOnStoreFailure
DEBUG IMAP: trying to connect to host "outlook.office365.com", port 993, isSSL true
Ignoring unavailable cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Ignoring unavailable cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA
Ignoring unavailable cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
%% Client cached [Session-150, TLS_RSA_WITH_AES_128_CBC_SHA]
%% Try resuming [Session-150, TLS_RSA_WITH_AES_128_CBC_SHA] from port 59183
*** ClientHello, TLSv1
RandomCookie:
GMT: 1435076193
bytes = { , , , , , , , , , , , , , , , , , , , , , , , , , , , }
Session ID:
{241, 61, 0, 0, 224, 114, 43, 139, 255, 64, 232, 7, 209, 90, 5, 63, 63, 117, 33, 66, 215, 35, 48, 83, 131, 211, 38, 151, 73, 232, 6, 120}
Cipher Suites: [TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods: {
}
Extension server_name, server_name: [host_name: outlook.office365.com]
***
[write] MD5 and SHA1 hashes: len = 125
46@CheckMailThread, WRITE: TLSv1 Handshake, length = 125
[Raw write]: length = 130
[Raw read]: length = 5
[Raw read]: length = 3532
46@CheckMailThread, READ: TLSv1 Handshake, length = 3532
*** ServerHello, TLSv1
RandomCookie:
GMT: 1435076194
Bytes = { , , , , , , , , , , , , , , , , , , , , , , , , , , , }
Session ID:
{112, 39, 0, 0, 59, 34, 200, 120, 31, 23, 110, 30, 10, 37, 236, 213, 46, 233, 201, 3, 253, 223, 81, 109, 188, 218, 33, 164, 33, 127, 27, 55}
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA
Compression Method: 0
Extension renegotiation_info, renegotiated_connection: <empty>
***
%% Initialized: [Session-151, TLS_RSA_WITH_AES_128_CBC_SHA]
** TLS_RSA_WITH_AES_128_CBC_SHA
[read] MD5 and SHA1 hashes: len = 81
*** Certificate chain (...)
DEBUG:setDebug:JavaMail版本1.5.3
调试:getProvider()返回javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
调试IMAP:mail.IMAP.fetchsize:16384
调试IMAP:mail.IMAP.ignorebodystructuresize:false
调试IMAP:mail.IMAP.statuscachetimeout:1000
调试IMAP:mail.IMAP.appendbuffersize:-1
调试IMAP:mail.IMAP.minidletime:10
调试IMAP:closeFoldersOnStoreFailure
调试IMAP:尝试连接到主机“outlook.office365.com”,端口993,isSSL true
忽略不可用的密码套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA
忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
忽略不支持的密码套件:TLS_RSA_WITH_AES_256_CBC_SHA256
忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
忽略不可用的密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA
忽略不可用的密码套件:TLS_RSA_WITH_AES_256_CBC_SHA
忽略不支持的密码套件:TLS_RSA_WITH_AES_128_CBC_SHA256
允许不安全的重新协商:false
允许旧版hello消息:true
第一次握手是否正确
是否安全重新谈判:错误
%%客户端缓存[会话150,TLS\U RSA\U与\U AES\U 128\U CBC\U SHA]
%%尝试从端口59183恢复[Session-150,TLS_RSA_和_AES_128_CBC_SHA]
***ClientHello,TLSv1
随机cookie:
格林尼治时间:1435076193
字节={,,,,,,,,}
会话ID:
{241, 61, 0, 0, 224, 114, 43, 139, 255, 64, 232, 7, 209, 90, 5, 63, 63, 117, 33, 66, 215, 35, 48, 83, 131, 211, 38, 151, 73, 232, 6, 120}
密码套件:[TLS\ U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U MD5,TLS\u空\u重新协商\u信息\u SCSV]
压缩方法:{
}
扩展服务器名称,服务器名称:[主机名称:outlook.office365.com]
***
[写入]MD5和SHA1哈希:len=125
46@CheckMailThread,写入:TLSv1握手,长度=125
[原始写入]:长度=130
[原始读取]:长度=5
[原始读取]:长度=3532
46@CheckMailThread,读取:TLSv1握手,长度=3532
***你好,TLSv1
随机cookie:
格林尼治时间:1435076194
字节={,,,,,,,,}
会话ID:
{112, 39, 0, 0, 59, 34, 200, 120, 31, 23, 110, 30, 10, 37, 236, 213, 46, 233, 201, 3, 253, 223, 81, 109, 188, 218, 33, 164, 33, 127, 27, 55}
密码套件:TLS_RSA_与_AES_128_CBC_SHA
压缩方法:0
扩展重新协商\u信息,重新协商的\u连接:
***
%%已初始化:[会话151,TLS\U RSA\U与\U AES\U 128\U CBC\U SHA]
**TLS_RSA_与_AES_128_CBC_SHA
[读取]MD5和SHA1哈希:len=81
***证书链(…)
然后是证书等等
所以我想知道是什么导致了这种不一致的行为 如果它大部分时间都能工作,但有时不能工作,则可能与连接和服务器端问题有关。例如,服务器可能会在高负载等情况下关闭连接。这种情况会发生,您可能对此无能为力。因此,在一段时间后重试并希望问题已经消失。您还应该考虑Outlook。Office 365.com不是一个服务器,而是大量的服务器。所以有