OpenSSL C ++服务器+ Java客户端:获取"警报证书未知"错误

时间:2012-11-08 23:12:10

标签: java c++ openssl certificate

我使用OpenSSL创建了一个C ++服务器和客户端。我已经设置了一个根证书,我已经签署了一个客户端和一个服务器证书。一切正常我可以双向连接和发送数据。

然后我用Java创建了一个客户端应用程序。按照本教程从我的clientcert.pem和clientkey.pem中生成JKS证书 http://www.agentbob.info/agentbob/79-AB.html

jave代码如下所示:

    SSLSocketFactory factory = null;
    try {
        SSLContext ctx;
        KeyManagerFactory kmf;
        KeyStore ks;
        char[] passphrase = "android".toCharArray();

        ctx = SSLContext.getInstance("TLS");
        kmf = KeyManagerFactory.getInstance("SunX509");
        ks = KeyStore.getInstance("JKS");

        ks.load(new FileInputStream("keystore.ImportKey"), passphrase);

        kmf.init(ks, passphrase);
        ctx.init(kmf.getKeyManagers(), null, null);

        factory = ctx.getSocketFactory();
    } catch (Exception e) {
        e.printStackTrace();
    }

    SSLSocket socket;

    try {
        socket = (SSLSocket) factory.createSocket("server", 10443);

        PrintWriter out;
        out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
                socket.getOutputStream())));

        out.println("Hello from SSL client!");
        out.println();
        out.flush();

        out.close();
        socket.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

然而,当它尝试连接时,我在调用SSL_accept(ssl)时在我的C ++服务器中收到错误。我检查了错误并打印出来:  错误:14094416:SSL例程:SSL3_READ_BYTES:sslv3警报证书未知

知道证书失败的原因吗? 是否有任何教程可以显示如何为OpenSSL和Java创建证书?

0 个答案:

没有答案