Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
TLSv1.2 SSL聊天Java,SSLContext不可用_Java_Eclipse_Security_Ssl - Fatal编程技术网

TLSv1.2 SSL聊天Java,SSLContext不可用

TLSv1.2 SSL聊天Java,SSLContext不可用,java,eclipse,security,ssl,Java,Eclipse,Security,Ssl,我在运行SSL聊天程序时遇到问题。我在Ubuntu中使用Eclipse。我尝试运行此代码 import java.net.*; import java.io.*; import javax.net.ssl.*; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.Principal; import java.secur

我在运行SSL聊天程序时遇到问题。我在Ubuntu中使用Eclipse。我尝试运行此代码

 import java.net.*;
import java.io.*;

import javax.net.ssl.*;

import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.Principal;
import java.security.cert.*;

public class SSLSocketClient {

    private static String host;

    public static void main(String[] args) {
        String cipher = null;
        String portNo;
                int port = 0;
        boolean mykeystore = false;
        boolean chat = false;

        if (args.length == 5) {

            for (int i = 0; i < args.length; i++) {

                if (args[i].equals("-host")) {
                    host = args[++i];
                    continue;
                }
                if (args[i].equals("-port")) {
                    portNo = args[++i];
                    port = Integer.parseInt(portNo);
                    continue;
                }
                if (args[i].equals("-cipher")) {
                    cipher = args[++i];
                    continue;
                }
                if (args[i].equals("-chat")) {
                    chat = true;
                    continue;
                }

                if (args[i].equals("-mykeystore")) {
                    mykeystore = true;
                    continue;
                }
            }

        }

        else {
            System.out.println("Please check again parameter!");
        }

        if (mykeystore) {
            System.setProperty("javax.net.ssl.trustStore", "mykeystore");
            System.setProperty("javax.net.ssl.trustStorePassword", "kosuke");
        }

        SSLContext sc;
        try {
            sc = SSLContext.getInstance("TLSv1.2");
            sc.init(null, null, null);
            SSLSocketFactory factory = (SSLSocketFactory) sc.getSocketFactory();
        SSLSocket mysslsocket = (SSLSocket) factory.createSocket(host, port);

            if (cipher != null) {
                String[] cipherarray = { cipher };
                mysslsocket.setEnabledCipherSuites(cipherarray);
            }

            SSLSession session= mysslsocket.getSession();

            X509Certificate cert;


            // cert = (X509Certificate) session.getPeerCertificates()[0];

        //  System.out.println(session.getPeerHost() + "has presented a certificate belonging to: ");
            //Principal p=cert.getSubjectDN();




            //if(chat) {
                //BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
                //BufferedWriter out = new BufferedWriter( new OutputStreamWriter( mysslsocket.getOutputStream()));

                //while(true) {
                    //String s= in.readLine();
                        //if (!s.equals("")) {
                            //out.write(s);
                            //out.write(" \r\n ");
                            //out.flush();
                            //if (s.equals(".")) break;
                    //  }
                //}
        //  }

            mysslsocket.startHandshake();
            mysslsocket.close();

        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (KeyManagementException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
我得到了如下回应:

java.security.NoSuchAlgorithmException: TLSv1.2 SSLContext not available

    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at javax.net.ssl.SSLContext.getInstance(SSLContext.java:142)
    at SSLSocketClient.main(SSLSocketClient.java:61)
我不知道我的代码出了什么问题。我已将密钥库复制到程序源代码中,但仍然无法工作。请帮帮我


谢谢

TLSv1.2
直到Java 7才添加到默认的JCE提供程序中。请参阅和标准算法名称参考


如果您一直使用Java 6或更早版本,并且绝对需要TLS 1.2,请尝试该提供程序。

TLSv1.2
直到Java 7才添加到默认JCE提供程序中。请参阅和标准算法名称参考


如果您仍然坚持使用Java 6或更早版本,并且绝对需要TLS 1.2,请尝试提供程序。

您使用的是哪个版本的JRE?我不知道,我对在Eclipse中使用Java是新手,尤其是在Ubuntu中。这里的问题是JRE吗?好的,我已经用JavaSE1.7创建了这个项目,但仍然不起作用。我的代码中有什么错误吗?在Java7中是否也有同样的错误?您使用的是OpenJDK还是Oracle JDK?您使用的是哪个版本的JRE?我不知道,我对在Eclipse中使用Java是新手,尤其是在Ubuntu中。这里的问题是JRE吗?好的,我已经用JavaSE1.7创建了这个项目,但仍然不起作用。我的代码中有什么错误吗?在Java7中是否也有同样的错误?您使用的是OpenJDK还是Oracle JDK?因此,如果我将java更新为java 7,就不会有问题了?如何将其更新为Java7?我是Java编程新手,尤其是Ubuntu和EclipseTry
sudo apt get install openjdk-7-jdk
。您也可以尝试
TLSv1.1
。所以如果我将Java更新为Java 7就没有问题了?如何将其更新为Java7?我是Java编程新手,尤其是Ubuntu和EclipseTry
sudo apt get install openjdk-7-jdk
。你也可以试试
TLSv1.1
java.security.NoSuchAlgorithmException: TLSv1.2 SSLContext not available

    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at javax.net.ssl.SSLContext.getInstance(SSLContext.java:142)
    at SSLSocketClient.main(SSLSocketClient.java:61)