Java相互认证-客户端服务器

标签 java ssl client-server mutual-authentication

我正在编写一个简单的 Java 客户端/服务器程序,其中只需与服务器建立连接并向其发送一个句子,然后服务器发送相应的响应。这实际上是一个直接的例子。

在上述场景中,我正在寻找基于 SSL 的相互身份验证。 我需要在 java 中实现它。

如果您有任何示例或如何在 Java 中实现相同的示例,请建议我。

最佳答案

当您说“客户端/服务器”时,是指使用 Socket 吗?但 SSL 通常用于 HTTP 连接。我还没有看到它用于套接字连接。 这是 HTTP 的示例: 您必须将 PKCS12 证书加载到 keystore 中,并将该存储提供给 SSLContext。

private SSLSocketFactory getFactory( File pKeyFile, String pKeyPassword ) throws ... {
      KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509);
      KeyStore keyStore = KeyStore.getInstance("PKCS12");

      InputStream keyInput = new FileInputStream(pKeyFile);
      keyStore.load(keyInput, pKeyPassword.toCharArray());
      keyInput.close();

      keyManagerFactory.init(keyStore, pKeyPassword.toCharArray());

      SSLContext context = SSLContext.getInstance("TLS");
      context.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());

      return context.getSocketFactory();
    }

    URL url = new URL("someurl");
    HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
    con.setSSLSocketFactory(getFactory(new File("file.p12"), "secret"));

关于Java相互认证-客户端服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23429775/

相关文章:

java - 将两个代码点表情符号放入字符串中?

ssl - 创建供本地使用的 EV SSL 证书

java - 客户端如何找到服务器的端口号?

c - 将字符串复制到 malloc 的 char 数组中失败并出现段错误

java - 如何保护客户端/服务器套接字通信

java - 找不到适合 ArrayAdapter(MainListActivity.GetBlogPostsTask,int,String[]) 的构造函数

java - 制作菜单时在Java中创建while循环

php - 如何与 PHP 建立 SSL 连接

ssl - 实现 SSL 后,Twilio 消息传递请求未到达 nginx

java - 如何从java JUnit中的.properties文件获取文件名?