Browse Source

[FIX] ssl connections

Gogs 7 years ago
parent
commit
a2a592faa7

BIN
resources/jetty-util-9.4.7.v20170914.jar


+ 0 - 18
resources/jetty.csr

@@ -1,18 +0,0 @@
------BEGIN NEW CERTIFICATE REQUEST-----
-MIIC9DCCAdwCAQAwfzELMAkGA1UEBhMCUFkxFDASBgNVBAgTC0FsdG8gUGFyYW5h
-MRgwFgYDVQQHEw9DaXVkYWQgZGVsIEVzdGUxFjAUBgNVBAoTDUVpcnUgU29mdHdh
-cmUxETAPBgNVBAsTCFNvZnR3YXJlMRUwEwYDVQQDEwxSb2JlcnQgR2F1dG8wggEi
-MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbLaxCR02sT935lhAfriAR68XF
-+WcKUdTQnhG0L3JyPEhzP5tLO30S77fTD0PRkUxpCRMJlBSkc3Zq3Irv+itQSlSi
-PRp4ZspEeVMVsxfYFius+na9qltTtUdSFpsF4AvTAVS88oRq/Bp1ovff3krg8ser
-hTvgjbXfJZfEcg/fPzPjQnm9X7ZK8ijnL5p0g9Tf5IDGbENuaohpZaj1YgRoWcyh
-14rbsJrafMAD8s5YKJaOE4w8QhMe+DXx5goF0udw01JRD6bZOoRmx2MEupVWmEWf
-JerwB3T9O8UsymxKqqp0rTEmI+tW9SV1laZ3j2ROkk5mJVLKD8jdAg3P3R+/AgMB
-AAGgMDAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBSkFC8ntYWtSR4GdrkQUlQp
-pi+/DDANBgkqhkiG9w0BAQsFAAOCAQEAiReL+yKfAtMSNTG8LqvPIN5CY+8kLB8S
-79sg+MlCBAtSEpZKBlgJJgWBL22MObyYssIADgCtRw6ZCIevLaWQJR0AJrop1WuZ
-EeSy+Fv8zJMlZPIxiy54hfBFmW9QCpGHHMKlF7sAGRUwN8IhHMhYjpzhK7/JJMZy
-RugrM2rJaRsYFT+svOIIaWC8ZC1qcvJuoA3oZwGGJ3dFbwqJXi+QeJbtqFJqsuAg
-fj5i+n+a1aAAXjGcZHobxLV0dNdROuK6cvSJKKS3Isu3VTIbeHTX8AzwwodnzAHz
-LQw0F+546IDzae9pmAngxcPuhOHpOdcuWTCY618mEpG5F5UuzuRpNQ==
------END NEW CERTIFICATE REQUEST-----

BIN
resources/keystore.jks


BIN
resources/keystore.jks.old


BIN
resources/printers-tray.jks


+ 23 - 0
resources/root-ca.crt

@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDxzCCAq+gAwIBAgIEb1l91DANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMC
+UFkxFDASBgNVBAgTC0FsdG8gUGFyYW5hMRgwFgYDVQQHEw9DaXVkYWQgZGVsIEVz
+dGUxFjAUBgNVBAoTDUVpcnUgU29mdHdhcmUxFjAUBgNVBAsTDUVpcnUgU29mdHdh
+cmUxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xODAxMjQxODQxMzRaFw0yMzAxMjMx
+ODQxMzRaMIGBMQswCQYDVQQGEwJQWTEUMBIGA1UECBMLQWx0byBQYXJhbmExGDAW
+BgNVBAcTD0NpdWRhZCBkZWwgRXN0ZTEWMBQGA1UEChMNRWlydSBTb2Z0d2FyZTEW
+MBQGA1UECxMNRWlydSBTb2Z0d2FyZTESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi0kPBMJ/ToFe5bv0t5rQEOpB5Vjd
+nobGtd3paRUcJrMipIJEWAenvE1k92PNqLGxh64A1md6U7qA4tB239nAhn0CTVFt
+xS5bvT71W0gzL1gDCMP7SE8VXw8faUJtiJZRIrLLV6w92vQTEh3b9SW+ffnwXR3K
+fKxl8vtVilQmxh0SwFaePQTtKcOszhzjBN29RaAjcDLjPgHvxE9ZNfDljf0V5Su9
+QjajiWQt7R4Pj60dUNC0GpSRvCaayAdfCa/KrHahYrIrNpznVO6EEmmFin2ggSml
+l4UCwSVI//SktLuNq3fal/x8L/M+4zUTE+mXmxDrdcAAX2oQDvZpkYT8BQIDAQAB
+o0UwQzASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E
+FgQUCaysP2/nIMmSxT3zrgpZfnL9gLkwDQYJKoZIhvcNAQELBQADggEBAClckX02
+RWZxHWLpU5MdUJg1nsSEe5g3s6WqIgh67CiIuhNJ45xC+Nwl1l0UhBMF/Iz0rCId
+XyNuXohq7zP53knP2AhK7vSDEBXji+2JIK+yNtU0qK6d7aavdpgHljdCkM/TqfW1
+bpEzT7698vthPxJW/FXTiyd2jV/xUXyxFfHtsmknIAObTOgrjmrjuRxkAMyjgBzq
+/70k91kSD5IOviMuoHcf+2O9LOKh0xHmseMxBGHtGeEhaFYlVN/+pPy69GMOqGBh
+NiZlwwwBmTGKcKcrEbub3wm+NS+DpRDOlzaXeezFQTxVrsz7x2HZrtt9bmHyJaQ2
+FYRVpX+dIfc0P5c=
+-----END CERTIFICATE-----

