如何为javamail使用特定的协议?



有一个javamail协议属性

mail.smtp.ssl.protocols

允许用户使用特定的协议(TLSv1.2或1.1)。

如果属性没有被使用怎么办?然后由JVM设置来设置它吗?

如果我想使用TLSv1.3,我必须使用哪个版本的Javamail ?

感谢

在1.5.3以下的javamail版本中,如果sysprop没有设置,它将使用TLSv1.0,这(1)在最新版本的Java上根本不起作用,(2)将无法在越来越多的服务器上工作,因为1.0被BEAST短暂地"破坏"了,许多当局不再允许它。参见后缀和openJDK 11: "没有合适的协议(协议被禁用或密码套件不合适)"特别是我的答案中标记为EDIT的部分。

在最近的版本中,正如您在那里链接的源代码中看到的那样,它使用JVM默认值,除非它删除SSL版本(如果存在),并且自2015年以来的所有Java版本都从JVM默认值中省略了SSLv3(因为它是真的被POODLE打破)。(SSLv2Hello,无论如何都不是一个实际的协议版本,甚至更早被删除。)

要使用TLSv1.3,您需要一个支持它的Java版本:11 up或8u261 up,或者安装和配置了足够最新版本的BouncyCastle的BCTLS的任何非荒谬的Java版本,而不是至少在JSSE之前—当然还有一个支持它的服务器。Javamail只是将此设置作为一组字符串传递给JSSE或BCTLS,对于包括1.3在内的不同版本的TLS,它不需要新的代码。

最新更新