zoukankan      html  css  js  c++  java
  • java网络编程5-SSL

    服务器端

    System.out.println("等待客户端连接...");
    File keyFile=new File("C:/Users/mu/Desktop/mu.p12");
    InputStream stream=new FileInputStream(keyFile);
    char[] password="123456".toCharArray();
    
    //KeyStore用于存放证书,创建对象时 指定交换数字证书的加密标准
    KeyStore keyStore=KeyStore.getInstance("pkcs12"); //KeyStore.getInstance(KeyStore.getDefaultType());
    keyStore.load(stream, password);
    stream.close();
    
    //KeyManager选择证书证明自己的身份
    KeyManagerFactory keyManagerFactory=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    keyManagerFactory.init(keyStore,password);
    KeyManager[] keyManagers=keyManagerFactory.getKeyManagers();
    
    //TrustManager决定是否信任对方的证书
    TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    trustManagerFactory.init(keyStore);
    TrustManager[] trustManagers=trustManagerFactory.getTrustManagers();
    
    SSLContext context=SSLContext.getInstance("SSL");
    context.init(keyManagers, trustManagers, null);
    SSLServerSocketFactory factory=context.getServerSocketFactory();
    SSLServerSocket serverSocket=(SSLServerSocket)factory.createServerSocket(3344);
    SSLSocket socket=(SSLSocket)serverSocket.accept();
    
    System.out.println("有客户端连接");
    System.out.println("向客户端输出信息");
    OutputStream outputStream=socket.getOutputStream();
    BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(outputStream));
    writer.write("hello world
    ");
    writer.write("
    ");
    writer.flush();
    System.out.println("输出结束");
    socket.close();
    serverSocket.close();

    客户端

    System.out.println("准备连接服务端");
    File keyFile=new File("C:/Users/mu/Desktop/mu.p12");
    InputStream stream=new FileInputStream(keyFile);
    char[] password="123456".toCharArray();
    
    //指定交换数字证书的加密标准
    KeyStore keyStore= KeyStore.getInstance("pkcs12");//KeyStore.getInstance(KeyStore.getDefaultType());
    keyStore.load(stream, password);
    stream.close();
    
    //TrustManager决定是否信任对方的证书
    TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    trustManagerFactory.init(keyStore);
    TrustManager[] trustManagers=trustManagerFactory.getTrustManagers();
    
    SSLContext context=SSLContext.getInstance("SSL");
    context.init(null, trustManagers, null);
    SSLSocketFactory factory=context.getSocketFactory();
    SSLSocket socket=(SSLSocket) factory.createSocket("localhost", 3344);
    
    InputStream inputStream=socket.getInputStream();
    BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
    String str=null;
    while ((str=reader.readLine())!=null) {
        if(str.equals(""))
            break;
        System.out.println(str);
    }
    socket.close();
  • 相关阅读:
    瀑布流 jquery。
    LeetCode: Validate Binary Search Tree [098]
    【WebService】使用JDK开发WebService(二)
    【WebService】WebService基础知识(一)
    【Apache】Apache服务的基本概念(二)
    【Apache】Apache服务的安装(一)
    【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)
    【Linux】DNS服务-BIND基础配置(二)
    【Linux】DNS基础(一)
    【Web】Nginx 反向代理与负载均衡
  • 原文地址:https://www.cnblogs.com/mu-mu/p/4065260.html
Copyright © 2011-2022 走看看