Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/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
Java SSL javax.net.SSL.SSLException:收到致命警报:内部错误_Java_Ssl - Fatal编程技术网

Java SSL javax.net.SSL.SSLException:收到致命警报:内部错误

Java SSL javax.net.SSL.SSLException:收到致命警报:内部错误,java,ssl,Java,Ssl,我终于设法在客户端和服务器之间使用SSL。。。至少在直接从Netbeans运行时 客户端网络初始化代码: private Network(final String hostname, final int port) { try { URL resource = getClass().getResource("/truststore/TCGtruststore.jks"); if (resource == null) { Contro

我终于设法在客户端和服务器之间使用SSL。。。至少在直接从Netbeans运行时

客户端网络初始化代码:

private Network(final String hostname, final int port) {
    try {
        URL resource = getClass().getResource("/truststore/TCGtruststore.jks");
        if (resource == null) {
            Controller.getInstance().write(MessageType.DEBUG, "Could not load trust store.");
            throw new IllegalStateException("network.Network: Could not load trust store.");
        }
        else {
            Controller.getInstance().write(MessageType.LOG, "Loaded trust store.");
        }
        System.setProperty("javax.net.ssl.trustStore", resource.getPath());  
        System.setProperty("javax.net.ssl.trustStorePassword", "tcgadmin"); 

        Socket baseSocket = new Socket();
        baseSocket.connect(new InetSocketAddress(hostname, port), Config.TIMEOUT);
        SSLSocketFactory socketFactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
        clientSocket = (SSLSocket)socketFactory.createSocket(baseSocket, hostname, port, true);
        clientSocket.startHandshake();
        out = new PrintWriter(clientSocket.getOutputStream(), true);     
        in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        connected = true;
    } catch (IOException ex) { 
        connected = false;
    }

    waitForServer = new HashMap<>();
}
public Server(final int port) {
    this.port = port;
    try {
        URL resource = getClass().getResource("/keystore/TCGkeystore.jks");
        if (resource == null) {
            throw new IllegalStateException("server.Server: Could not load key store.");
        }
        System.setProperty("javax.net.ssl.keyStore", resource.getPath());  
        System.setProperty("javax.net.ssl.keyStorePassword", "tcgadmin"); 

        //serverSocket = new ServerSocket(port);
        serverSocket = (SSLServerSocket)SSLServerSocketFactory.getDefault().createServerSocket(port);
    } catch (IOException ex) {
        Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
    }        
}
然而,当我清理和构建它,并在Netbeans之外运行它时,它会崩溃。 令人惊讶的是,客户机仍然表现良好,但服务器开始奇怪地显示以下消息:

mei 20, 2013 4:36:16 PM server.ServerConnectionReceiver run
SEVERE: null
javax.net.ssl.SSLException: Received fatal alert: internal_error
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1977)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1093)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882)
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.readLine(BufferedReader.java:317)
    at java.io.BufferedReader.readLine(BufferedReader.java:382)
    at server.ServerConnectionReceiver.run(ServerConnectionReceiver.java:45)
    at java.lang.Thread.run(Thread.java:722)
来自客户端的命令行代码:

[16:36:15] [Log] Loaded trust store.
[16:36:16] [Log] Could not establish a connection with the server.
有人知道哪里出了问题吗

  • 当服务器同时从netbeans和客户端运行时,一切都正常
  • 当服务器通过命令行从netbeans和客户机内部运行时,服务器会给出一个异常
  • 当我试图从命令行运行服务器时,它给出了一个错误。(我正要从命令行测试它是否可以同时使用这两个命令行,但不幸的是,我无法测试这两个命令行)
问候