ssl中的certificate_unknown异常

时间:2016-04-06 13:35:44

标签: java ssl

我有一个服务器和客户端,他们都使用ssl在彼此之间进行通信。之前自签名的sslkeystore在服务器上过期,因此我使用扩展的有效性生成了一个具有相同详细信息的新的sslkeystore。但是现在当我尝试从客户端与服务器通信时,我得到以下异常。

javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1991)

直到我更新密钥库才开始工作。

它从以下代码块创建异常。当我尝试阅读BufferedInputStream bis

    private byte[] readBytesFromStream(BufferedInputStream bis) throws IOException {

    byte[] lengthBytes = new byte[4];
    bis.read(lengthBytes);
    int length = ByteBuffer.wrap(lengthBytes).getInt();
    System.out.print("length : " + length);

    byte[] data = new byte[length];
    bis.read(data);

    return data;
}

我应该做些什么来反映更新的密钥库。

1 个答案:

答案 0 :(得分:0)

我必须使客户端中的密钥库信任服务器的公钥。然后它开始工作。此外,我在网上发现了一个很好的工具,它有助于用密钥库和证书来处理这种事情,它叫做portecle(https://sourceforge.net/projects/portecle/