Anypoint v6.4.4启动SSL报错,无法导入Mule 3项目求助
启动Anypoint Studio 6.4.4后控制台抛出javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)错误,导致无法导入Mule 3项目。当前使用Java 11.0.16.1,已尝试重装Anypoint和Eclipse但问题未解决。
错误栈详情:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170) at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:103) at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:238) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:409) at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:834) at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1200) at org.apache.http.impl.io.AbstractSessionOutputBuffer.flushBuffer(AbstractSessionOutputBuffer.java:159) at org.apache.http.impl.io.AbstractSessionOutputBuffer.flush(AbstractSessionOutputBuffer.java:166) at org.apache.http.impl.AbstractHttpClientConnection.doFlush(AbstractHttpClientConnection.java:272) at org.apache.http.impl.AbstractHttpClientConnection.flush(AbstractHttpClientConnection.java:277) at org.apache.http.impl.conn.AbstractClientConnAdapter.flush(AbstractClientConnAdapter.java:201) at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:239) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121) at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:685) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:487) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer.performConnect(HttpClientRetrieveFileTransfer.java:1077) at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer.access$0(HttpClientRetrieveFileTransfer.java:1068) at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer$1.performFileTransfer(HttpClientRetrieveFileTransfer.java:1064) at org.eclipse.ecf.filetransfer.FileTransferJob.run(FileTransferJob.java:73) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
该错误源于Java 11默认禁用了TLSv1.0、TLSv1.1等旧版SSL协议,而Anypoint Studio 6.4.4依赖的组件仍在尝试调用这些协议,以下是具体修复步骤:
修改Java安全配置文件
找到Java安装目录下的lib/security/java.security文件(Java 8路径为jre/lib/security/java.security),定位到jdk.tls.disabledAlgorithms配置项,移除其中的TLSv1和TLSv1.1(如果存在)。修改后示例:jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, 3DES_EDE_CBC, anon, NULL保存文件后重启Anypoint Studio。
添加Studio专属JVM参数
在Anypoint Studio安装目录下打开AnypointStudio.ini文件,在-vmargs下方添加以下参数,强制启用兼容的TLS协议:-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2保存后重启Studio即可生效。
降级Java版本(备选方案)
Anypoint Studio 6.4.4官方推荐搭配Java 8使用,若上述方法无效,可切换至Java 8:- 下载并安装Java 8(Oracle JDK或OpenJDK 8均可)
- 修改
AnypointStudio.ini中的-vm参数,指向Java 8的执行文件路径,示例(Windows):-vm C:\Program Files\Java\jdk1.8.0_301\bin\javaw.exe - 重启Anypoint Studio
内容的提问来源于stack exchange,提问作者PleasePleasePleaseHelp

