From 7d7b762d38e3933435e70a8e0d6f13cb62807e5a Mon Sep 17 00:00:00 2001
From: Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
Date: Thu, 18 Jun 2020 17:10:00 +0300
Subject: [PATCH] fixed SSL issue

Change-Id: Ic94e1dcbfaba71cb4e8627c7436c2fdff990218b
---
 .../authmodule/UserAuthenticationModule.java  |   7 ++-
 jams-ca/crl.pem                               | Bin 0 -> 643 bytes
 .../responses/DeviceRegistrationResponse.java |   2 +-
 .../server/core/TomcatConnectorFactory.java   |   2 +-
 server.key                                    |  52 ++++++++++++++++++
 server.pem                                    |  33 +++++++++++
 6 files changed, 91 insertions(+), 5 deletions(-)
 create mode 100644 jams-ca/crl.pem
 create mode 100644 server.key
 create mode 100644 server.pem

diff --git a/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java b/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java
index 07849099..6d57ea70 100644
--- a/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java
+++ b/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java
@@ -165,7 +165,8 @@ public class UserAuthenticationModule implements AuthenticationModule {
     public AuthTokenResponse authenticateUser(X509Certificate[] certificates, X509CRLHolder crl,
                                               X509Certificate ca) {
         //Extract the username for the certificate and verify that it is not revoked.
-        X509Certificate clientCert = certificates[0];
+        X509Certificate clientCert = certificates[1];
+        X509Certificate deviceCert = certificates[0];
         try {
             //Check if the certificate is even valid.
             clientCert.checkValidity();
@@ -173,13 +174,13 @@ public class UserAuthenticationModule implements AuthenticationModule {
             clientCert.verify(ca.getPublicKey());
             //Here we need to make a request to the CRL to find out if it has been revoked.
             if(crl.getRevokedCertificate(clientCert.getSerialNumber()) != null) return null;
-            String username = clientCert.getSubjectDN().getName();
+            String username = X509Utils.extractDNFromCertificate(clientCert).get("CN");
             //We need to extract the deviceId from the certificate
             StatementList statementList = new StatementList();
             StatementElement statementElement = new StatementElement("username","=",username,"");
             statementList.addStatement(statementElement);
             User user = datastore.getUserDao().getObjects(statementList).get(0);
-            return tokenController.getToken(user,X509Utils.extractDNFromCertificate(clientCert).get("UID"));
+            return tokenController.getToken(user,X509Utils.extractDNFromCertificate(deviceCert).get("UID"));
         }
         catch (Exception e){
             return null;
diff --git a/jams-ca/crl.pem b/jams-ca/crl.pem
new file mode 100644
index 0000000000000000000000000000000000000000..11df6239fd914fbb807755737216c113adb6c5bd
GIT binary patch
literal 643
zcmXqLVyZXDWMX7A;AP{~YV&CO&dbQi%gSINZzy2E$HpAW!py@Sl3HA%;OuC~ZNLc<
zVH0L@3lirwGB7YRv@kR_F*P=iGEg;8W@2HjG@67i!DGP1#vCdu%EHXW$cbhPa}yII
zgLTv!p1CKlSHy;YKP|rF=r*Nh*4F*m`CgAWL;d;wm@}P8k$JZ!Wct$=p|<V$d$*O{
z*rM0KxF>zhqpenFZLYrle~WKhv3P)!pPfM9y#E>x{{($c(RP$(TfaW6Uo~}(Sm)mD
z)t#2Fv@bE8yHoBPrf~6Yj~mZcwV(;*IhHH0Nf%f!-DPW8dZNY0GS_J8`i1S=?re%@
zeYfFz*_D^vpH|&`b5zb(|KAFk?_EdiHd&~7XGBHi2MZbV?3~y%_tU@Es=tmYPx*F0
zS@~1?D?!ee=Z*$0*iftFXV|c+O^eTQ!v8zHucHlJj<xQYpT0%Axuis1a^wDx8u3@$
zj^Z~?L==awSJ{3&^We<)?=7qnUg)j(<Mldlk<Lbk8@1lWNsp`Jvrp{XQT|f5{_*$o
zmmRA&9#WsOXYR_<3&o#uKYeu!apuyCp8sH8t*mM8Rq3AWjvLb3b|t<%BmJD|;tZA?
zi6&z)h6^0Gx_9rCx7YEVyDL1Et@-}dC8wip%Wgdq&OUqT;RaXJCLO1zPLqPKum=6M
zKA5QaId0qjyHC2Fs3(_en-wr+PM-2mB*w~CZ#C-|pEZ~59yz5oN2j0MImL0l+n%75
zn^nC(J_t1!ryrY{m(p$`<lFGC@$JHJFWpHEnKPH3`Y!**$NfrLCyQ)Ap!v=ohuz{U
Y<AlpHijI7=JSnOWFIi?P@<i1I0PY$TBLDyZ

literal 0
HcmV?d00001

diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
index 0e271218..87ebdaad 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
@@ -41,7 +41,7 @@ public class DeviceRegistrationResponse {
 
     public void setCertificateChain(X509Certificate[] certificateChain){
         StringBuilder stringBuilder = new StringBuilder();
-        for(int i=certificateChain.length-1;i > 0;i--){
+        for(int i=certificateChain.length-1;i > -1;i--){
             stringBuilder.append(X509Utils.getPEMStringFromCertificate(certificateChain[i])).append("\n");
         }
         //remove the last \n because it's useless.
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/TomcatConnectorFactory.java b/jams-server/src/main/java/net/jami/jams/server/core/TomcatConnectorFactory.java
index 68198f8b..ae33580a 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/TomcatConnectorFactory.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/TomcatConnectorFactory.java
@@ -49,7 +49,7 @@ public class TomcatConnectorFactory {
         sslHostConfigCertificate.setCertificateFile(System.getProperty("user.dir") + File.separator + certificateFile);
         sslHostConfigCertificate.setCertificateKeyFile(System.getProperty("user.dir") + File.separator + keyFile);
         sslConfig.addCertificate(sslHostConfigCertificate);
-        sslConfig.setProtocols("TLSv1.3");
+        sslConfig.setProtocols("TLSv1.2");
         connector.addSslHostConfig(sslConfig);
         connector.setPort(port);
         connector.setSecure(true);
diff --git a/server.key b/server.key
new file mode 100644
index 00000000..40c109d8
--- /dev/null
+++ b/server.key
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+MIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQC07pI/ZDQcHerS
+UP8P8iB93xOG/S+OwUOP4fRsaQzfSl/DxFYJVZuKqrEULLD3VgHzbQ8NRcIsNFCm
+5lIfAcPIAdD8CbDh6Jm3RUJGRwPLxaaT7qYizq7CKF2pLCwIDsB3yTcxN/Lh1C41
+83FB8/3WpWrBos1u10OTRR1AZCPLZfCOoooKqFH+aVgfYyEyM3Zdpou4MMJlr07d
+IhbQYOOVR5vC8rbm27gvmdxK+vA32/5G1PACJhiS2nui2jTznfHJxFLl2BGouIuR
+Hxk2nrF7X4e0ceA/mXCExgPBWMt1IUV3fIwIR38e/syyjfN3AaQWnHxTGFGs9pna
+zQeDXfWFWLfB+Y6byhNZ5h2me5EkCmZc7j1VXRSm23wcRlq59UwA3WL7HXHjfttV
+f+2FvI9SJ4PQg+H+jaf8V0WOS3A3RfYxJZGAtfGIO3q7ntLLwJzMpqV4d6L83KDt
+FEdz+nRoJFEVy+Zp9f0KvGr9k4awXO7Z3ENYwRgQmiwFTFolgybGjW7jBTLsz7Mm
+vPt6VjVbWtKcp9GviScTSYnDNMueiXMGqJmij/xN7hJLswLQnGgR4ysMHZZkrIcN
+CBKDDsITisw0hWP60UGDtNgNNtL+4/kckcBWoKLrl+pviT4ax/BnW7LV2VYGDdYy
+l++ydajgHdoNubRJQlziLFXhnWvbMQIDAQABAoICAEfWdaDPw1TqmAK7gBovs7Dm
+cpVlT42ptI6bU3X7282IdS+Ac/yuzdwn27k76WO69XlWcuR9LxRoDSHHTxHanIZ8
+GiMIIgAAX5AB4seOiLZOms4fsj0dvQuABXgW/sCQQuEMtmpHYZtCqLppFy3tl3qz
+IQkS/+gjdkQx6+RWHlQy/GlVpeOHY07VOtTzggmxnyyd5NnUGktPaMuqLk68OYBa
+90BXKEHPOXlE6M+ohNpY8cPj5gukXptoPjCx3NZhfs/ysEtsF87avyd2pocmSSfI
+DVSa5kO6Q4+kI3eQLvAprrA7dkoPQSzoVBQNAn7c2u7TYRWJEVzQaNQUFgiVtNZ6
++O9hytR25B6foaF9jiyT41ppEXJtzSVNWmL5lx/Et0F6v6+vkCamdZTN3qMbFFaP
+SJ1qnFBSlhkwfHkYHZt+WYvaciKIBFKrmE59bU95iKU/A5fMPna3921CWW6NoJ73
+5k+Um0McXkpwkzNY1BndAsg9IuSc3nMH/4u8sP7HOEgk7we5pphVpj0SfWCk1w3I
+58w3Vgrt2TXB7MMePmrSARSsCVUSXUaQ6Z3vBt0Ildl7w/kdi5JhQ9W/jGyWFBOh
+5meK8ffvWTv3K9af3wnrnAP3ubdiMLQX1khvXcvj523HULUS6SloVtnvnXoCSD/Q
++4WHVHln4KJRE3dX69p1AoIBAQDixydw/WP2aavpKtrRvd6pHDw7TQO3XbOFZBYd
+kBrJ2rK3dkRmTt7BjRuxXU6grhkEyRjGJXlacA4ynX1rAGJtmMBGFnLo1pclMofu
+nKqUWaFjcRAKcIK0tu86M0vJZT+tX7fdkhO8Y4TOEUods8KACvM5hIimOffrPhoV
+dCkQZOp2j9v8mBE01iULU6MMUc6loFbWkP38YCHg8KxG1At3Od1S7GjWGGpAM8G6
+Y5pj6ArX6ivFfV/nSqLN6KR8toGUNTo4vOR0VutF62NR6oJYxB0HkyKG+CvRfCu7
+V8NFK+LladFgFfNCmEaT4/DLCxsnMiucvDWzGDzmoNjwjDZ/AoIBAQDMPxHYFmAt
+ERL6z59t0MVTR9ei5N9JGhlWHdhVTG7xws2VGENhLpYNuwsrWlx1IKxf0qq5Feky
+VDKXeMITo0d9f7md47QBogN5t49LZDZ0WIKei1IL1fB5zkt6P2+s66fsXnK/2vSu
+zF5xGoziZNzAy7naXonm3z0XEipVhHwgXJdqocm5nFz8G7zeWJ9WK4AJXckyDFyM
+gpdMktyPNcVhL4r6TKIGIgSxwOrpGWbYt2p7hcZEjWK8nZi9DKOGxiAG9c3JtgDV
+dlgWYe1glmsQkwu41RxzO7FRRg2tjKn/Tm67Yk7EBLJa2P+3ltLB/8lW1zMzfRn1
++ohPvAPPt/ZPAoIBAGjf+RmD1YrLa7k1HGULDcHfUOuLvkA6kR8LHj8luX3IKgY2
+J4O4zcNs4nWv1QDyApf3+AEKq4hrceVud+XYE6zji2feUd3j/5owODTdNvXMTZqT
+Wvu49HlmcFPWDSJiNISVU46gU4g37d7ul/wMedKFPd5HsHpPLJwZ6C4rviHayaNy
+/CVgnfR1ZERMtYao/owSDpbEDvF78673HnTS80p79CK5OfJo8Boo1VrBXVD+qqUX
+oo5+YK+yEIBxKkCSlnJX+0jp8izrVXrMVO45KXarm1E5dio88ua6Ke9FswR2O0Ql
+H7Lz87/EdD9Ilr8Pr8r8pLajQ6JDf0aY9DqqXTkCggEAMqCrlqmtO16RGtSeS0VF
+tGgJfppG8sLiZuNM/Y/NrGXCOePix9MZZNvpX9ytMGdh8vqwUOKqhEw0ojFPwjhl
+/yjK5OVNeF4liGVEwsZbbSmHby9Prhlg24CUWwAgeXeMj122CfKHVlDYVCblpzSj
+N7MIJaXrfuv1I6PgFISblBX/fnIOI9Erh16EyYSkMmLkAO5bcel4g2fXgyagP2tv
+urBjPboDK4wBJ+KPGCqwwKVuYqH9TH7Ta7eQ5cOdQUoZJECHuyk/Oap1GU863QdM
+ELayYCWLQNEaGfBIca19cgiKEC7FIXeckkJZ2LMtGOODj+AWE/w9lCh+42zScQnD
+pwKCAQAS5TthMVCb1WxWvYrnMI3Xw111T+DnrK3BL3XNL3bnN4H6ZEnbjtmgEI8T
+Vp0WBBf0hRbgLfwNMndzmLCM/rg9PbLfyWalq61QO8D8GqDBCZNjdrEs8estMqfk
+HS9x62ENsu+I0b7QvslmVjAwEdVvJEJ7AVOnpDZeJz0k20egLAJEZUXxZIxX4oCT
+Yf1cGgFi9Rtfhq21fU3x3PLrfXe2qSIhbbbeZVk2Nj26mwwuyRKCCq0Deq2+Nu4O
+7jEkVwLVWBTd7CfESQ+lwP3n5ZFOkSwE5ZUrceGvaHI/9ufqLOxE10oL1r4/uJiJ
+iwFJQL0Kz83sSeVFfBHDpK/Sckx3
+-----END PRIVATE KEY-----
diff --git a/server.pem b/server.pem
new file mode 100644
index 00000000..706489d2
--- /dev/null
+++ b/server.pem
@@ -0,0 +1,33 @@
+-----BEGIN CERTIFICATE-----
+MIIFnzCCA4egAwIBAgIUXZ3/FHcJwGzw9ad1kqmpy4/zTKcwDQYJKoZIhvcNAQEL
+BQAwXzELMAkGA1UEBhMCQ0ExCzAJBgNVBAgMAlFDMREwDwYDVQQHDAhNb250cmVh
+bDENMAsGA1UECgwEVEVTVDENMAsGA1UECwwEVEVTVDESMBAGA1UEAwwJbG9jYWxo
+b3N0MB4XDTIwMDYxODEzMDkwOFoXDTIxMDYxODEzMDkwOFowXzELMAkGA1UEBhMC
+Q0ExCzAJBgNVBAgMAlFDMREwDwYDVQQHDAhNb250cmVhbDENMAsGA1UECgwEVEVT
+VDENMAsGA1UECwwEVEVTVDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG
+9w0BAQEFAAOCAg8AMIICCgKCAgEAtO6SP2Q0HB3q0lD/D/Igfd8Thv0vjsFDj+H0
+bGkM30pfw8RWCVWbiqqxFCyw91YB820PDUXCLDRQpuZSHwHDyAHQ/Amw4eiZt0VC
+RkcDy8Wmk+6mIs6uwihdqSwsCA7Ad8k3MTfy4dQuNfNxQfP91qVqwaLNbtdDk0Ud
+QGQjy2XwjqKKCqhR/mlYH2MhMjN2XaaLuDDCZa9O3SIW0GDjlUebwvK25tu4L5nc
+SvrwN9v+RtTwAiYYktp7oto0853xycRS5dgRqLiLkR8ZNp6xe1+HtHHgP5lwhMYD
+wVjLdSFFd3yMCEd/Hv7Mso3zdwGkFpx8UxhRrPaZ2s0Hg131hVi3wfmOm8oTWeYd
+pnuRJApmXO49VV0Uptt8HEZaufVMAN1i+x1x437bVX/thbyPUieD0IPh/o2n/FdF
+jktwN0X2MSWRgLXxiDt6u57Sy8CczKaleHei/Nyg7RRHc/p0aCRRFcvmafX9Crxq
+/ZOGsFzu2dxDWMEYEJosBUxaJYMmxo1u4wUy7M+zJrz7elY1W1rSnKfRr4knE0mJ
+wzTLnolzBqiZoo/8Te4SS7MC0JxoEeMrDB2WZKyHDQgSgw7CE4rMNIVj+tFBg7TY
+DTbS/uP5HJHAVqCi65fqb4k+GsfwZ1uy1dlWBg3WMpfvsnWo4B3aDbm0SUJc4ixV
+4Z1r2zECAwEAAaNTMFEwHQYDVR0OBBYEFMzPJbDc8A8bbyznB/Gg9VDnUu/dMB8G
+A1UdIwQYMBaAFMzPJbDc8A8bbyznB/Gg9VDnUu/dMA8GA1UdEwEB/wQFMAMBAf8w
+DQYJKoZIhvcNAQELBQADggIBAKKCbGlSTCd66lZTfQKlxGk7EC+j7O9fupaNwXCm
+wfdtnEArOumHEdBQdbCfnnfNWO01lUXheI6iN8zOX66y7zoHwqJF4gvdQL8xPC0S
+PvQ3kZWuQqjiH3N0jB1NMKCWloo7SyUgSSbLAmyFfTlIBYv6NuysBPZ4LDLIqbUx
+xXdkW2sR7UXPTar+UBKtNI7FzM9fBIbHuk/JjB9XOJbjBuFED9tF0OofL8wVkCzG
+bhGw1zZ8wf0rFmWqNmxkFzYXXsZQzmQd1UCwnZ2/IsRoxLO5GJp4CuEnO2G6ayU2
+BPU+3Vl2BEcvQFpApwuSbYIa/B9LrXhcEkMwez4pbIQR3X1fWZ6CDyDsQdNse+sF
+C9w/iTlclPMB9W5J391GJZWXbtp2+gWFsDhjERuvluixJtL+h4Z4ADbERXZoFs5l
+AHD5W3zIgPm6PpJ9hBH28LwwyV939ucUJlhpUXAuHfINe8OzqAR2NcVIggBq53Z8
+4YxFEtA+PvKxYd1rLbozo7078rBiYiGPxYX8wvvkkbAlSgzwKmJaovV0YtvyrpRL
+S7BjzW80Scq1qHxEsGRJ5yaavx+JlefMw3gU8VjI2ilnYNlMNOZh7dRm4eCRcUwc
+3rsTIOoEXDvtrQHsq8xRVi/RwRhBNjrhg5+dKIMxBpHFa8uFyzIyhVOnY2tgRaHX
+UHgl
+-----END CERTIFICATE-----
-- 
GitLab