java - 将 ssl 与 Apache Mina 和 android 一起使用

标签 java android ssl apache-mina

我正在尝试将 Mina 与 android 一起使用。 到目前为止,一切正常。 现在我正在尝试使用 SSLFilter 动态添加 SSL 支持。 我的问题出在设备上,我得到 'isSSLStarted' 'true' 但是当我发送消息时,我的连接被关闭。 谁能帮我分析和解决这个问题? 这是由于握手失败吗?如何检查握手是否成功。

更多细节。 我正在使用 JSON 通信。

SSLContext c = SSLContext.getInstance( "TLS" );
c.init(null, null, null);          
 SslFilter sslFilter = new SslFilter(c);
sslFilter.setUseClientMode(true);
session.getFilterChain().addFirst("mySSL", sslFilter);
session.setAttribute(SslFilter.DISABLE_ENCRYPTION_ONCE, Boolean.TRUE);
--sending msg in JSON
assert session.getAttribute(SslFilter.DISABLE_ENCRYPTION_ONCE) == null;
Log.v(TAG,"isSslStarted:"+sslFilter.isSslStarted(session)); 

==> 为真。

提前致谢。

当我尝试使用普通 java 进行连接时遇到了以下问题。

javax.net.ssl.SSLHandshakeException: SSL handshake failed.
    at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:487)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
    at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:410)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:710)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:664)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:653)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1124)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1619)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1587)
    at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1756)
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1060)
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:884)
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
    at org.apache.mina.filter.ssl.SslHandler.unwrap(SslHandler.java:728)
    at org.apache.mina.filter.ssl.SslHandler.unwrapHandshake(SslHandler.java:666)
    at org.apache.mina.filter.ssl.SslHandler.handshake(SslHandler.java:552)
    at org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:351)
    at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:468)

最佳答案

关于java - 将 ssl 与 Apache Mina 和 android 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525186/

相关文章:

java - 如何将 Multiple 数组转换为 Json 数组并将 Json 添加到 hashmap

windows - 在 Windows 中使用 WinSCP 或其他命令行 FTP 客户端的隐式 TLS FTP 连接

ssl - Jetty SSL 配置 Apache karaf

java - 在我的 Java 项目中使用 TopBraid 中定义的 SPIN 函数

java - 使用 jaxb 进行 JSON 解码

将超过 100 个字符串转换为字节数组时出现 java.lang.OutOfMemoryError

java - FCM 主题名称无效。 Base64 生成带有无效字符的字符串

security - 如果我使用 Stripe,我的电子商务商店是否需要 SSL 证书?

java - 错误: Could not find or load main class Mainclass

java - "Missing return Statement"但我已经有了 return 语句