Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用TLSv1.3时,是否可以为TLS连接设置设置密码套件?_Android_Encryption_Sslhandshakeexception_Tls1.3 - Fatal编程技术网

Android 使用TLSv1.3时,是否可以为TLS连接设置设置密码套件?

Android 使用TLSv1.3时,是否可以为TLS连接设置设置密码套件?,android,encryption,sslhandshakeexception,tls1.3,Android,Encryption,Sslhandshakeexception,Tls1.3,我正在开发一个应用程序,在其中设置两个设备之间的TLS连接。我使用的是TLSv1.3,但当我尝试像这样设置密码套件时: String[] protocolCHACHA = new String[1]; protocolCHACHA[0]= "TLS_CHACHA20_POLY1305_SHA256"; String [] tlsVersion = new String[1]; tlsVersion [0] = "TLSv1.3"; SSLServerS

我正在开发一个应用程序,在其中设置两个设备之间的TLS连接。我使用的是TLSv1.3,但当我尝试像这样设置密码套件时:

String[] protocolCHACHA = new String[1];
protocolCHACHA[0]= "TLS_CHACHA20_POLY1305_SHA256";

String [] tlsVersion = new String[1];
tlsVersion [0] = "TLSv1.3";

SSLServerSocket serverSocket = (SSLServerSocket) serverSSLContext.getServerSocketFactory().createServerSocket(0);
serverSocket.setEnabledProtocols(tlsVersion);   
serverSocket.setEnabledCipherSuites(protocolCHACHA);
我得到一个javax.net.ssl.SSLHandshakeException

   2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err: javax.net.ssl.SSLHandshakeException: Handshake failed
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:305)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.android.org.conscrypt.ConscryptFileDescriptorSocket.waitForHandshake(ConscryptFileDescriptorSocket.java:510)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.android.org.conscrypt.ConscryptFileDescriptorSocket.getInputStream(ConscryptFileDescriptorSocket.java:473)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.example.testaware.AppServer.lambda$new$0$AppServer(AppServer.java:124)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.example.testaware.-$$Lambda$AppServer$vHnVsGrXrL1ybKsPtFi9r-AJTKQ.run(Unknown Source:8)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at java.lang.Thread.run(Thread.java:919)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7282fc4908: Failure in SSL library, usually a protocol error
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err: error:100000ae:SSL routines:OPENSSL_internal:NO_CERTIFICATE_SET (external/boringssl/src/ssl/tls13_server.cc:689 0x7278a83e6b:0x00000000)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:387)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:     at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:234)
2021-05-05 11:40:19.131 2932-15842/com.example.testaware W/System.err:  ... 5 more
有人知道为什么吗?不可能决定使用哪个密码套件吗?如果我删除
serverSocket.setEnablediPhone套件(protocolCHACHA)我也不例外。

根据Conscrypt的文档

TLS 1.3密码套件无法定制;当启用TLS 1.3时,它们始终处于启用状态,任何通过调用setEnabledChiperSuites()禁用它们的尝试都将被忽略

尽管如此,我还是通过谷歌搜索我收到的相同的“NO_CERTIFICATE_SET”错误消息找到了这个线程。我的代码也试图设置密码,所以我想你刚刚解决了我的问题