问题标签 [sslhandshakeexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android 2.2 但不是 3.0 中的“不受信任的服务器证书”
我正在使用 BouncyCastle 提供程序和 Apache HttpClient来信任 SSL 证书,如 Antoine Hauck 所述。
我制作的应用程序以 Android 1.5 为目标,在模拟器和运行 3.0 的设备上运行良好。但是,当我尝试在 2.2 (Galaxy S) 上对其进行测试时,会出现 SSLException,即“不受信任的服务器证书”。
由于没有抱怨 BouncyCastle 本身的错误,我假设设备没有从 .bks 文件中正确读取证书。我正在尝试在 Android 2.2 版上使用 BouncyCastle,还是只需要从工作的 3.0 应用程序中更改某些内容?
更新
当我今天再次尝试运行该应用程序时,它第一次运行正常。我现在已经尝试了几次,它有时运行正常,但有时仍会出现 SSLException。发生这种情况时似乎没有任何模式 - 它可能连续工作几次,然后反复失败。
java - 收到 HANDSHAKE_FAILURE 警报
我正在编写一个 Java 客户端(在 weblogic 10.3 上)来调用一个安全的 Web 服务。我已经获得了一个客户端证书,该证书已安装在 cacerts、DemoIdentity.jks 和 DemoTrust、jks 在我的 weblogic 中,我将密钥库设置为 DemoIdentity 和 DemoTrust。在 weblogic 控制台中,我将“双向客户端证书行为:”设置为“请求但未强制执行的客户端证书”。对于“启用 SSL 侦听端口:”,我已选中该复选框。
尝试访问 Web 服务时出现以下异常:
但是在 Firefox 中,我已经添加了证书,当我查看 Web 服务的 wsdl 时,它会提示我证书,在我单击“确定”后,它会呈现 wsdl 文件以用于安全 Web 服务。任何人都知道我应该怎么做才能让客户端使用 Java 工作?
java - 收到致命警报:与 Tomcat 的握手失败
我在 Tomcat 中的授权 ssl 连接有问题。我开发了使用证书连接到外部服务器的类。当我在命令行中运行它时它工作正常。但是当我从 Tomcat 中托管的 JSP 页面调用它时,会抛出如下异常:
错误:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)com.sun.net.ssl.internal.ssl.Alerts .getSSLException(Alerts.java:136) com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1694) com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java :939) com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120) com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1147) com.sun .net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1131) sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434) sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection .connect(AbstractDelegateHttpsURLConnection.java:166) sun.net.www.protocol.http。HttpURLConnection.getInputStream(HttpURLConnection.java:1049) sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) myPakage.myClass.method(myClass.java:90) org.apache.jsp.jsp。 test.tst_jsp._jspService(tst_jsp.java:66) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache。 jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke( AccessLogValve.java:554) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core。 StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache。 coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java: 619) 块引用apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:第554章) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11。 Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:第554章) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11。 Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$ Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) Blockquotecatalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$ Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) BlockquoteStandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache。 catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache。 catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用调用(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache.catalina。 core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org. apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol. java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用调用(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache.catalina。 core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org. apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol. java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache。 catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$ Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache。 catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$ Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler。 process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler。 process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) 块引用connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) Blockquoteconnector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:619) Blockquote
我已经将外部服务器的公共证书导入到 java home 中的 cacerts 中。Java 版本:6.0_21 Tomcat 版本:6.0.32
我真的厌倦了这个问题。请帮忙解决这个问题。
jboss - Javamail: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException 从 VPS 发送邮件时
我有以下问题。我有一个 Seam Web 应用程序,它具有电子邮件撰写和使用 Javamail 发送的功能。该应用程序在我的本地 JBoss 应用程序服务器中发送邮件很好,但它在我的 myhosting.com VPS 中安装的 JBoss 服务器上不起作用。我读到问题可能是因为我尝试连接的 Web 服务器或 URL 没有来自授权 CA 的有效证书,但我运行了一个实用程序(http://cold-caffein.blogspot.com /2011/07/looks-like-article-no-more-unable-to.html)让我验证证书并且它们看起来很好(我正在连接到 Gmail)。
设置Session属性的相关代码如下:
我读到该问题的另一个原因可能是使用将 mail.smtp.starttls.enable 设置为 true,但如果我省略第二行或设置属性为假。
我不知道问题是否与 myhosting 提供的 mail2web 邮件服务有关(请查看我在下面提供的两个日志中的第 9 行,这就是事情开始不同的地方)。以下是本地 Javamail 日志和 VPS 的服务器日志(后者显示了我遇到的错误):
本地日志:
并且邮件发送成功。
VPS日志:
我应该怎么做才能摆脱这个错误?
apache - 如何解决 RECV SSLv3 ALERT: fatal, bad_record_mac
在过去的几天里,我尝试在 Ubuntu 10.10 上安装一个工作的 CAS 服务器(Jasig CAS)。我安装了 Tomcat 6 并为 SSL 端口 8443 配置(server.xml)它:
server_cert.pem、server_key.pem 是自签名 x509 证书。此外,我为 Windows 测试服务器 (apache2 - xampp) 创建了一个 x509v3 证书(两台服务器都在同一个 LAN 中,并且 IP 为 10.0.0.*)。这些证书安装在位于 java 目录中的 java 密钥库 (cacerts) 中。由于客户端证书中的“替代主题名称”一直存在问题,因此我使用了 openssl 配置文件的扩展版本来创建它。
apache2 ssl 配置文件如下所示:
SSL 连接在两台服务器上都有效(使用 IE 和 firefox 进行了测试)。
现在是艰巨的任务。我在 windows 机器上使用了一个名为 phpCAS 的模块,用 php 编程,与 CAS 服务器通信。模块向 CAS 服务器发送回调 url,服务器发送代理票证等。
但是我无法确保两台服务器之间的有效 SSL 握手。openssl -s_client -connect... 对于两台服务器,它都没有显示任何错误,所以我调试了完整的 SSL 握手(这里只是相关部分):
...
*服务器你好完成
* ClientKeyExchange, RSA PreMasterSecret, SSLv3 http-apr-8443-exec-3, WRITE: SSLv3 Handshake, length = 132 SESSION
KEYGEN: PreMaster Secret: 0000: 03 00 78 96 8F EE D3 4A 2F A8 CC F8 F9 D7 2F CB ..x....J/...../. 0010: 9E 3A 58 66 43 0E D5 49 3C 8A B0 3D 3F 2C 89 A0 .:XfC..I<..=?,.. 0020: BC E2 B2 12 F8 D9 55 73 F2 2C 1F CC 81 80 94 22 ......Us.,......” 连接密钥:客户端 Nonce:0000:4E D1 94 ED 32 7F FA 72 40 3C 43 C8 05 E2 62 D0 N...2..r@ 91 E2 D0 1C 90 3D 30 DD ..n;W6........=0. 主密码:0000:EB 25 F0 A2 A3 FF 37 06 BB 79 41 C5 E5 07 1C 64 .%....7. .yA....d 0010:77 66 A3 37 71 97 63 AF DB A2 79 47 85 E2 9C 74 wf.7q.c...yG...t 0020:5F 14 3D 26 57 E8 AD 9B A1 7C AC 33 00 04 4A E0 _.=&W......3..J. 客户端 MAC 写入密码:0000: C9 20 BF A5 A6 2B C1 DA A8 4E 93 E0 DE 76 06 53 . ...+. ..N...vS 服务器 MAC 写入密码:0000: 66 77 5A 3E BD E7 19 55 A4 80 1E E6 8A 9E 2A 5E fwZ>...U..... .*^ 客户端写入密钥:0000:58 D1 29 38 13 D8 83 EF 4F BD 7A 18 C8 35 D7 B4 X.)8....Oz.5.. 服务器写入密钥:0000:3A 7B 6A 6E 66 E9 E1 42 A4 3C C3 19 D0 7F 21 FF :.jnf..B.<....!. ... 没有用于此密码的 IV
http-apr-8443-exec-3,写入:SSLv3 更改密码规范,长度 = 1
*完成 verify_data: { 71, 19, 125, 80, 118, 60, 64, 122, 243, 112, 45, 18, 254, 144, 12, 143, 221, 125, 10, 94, 15, 221, 122 , 21, 90, 190, 76, 224, 224, 57, 67, 172, 228, 75, 181, 228 }
* http-apr-8443-exec-3,写入:SSLv3 握手,长度 = 56 http-apr-8443-exec-3,读取:SSLv3 警报,长度 = 2
http-apr-8443-exec-3,RECV SSLv3 ALERT:致命,bad_record_mac
http-apr-8443-exec-3,调用closeSocket() http-apr-8443-exec-3,
处理异常:javax.net.ssl.SSLException:收到致命警报:
bad_record_mac 2011-11-27 02:39:57,315 错误
[org.jasig.cas.util.HttpClient] -
bad_record_mac> javax.net.ssl.SSLException:收到致命警报:
bad_record_mac 在 sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 在 sun.security.ssl.Alerts.getSSLException(Alerts.java:154) 在 ....
最近几天我没有找到任何解决方案,我真的不知道问题出在哪里。顺便说一句,我强制使用 SSLv3。
非常感谢您的任何建议。
java - 接受 Java 中的证书
我在通过 Java 与 HTTPS 站点交互时遇到问题。我的程序每次运行时都使用一个带有不受信任证书的 URL。该程序必须在多个系统上运行。目前,我有以下内容:
使用此代码,我可以很好地执行以下操作:
但是,我不能执行以下操作:
执行 executeMethod(postMethod) 时,我得到 SSLHandshakeException、CertPathBuilderException 等。
我能做些什么来解决这个问题?我正在考虑要么接受证书,要么只是绕过所有证书验证(因为程序在专用网络内部运行)。
谢谢
java - 多个 ssl 连接时出现 SSLHandshakeException
我编写了一个模块,通过 https 连接到服务并进行身份验证。设置正确的密钥库路径后,它工作正常。当我想在我的 Tomcat 应用程序中使用该模块(作为 jar)时出现问题。我也为密钥库设置了正确的路径(绝对路径)但是当我尝试连接时出现握手异常
我记得我之前收到了这条消息,当时我的密钥库不正确。我是否需要做更多的事情才能使它在 Tomcat 下工作。还有什么我错过的问题吗?我在没有身份验证的情况下通过 https 连接到另一个服务,这工作正常(在 Tomcat 应用程序中)。
编辑:问题是运行一个通过 ssl 连接到不同服务的项目(不仅在 Tomcat 中)。一个有身份验证,第二个没有。所以我编辑了标题
java - 客户端请求的协议 SSLv3 未启用或不受支持 (IBM JDK 6.0SR10)
从 IBM JDK 6.0SR9 更新到 6.0SR10 后,我不断得到(在服务器端):
没有修改任何安全设置。知道如何(重新)启用 SSLv3 吗?
谢谢。
svn - SVN - 握手失败:SSL 错误
我无法从直到最近才出现此问题的机器上更新或提交到 svn。我更新了乌龟 svn 客户端。我每次都可以删除文件夹并拉下新副本,但无法提交或更新。
无法通过 URL 连接到存储库
选项 SSL 握手失败:SSL 错误:sslv3 警报非法参数