- javax.net.ssl.SSLHandshakeException: No appropriate protocol报错解决
- 一、问题描述
- 二、问题解决
- 方案一
- 方案二(亲测有效)
- 1.
- 2.
用java开发了一个简单的***发送邮件***的程序,本地运行正常,但是上传到服务器就出现报错:
Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465; nested exception is: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) at javax.mail.Service.connect(Service.java:295) at javax.mail.Service.connect(Service.java:176) at com.kotoba.MailDemo.main(MailDemo.java:42) Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)二、问题解决 方案一
[原文参考地址](javax.net.ssl.SSLHandshakeException: No appropriate protocol报错解决_蓝缘的博客-CSDN博客)
1、找到jdk目录/jre/lib/security/java.security,去掉jdk.tls.disabledAlgorithm中的SSLv3、TLSv1、TLSv1.1,参考阿里数据库连接池Druid 连接MySQL失败:javax.net.ssl.SSLHandshakeException: No appropriate protocol_Wingkin的博客-CSDN博客
2、但是上面方法并没有解决问题,还需要执行以下命令,才最终解决报错,参考java - SSLHandShakeException No Appropriate Protocol - Stack Overflow
update-crypto-policies --set LEGACY方案二(亲测有效)
我在使用方案一没有效果后,尝试了“Win+r”输入【inetcpl.cpl】打开windows本机的【SSLv3, TLSv1, TLSv1.1】,仍没有解决。在尝试了很多次后都快放弃了的时候,最后想着网上大家都在说时因为Java.security这个文件,就尝试把jdk的版本换换,结果没想到成功了!
1.在IDEA中,我们直接打开项目结构,如图下载新的jdk并更换(从官网自己下也行):
2.然后重新构建一下项目,再运行项目就可以跑起来了!╰(°▽°)╯
我这里测试了jdk11和jdk13,11可以运行,但是13不行。 如果11和13都不行的话在试试其他版本吧