+ 63 - 0
src/main/java/org/robert/printer/auth/Certificate.java

@@ -0,0 +1,63 @@
+package org.robert.printer.auth;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+
+public class Certificate {
+
+	private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+
+	private String fingerprint;
+    private String commonName;
+    private String organization;
+    private Date validFrom;
+    private Date validTo;
+
+    private boolean valid = false;
+
+    public static final Certificate UNKNOWN;
+    public static final Certificate EXPIRED;
+    public static final Certificate UNSIGNED;
+
+    static {
+    	 HashMap<String,String> map = new HashMap<String, String>();
+         map.put("fingerprint", "UNKNOWN REQUEST");
+         map.put("commonName", "An anonymous request");
+         map.put("organization", "Unknown");
+         map.put("validFrom", "0000-00-00 00:00:00");
+         map.put("validTo", "0000-00-00 00:00:00");
+         map.put("valid", "false");
+         UNKNOWN = Certificate.loadCertificate(map);
+
+         map.put("fingerprint", "EXPIRED REQUEST");
+         map.put("commonName", ""); //filled in per request
+         map.put("organization", ""); //filled in per request
+         EXPIRED = Certificate.loadCertificate(map);
+
+         map.put("fingerprint", "UNSIGNED REQUEST");
+         UNSIGNED = Certificate.loadCertificate(map);
+    }
+
+    public static Certificate loadCertificate(HashMap<String,String> data) {
+        Certificate cert = new Certificate();
+
+        cert.fingerprint = data.get("fingerprint");
+        cert.commonName = data.get("commonName");
+        cert.organization = data.get("organization");
+
+        try {
+            cert.validFrom = cert.dateFormat.parse(data.get("validFrom"));
+            cert.validTo = cert.dateFormat.parse(data.get("validTo"));
+        }
+        catch(Exception e) {
+            cert.validFrom = new Date(0);
+            cert.validTo = new Date(0);
+        }
+
+        cert.valid = Boolean.parseBoolean(data.get("valid"));
+
+        return cert;
+    }
+}

+ 2 - 1
src/main/java/org/robert/printer/ws/PrintersSocketHandler.java

@@ -14,6 +14,7 @@ import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
 import org.eclipse.jetty.websocket.api.annotations.WebSocket;
 import org.json.JSONException;
 import org.json.JSONObject;
+import org.robert.printer.auth.Certificate;
 import org.robert.printer.common.PrinterProcessor;
 import org.robert.printer.common.PrintersDiscovery;
 
@@ -36,7 +37,7 @@ public class PrintersSocketHandler {
 	 */
 	@OnWebSocketConnect
 	public void onConnect(Session session) {
-		this.getConnections().put(session.getRemoteAddress().getPort(), new SocketConnection());
+		this.getConnections().put(session.getRemoteAddress().getPort(), new SocketConnection(Certificate.UNKNOWN));
 
 		UUID socketId = UUID.randomUUID();
 		System.out.println(socketId);

+ 4 - 8
src/main/java/org/robert/printer/ws/PrintersSocketServer.java

@@ -71,14 +71,9 @@ public class PrintersSocketServer {
 
 		SslContextFactory sslContext = new SslContextFactory();
 
-		sslContext.setKeyStorePath(this.getClass().getResource("/resources/keystore.jks").toExternalForm());
-		sslContext.setKeyStorePassword("robert2206");
-
-		System.out.println("----------------------------------------------------");
-		System.out.println(sslContext.getKeyStoreType());
-		System.out.println(sslContext.isTrustAll());
-		System.out.println(sslContext.isValidateCerts());
-		System.out.println("----------------------------------------------------");
+		sslContext.setKeyStorePath(this.getClass().getResource("/resources/printers-tray.jks").toExternalForm());
+		sslContext.setKeyStorePassword("robert2206b");
+		sslContext.setKeyManagerPassword("robert2206a");
 
 		SslConnectionFactory sslConnection = new SslConnectionFactory(sslContext, HttpVersion.HTTP_1_1.asString());
 
@@ -105,6 +100,7 @@ public class PrintersSocketServer {
 		this.server.join();
 	}
 
+
 	/**
 	 * @throws Exception
 	 *

+ 7 - 0
src/main/java/org/robert/printer/ws/SocketConnection.java

@@ -1,6 +1,13 @@
 package org.robert.printer.ws;
 
+import org.robert.printer.auth.Certificate;
+
 public class SocketConnection {
 
+	private Certificate certificate;
+
+	public SocketConnection(Certificate certificate) {
+		this.certificate = certificate;
+	}
 
 }