HTTPS Server Proxy : HTTPS « Security « Java Tutorial






import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;

import javax.net.ssl.SSLServerSocketFactory;

public class MainClass {
  public static void main(String args[]) throws Exception {
    SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
    ServerSocket ss = ssf.createServerSocket(443);
    while (true) {
      Socket s = ss.accept();
      PrintStream out = new PrintStream(s.getOutputStream());
      BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
      String info = null;
      String request = null;
      String refer = null;

      while ((info = in.readLine()) != null) {
        if (info.startsWith("GET")) {
          request = info;
        }
        if (info.startsWith("Referer:")) {
          refer = info;
        }
        if (info.equals(""))
          break;
      }
      if (request != null) {
        out.println("HTTP/1.0 200 OK\nMIME_version:1.0\nContent_Type:text/html");
        int sp1 = request.indexOf(' ');
        int sp2 = request.indexOf(' ', sp1 + 1);
        String filename = request.substring(sp1 + 2, sp2);
        if (refer != null) {
          sp1 = refer.indexOf(' ');
          refer = refer.substring(sp1 + 1, refer.length());
          if (!refer.endsWith("/")) {
            refer = refer + "/";
          }
          filename = refer + filename;
        }
        URL con = new URL(filename);
        InputStream gotoin = con.openStream();
        int n = gotoin.available();
        byte buf[] = new byte[1024];
        out.println("HTTP/1.0 200 OK\nMIME_version:1.0\nContent_Type:text/html");
        out.println("Content_Length:" + n + "\n");
        while ((n = gotoin.read(buf)) >= 0) {
          out.write(buf, 0, n);
        }
        out.close();
        s.close();
        in.close();
      }
    }
  }
}








36.45.HTTPS
36.45.1.HTTPS Client
36.45.2.HTTPS Server
36.45.3.HTTPS Server using the JSSE
36.45.4.Certification for HTTPS
36.45.5.HTTPS Server Proxy
36.45.6.Use HTTPS Server to transfer File
36.45.7.HTTPS Server Authentication
36.45.8.Https Socket Client
36.45.9.Disabling Certificate Validation in an HTTPS Connection