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();
  • 相关阅读:
    hiho150周
    hdu1011
    hiho1055/hdu1561
    bat脚本启动exe并打开文件后退出 + 中文乱码
    hiho1080
    hiho1079
    java异常处理——基础篇
    找不到要编译的文件——path环境变量配置
    MVC——studying
    轻松搞定EasyUI
  • 原文地址:https://www.cnblogs.com/mu-mu/p/4065260.html
Copyright © 2011-2022 走看看