问题描述
标题是我的问题。每当我尝试在使用 SSLSocketFactory 时用 SSLSocket 替换所有 Socket 实例时,Android(我使用的是 API 级别 23)都会给我一个错误。我相信握手失败是因为 Android 需要在 SSLSocket 中实现一定的安全级别才能使其工作。但是,我不知道如何做到这一切。这是我第一次处理 SSLSockets 和加密,但我知道我想要一个基于 RSA 的 SSLSocket 和客户端授权。我被困在涉及创建我自己的公钥和私钥的部分,并且有一些关于 CA 证书和密钥库的东西 - 我不明白我将如何实现这一点,如果它在设备之间,我什至需要 CA 证书吗?一样的WiFi?我没有将任何东西连接到网络。
我附上了我之前在服务器端和客户端上尝试的重新创建,用于创建带有 Android 错误的 SSLSocket。澄清和示例代码将不胜感激。谢谢。
@Override
public int onStartCommand(Intent intent,int flags,int startId) {
new Thread() {
public void run() {
try {
//server side
int port = 8000;
SSLServerSocketFactory sslServerSocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
serverSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(port);
serverSocket.setEnabledProtocols(new String[]{"TLSv1.2"});
while (serverSocket != null && !serverSocket.isClosed()) {
SSLSocket socket = (SSLSocket) serverSocket.accept();
//socket.setKeepAlive(true);
}
} catch (IOException e) {
e.printstacktrace();
}
}
}.start();
return START_STICKY;
}
//client side - would be on a different device in a real use case
public void clientConnect() {
int port = 8000;
SSLSocketFactory f = (SSLSocketFactory) SSLSocketFactory.getDefault();
socket = f.createSocket("192.168.1.175",port);
}
尝试在 Android 上已建立的连接之间发送数据时遇到的错误是:
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: javax.net.ssl.SSLHandshakeException: Read error: ssl=0x75b6f94808: Failure in SSL library,usually a protocol error
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: error:100000b8:SSL routines:OPENSSL_internal:NO_SHARED_CIPHER (external/boringssl/src/ssl/handshake_server.cc:705 0x760bfc205a:0x00000000)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.SSLUtils.toSSLHandshakeException(SSLUtils.java:362)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.convertException(ConscryptEngine.java:1134)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:919)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:747)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:712)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket$SSLInputStream.processDataFromSocket(ConscryptEnginesocket.java:849)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket$SSLInputStream.access$100(ConscryptEnginesocket.java:722)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.doHandshake(ConscryptEnginesocket.java:238)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.startHandshake(ConscryptEnginesocket.java:217)
2021-01-25 21:24:07.423 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.waitForHandshake(ConscryptEnginesocket.java:563)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.getoutputStream(ConscryptEnginesocket.java:298)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.harout.smssync.SharedResources.send(SharedResources.java:46)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.harout.smssync.MainActivity$2$1.run(MainActivity.java:81)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: Caused by: javax.net.ssl.SSLProtocolException: Read error: ssl=0x75b6f94808: Failure in SSL library,usually a protocol error
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: error:100000b8:SSL routines:OPENSSL_internal:NO_SHARED_CIPHER (external/boringssl/src/ssl/handshake_server.cc:705 0x760bfc205a:0x00000000)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(Native Method)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:568)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.readplaintextDataDirect(ConscryptEngine.java:1095)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.readplaintextData(ConscryptEngine.java:1079)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:876)
2021-01-25 21:24:07.424 9003-9388/com.harout.smssync W/System.err: ... 10 more
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)