Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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
运行简单SSL Java示例时出现SSLHandshakeException_Java_Ssl_Sslhandshakeexception - Fatal编程技术网

运行简单SSL Java示例时出现SSLHandshakeException

运行简单SSL Java示例时出现SSLHandshakeException,java,ssl,sslhandshakeexception,Java,Ssl,Sslhandshakeexception,我正在运行这个,但我得到以下错误 main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown at com.sun.net.ssl.internal.ssl.Alerts.getSSL

我正在运行这个,但我得到以下错误

main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    at sun.nio.cs.StreamDecoder.read(Unknown Source)
    at java.io.InputStreamReader.read(Unknown Source)
    at java.io.BufferedReader.fill(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at EchoServer.main(EchoServer.java:24)
发生异常的代码行如下所示:

        while ((string = bufferedreader.readLine()) != null) {

我做错了什么?自编写该示例以来,情况是否发生了变化?

可能由于某种原因,您的证书无效或未加载。启用调试模式可以帮助您找到更多问题

System.setPropertyjavax.net.debug,全部


另外,如果您使用的是自签名证书,请查看:

您使用的链接再次提升了trustmanager的使用,它允许任何内容通过。这样做会破坏使用SSL/TLS的意义,因为活动的MITM可能会欺骗您并使用您信任的任何证书。它还允许任何主机名通过。只是不安全。这正是文章所说的,不安全。但是自签名证书本身是安全的,这就是为什么我说只有在使用自签名证书时才检查链接。无论如何,请注意这一点。如果您希望显式导入自签名证书,并且您可以手动验证它们,例如,有人亲自将其提供给您,或者您自己将其安装在自己的服务器上,则自签名证书并不不安全。在开发环境中,这种代码的危险在于,就项目管理而言,它可以勾选using SSL框,并且永远不会被删除。还有一些应用程序在生产中使用这种材料。导入自签名证书或者使用小型测试CA不需要太多工作。