• 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();
  • 相关阅读:
    预防XSS攻击的一些方法整理
    Linux常用的命令集
    Linux根目录下各文件夹说明
    ThinkPHP框架3.2版本学习总结
    【ThinkPHP框架3.2版本学习总结】九、知识补充
    【ThinkPHP框架3.2版本学习总结】八、关联模型
    【ThinkPHP框架3.2版本学习总结】七、Ajax应用
    【ThinkPHP框架3.2版本学习总结】六、多表连接
    【ThinkPHP框架3.2版本学习总结】五、实用项
    tmux
  • 原文地址:https://www.cnblogs.com/mu-mu/p/4065260.html
Copyright © 2020-2023  润新知