Java 模拟服务器

Java 模拟服务器,java,ssl,server,impersonation,handshake,Java,Ssl,Server,Impersonation,Handshake,这是我的问题:我有一个Android应用程序,它通过HTTP消息和SSL与特定服务器上的API通信,该服务器具有IP地址IP_服务器。我想模拟API,在我的计算机上接收来自应用程序(来自我的智能手机)的消息,并根据我的需要(根据API协议)响应它们。为此,在路由器中,我将IP_服务器的路由重定向到本地网络,并将IP_服务器IP地址分配给我的计算机。然后,我运行一个Java服务器,该服务器使用SSLSocket监听端口443。在这个阶段,当应用程序想要通信时,我会收到连接请求。但是,握手失败。我认

这是我的问题:我有一个Android应用程序,它通过HTTP消息和SSL与特定服务器上的API通信,该服务器具有IP地址IP_服务器。我想模拟API,在我的计算机上接收来自应用程序(来自我的智能手机)的消息,并根据我的需要(根据API协议)响应它们。为此,在路由器中,我将IP_服务器的路由重定向到本地网络,并将IP_服务器IP地址分配给我的计算机。然后,我运行一个Java服务器,该服务器使用SSLSocket监听端口443。在这个阶段,当应用程序想要通信时,我会收到连接请求。但是,握手失败。我认为这是一个证书问题,但我不确定,我不知道如何解决这个问题

public static void startServer() throws Exception
{
   SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
   SSLServerSocket sslserversocket = (SSLServerSocket) sslserversocketfactory.createServerSocket(443);

   while (running)
   {
       // Listen.
       SSLSocket clientSocket = (SSLSocket)sslserversocket.accept();

       System.out.println("Connection accepted from:" +
                           clientSocket.toString());

       clientSocket.startHandshake(); // This line causes a timeout.

       // Handle the request.
       threadPool.execute(new ServerThread(clientSocket));
   }
}

谢谢你的帮助

实现这一点的简单方法是设计您的客户端,以便您可以插入任何排序的IP地址。这使得测试变得容易,因为您可以正常运行测试服务器,客户端将连接到它。这两个概念——注入()和——都是您应该学习的软件工程原理。@markspace这与SSL握手问题有什么关系?你读过问题中的文字了吗?我可以在笔记本电脑上运行SSL。这不是问题。如果OP需要关于如何在测试系统上配置SSL的建议,他应该问。他展示的那些垃圾Java代码对服务器配置没有任何作用。如果他需要服务器方面的帮助,为什么要向我们展示客户机代码?SSL的全部要点是您无法做到这一点。这基本上是一次MITM攻击。任何半正常的HTTPS客户端都会检测到这一点和baulk。因此,除非证书在您的控制下,否则您无法执行此操作。你也不应该这样做——因为显而易见的原因。