如何在客户端/服务器之间创建定制的安全套接字连接?

我正在开发一个基于Java套接字的客户端/服务器应用程序,并且我想了解如何使这些安全/加密的指南。 所以,我一直在阅读关于SSL,安全性,公钥和私钥加密,对称和非对称方法的最近两周内的内容,并且我希望通过以下方法实现客户端/服务器之间的安全连接:

服务器:创建用于加密的公钥和用于解密的私钥

客户端:使用服务器的公钥将其凭证与请求的时间戳一起加密,以便每次他想要验证自己时加密值不会相同。 附加到此消息的客户端还包括客户端/服务器应连接的共享密钥(对称加密)。

服务器:用他的私钥解密消息,检查用户的凭证和时间戳。 如果凭证是正确的,那么它使用对称密钥发送成功响应。

其余的沟通继续与客户的对称密钥。

下面的Java代码是如何使用SSL套接字实现SSL通信的一个示例。 clientKeyStore.jks是持有服务器公钥的客户端Java密钥库。 当我想创建一个套接字时,客户端使用公钥来启动通信。 我的问题是对称密钥交换发生在哪里(如果它发生?)。 是否有任何我应该考虑的漏洞,还是从中间人攻击中安全?

先谢谢你

SSLSocketServer

    public class SSLSocketServer {
       private SSLServerSocket serverSocket;

       public SSLSocketServer(int port) throws IOException {
          System.setProperty("javax.net.ssl.keyStore","serverKeyStore.jks");
          System.setProperty("javax.net.ssl.keyStorePassword", "serverKeyStorePass");

          SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
          serverSocket = (SSLServerSocket) factory.createServerSocket(port);
          start();
       }

       public void start() {
          while (true) {
             try {
                // Client is connected
                SSLSocket clientSocket = (SSLSocket) serverSocket.accept();
                System.out.println("User connected successfully?");
             } // try
             catch (IOException e) {
                e.printStackTrace();
             } // catch
          } // while
       } // run
    } // class SSLSocketServer

SSLSocketClient

    public class SSLSocketClient {
       public SSLSocketClient(String serverHost, int serverPort) throws UnknownHostException, IOException {
          System.setProperty("javax.net.ssl.trustStore","clientKeyStore.jks");
          System.setProperty("javax.net.ssl.trustStorePassword", "clientKeyStorePass");
          SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
          SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(serverHost, serverPort);
       } // SocketClient()
    } // class SSLSocketClient
链接地址: http://www.djcxy.com/p/21803.html

上一篇: How to create a custom secure socket connection between client/server?

下一篇: SSL handshake process