javaMail SMTP 会话属性mail.smtp.ssl.protocols 可能有哪些值?

Sof*_*ili 0 java ssl

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

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

我在代码中有一个示例,我正在处理:“TLSv1”。我想知道,是否有更多可用的 TLS 版本,或者我是否可以忽略该版本而将其设置为“TLS”。

我在网上遵循的提示和链接不够具体或者是死链接。

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

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

谢谢你的帮助。

sin*_*air 6

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() 列为受支持。