【问题标题】:SSLHandshakeException when running simple SSL Java example运行简单 SSL Java 示例时出现 SSLHandshakeException
【发布时间】:2012-05-05 13:31:11
【问题描述】:

我正在运行此 Java + SSL Tutorial,但出现以下错误。

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) {

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

【问题讨论】:

    标签: java ssl sslhandshakeexception


    【解决方案1】:

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

    System.setProperty("javax.net.debug", "all");

    另外,如果您使用自签名证书,请查看:http://ctasada.blogspot.com.es/2010/11/httpclient-use-self-signed-certificates.html

    【讨论】:

    • 您使用的那个链接再次促进了信任管理器的使用,它可以让任何事情通过。这样做会破坏使用 SSL/TLS 的意义,因为活动的 MITM 可能会欺骗您并使用您信任的任何证书。它还允许任何主机名通过。这只是不安全的。
    • 嗯,这正是文章所说的,这是不安全的。但是自签名证书本身就是安全的,这就是为什么我说只有在“它使用自签名证书”时才检查链接。无论如何,你评论它很好。
    • 如果您想明确导入自签名证书,当您可以手动验证它们时(例如,有人将其亲自提供给您,或者您自己将其安装在您自己的服务器上),自签名证书并不是不安全的。开发人员中这种代码的危险。环境是,就项目管理而言,它可以勾选“使用 SSL”框,并且永远不会被删除。有一些应用程序在生产中保留了这种东西。导入自签名证书或拥有一个小型测试 CA 并不需要更多的工作。
    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    相关资源
    最近更新 更多