小编Sig*_*Seg的帖子

Java JSSE TLS - 此连接是否在两个方向上安全加密?

在Java中使用JSSE和TLS.我在服务器和客户端之间创建了一个安全套接字.在最终安全地连接套接字之后,我仍然有一个关于我现有代码安全性的基本问题.我按照教程中的说明进行操作,有时JavaDoc中的文档非常精确,但有点模糊,除非你说的是Swaheli方言的术语....

我现在已经在C++中进行了一段时间的网络编程.过渡到Java很容易.然而,最近我发现使交通安全是明智的.这是说:

我想以与Web浏览器创建安全套接字相同的方式创建安全套接字,因此双向流量都是加密的.客户端可以看到他们从服务器发送的个人帐户信息(如果被截获则非常糟糕),并且客户端可以安全地将他们的用户名和密码发送到服务器(如果被截获也非常糟糕).

我知道公钥加密的工作原理,但仅对公钥加密有副作用.您将公钥发送到客户端,客户端使用公钥加密,并将数据发送到服务器,只有服务器可以解密.根据我的理解,服务器使用私钥来加密发往客户端的消息,并且需要添加另一层安全性以防止任何拥有公钥的人能够解密它.

  1. 我有一个存储在public.key和private.key文件中的公钥/私钥对(我使用JSSE的keytool实用程序制作了这些对)
  2. 我在客户端中包含了public.key
  3. 我在服务器中包含了private.key

客户类:

    KeyStore keyStore;
    TrustManagerFactory tmf;
    KeyManagerFactory kmf;
    SSLContext sslContext;
    SecureRandom secureRandom = new SecureRandom();
    secureRandom.nextInt();

        keyStore = KeyStore.getInstance("JKS");
        keyStore.load(this.getClass().getClassLoader().getResourceAsStream("server.public"),"public".toCharArray());
        tmf = TrustManagerFactory.getInstance("SunX509");
        tmf.init(keyStore);
        kmf = KeyManagerFactory.getInstance("SunX509");
        kmf.init(keyStore, "public".toCharArray());
        sslContext = SSLContext.getInstance("TLS");
        sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), secureRandom);
        SSLSocketFactory sslsocketfactory = sslContext.getSocketFactory();
        SSLSocket sslsocket = (SSLSocket)sslsocketfactory.createSocket("localhost", 9999);
Run Code Online (Sandbox Code Playgroud)

服务器类:

    String passphrase = "secret"
    KeyStore keyStore;
    TrustManagerFactory tmf;
    KeyManagerFactory kmf;
    SSLContext sslContext;
    SecureRandom secureRandom = new SecureRandom();
    secureRandom.nextInt();

        keyStore = KeyStore.getInstance("JKS");
        keyStore.load(this.getClass().getClassLoader().getResourceAsStream("server.private"),passphrase.toCharArray());
        tmf = TrustManagerFactory.getInstance("SunX509");
        tmf.init(keyStore);
        kmf = KeyManagerFactory.getInstance("SunX509"); …
Run Code Online (Sandbox Code Playgroud)

java ssl network-programming jsse

5
推荐指数
2
解决办法
3173
查看次数

标签 统计

java ×1

jsse ×1

network-programming ×1

ssl ×1