javaMail SMTP会话属性mail.smtp.ssl.protocols可以使用哪些值?

时间:2015-09-18 10:43:50

标签: java ssl

到目前为止,我正在搜索近一个小时,以找到有效值的规范或列表来填充此属性。

我正在使用javax.mail.Session并调用Session.getInstance(props)来设置" mail.smtp.ssl.protocols"。

我在代码中有一个例子,我正在研究:" TLSv1"。我想知道,如果有更多可用的TLS版本,或者我可以将版本保留,只需将其设置为" TLS"代替。

我在网上关注的提示和链接,不够具体或者是死链接。

到目前为止我搜索过的地方:

许多指向Oracle文档的链接仅显示Oracle登录页面。 SMTP的维基百科描述提到RFC 821,但它不包含属性列表或指向它们的链接。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

SSLSocket提供了一种方法getSupportedProtocols()

SSLSocketFactory sf = new SSLSocketFactoryImpl(); SSLSocket s = (SSLSocket) sf.createSocket(); System.out.println( Arrays.toString( s.getSupportedProtocols() )) ;

输出: [SSLv2Hello,SSLv3,TLSv1,TLSv1.1,TLSv1.2]

http://download.java.net/jdk7/archive/b123/docs/api/javax/net/ssl/SSLSocket.html#getSupportedProtocols%28%29

<强>详细信息:

https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html

mail.smtp.ssl.protocols - 指定将为SSL连接启用的SSL协议。属性值是javax.net.ssl.SSLSocket.setEnabledProtocols方法可接受的以空格分隔的标记列表。

https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLSocket.html#setEnabledProtocols%28java.lang.String[]%29

这些协议必须已被getSupportedProtocols()列为受支持。