diff --git a/datastore/src/main/java/net/jami/datastore/dao/UserDao.java b/datastore/src/main/java/net/jami/datastore/dao/UserDao.java
index 4f3723d855a96f63d8e224ca8b854bc9048b77ff..8b9cd045cb9053ea212e8d98ff6331b29da6388b 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/UserDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/UserDao.java
@@ -29,7 +29,9 @@ import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.user.User;
 
+import java.security.cert.Certificate;
 import java.sql.PreparedStatement;
+import java.util.Objects;
 
 @Slf4j
 public class UserDao extends AbstractDao<User> {
@@ -56,18 +58,12 @@ public class UserDao extends AbstractDao<User> {
         }
     }
 
-    @Override
-    public boolean updateObject(StatementList update, StatementList constraints) {
-
-        if(update.getStatements().get(0).getColumn() == "certificate"){
-
+    public boolean updateUserCertificate(String username, String certificate) {
             SQLConnection connection = DataStore.connectionPool.getConnection();
             try {
-                String certificate = update.getStatements().get(0).getValue();
-                String user = constraints.getStatements().get(0).getValue();
                 PreparedStatement ps = connection.getConnection().prepareStatement("UPDATE users SET certificate = ? WHERE username = ?");
                 ps.setString(1, certificate);
-                ps.setString(2, user);
+                ps.setString(2, username);
                 return ps.executeUpdate() != 0;
             } catch (Exception e) {
                 log.error("An error has occurred while trying to update a user certificate: " + e.toString());
@@ -75,8 +71,10 @@ public class UserDao extends AbstractDao<User> {
             } finally {
                 DataStore.connectionPool.returnConnection(connection);
             }
+    }
 
-        }
+    @Override
+    public boolean updateObject(StatementList update, StatementList constraints) {
 
         String pw = update.getStatements().get(0).getValue();
         String salt = "";
diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java
index 8aad8af84676b28bcb91baee3a5f2e5a896c9778..11da21a8a253660fc6d65d20ed56ad562e80c12e 100644
--- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java
+++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java
@@ -166,15 +166,7 @@ public class DataStore implements AuthenticationSource {
     }
 
     public boolean updateUserCertificate(User user) {
-
-        StatementList update  = new StatementList();
-        StatementList constraints  = new StatementList();
-
-        update.addStatement(new StatementElement("certificate","=", X509Utils.getPEMStringFromCertificate(user.getCertificate()),""));
-
-        constraints.addStatement(new StatementElement("username","=", user.getUsername(),""));
-
-        return userDao.updateObject(update, constraints);
+        return userDao.updateUserCertificate(user.getUsername(), X509Utils.getPEMStringFromCertificate(user.getCertificate()));
     }
 
     @Override
diff --git a/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java b/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java
index 7848edd40d921860882713ac041b2f04b29c7140..3335065bf4e6ff3008ad34fff65d0d8c76f4e100 100644
--- a/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java
+++ b/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java
@@ -22,6 +22,7 @@
 */
 package net.jami.datastore.dao;
 
+import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
 import net.jami.jams.common.authentication.AuthenticationSourceType;
 import net.jami.jams.common.dao.StatementElement;
@@ -41,11 +42,14 @@ import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.SecureRandom;
 
+@Slf4j
 class DAOTest {
 
     static String strPrivateKey;
     static String strCertificate;
     static String strPkcs10Request;
+    static String generatedCertificate;
+    static String refreshedCertificate;
 
     @BeforeAll
     static void setUp() throws Exception{
@@ -59,6 +63,10 @@ class DAOTest {
         strCertificate = new String(path.readAllBytes());
         path = classLoader.getResourceAsStream("pkcs10request.txt");
         strPkcs10Request = new String(path.readAllBytes());
+        path = classLoader.getResourceAsStream("cert_a.crt");
+        generatedCertificate = new String(path.readAllBytes());
+        path = classLoader.getResourceAsStream("cert_b.crt");
+        refreshedCertificate = new String(path.readAllBytes());
     }
 
     @Test
@@ -84,6 +92,34 @@ class DAOTest {
         Assertions.assertEquals(user1.getAccessLevel(),AccessLevel.ADMIN);
     }
 
+    @Test
+    void refreshUserCertificate() throws Exception {
+        User user = new User();
+        user.setUsername("TestUser");
+        user.setUserType(AuthenticationSourceType.LOCAL);
+        SecureRandom random = new SecureRandom();
+        byte[] salt = new byte[16];
+        random.nextBytes(salt);
+        user.setSalt(Base64.encodeBase64String(salt));
+        user.setPassword(hashPassword("abc123", salt));
+        user.setAccessLevel(AccessLevel.USER);
+        user.setCertificate(X509Utils.getCertificateFromPEMString(generatedCertificate));
+
+        UserDao userDAO = new UserDao();
+        userDAO.storeObject(user);
+
+        StatementList statementList = new StatementList();
+        statementList.addStatement(new StatementElement("username","=","TestUser",""));
+        User user1 = userDAO.getObjects(statementList).get(0);
+        Assertions.assertNotNull(user1);
+        Assertions.assertEquals(user1.getAccessLevel(),AccessLevel.USER);
+
+        userDAO.updateUserCertificate("TestUser", X509Utils.getPEMStringFromCertificate(X509Utils.getCertificateFromPEMString(refreshedCertificate)));
+
+        User user2 = userDAO.getObjects(statementList).get(0);
+        Assertions.assertNotEquals(user1.getCertificate(), user2.getCertificate());
+    }
+
     @Test
     void storeDevice(){
         Device device = new Device();
diff --git a/datastore/src/test/resources/cert_a.crt b/datastore/src/test/resources/cert_a.crt
new file mode 100644
index 0000000000000000000000000000000000000000..8bcadcd49f536e9281488551a7b38a4ba9bad79f
--- /dev/null
+++ b/datastore/src/test/resources/cert_a.crt
@@ -0,0 +1,3 @@
+-----BEGIN CERTIFICATE-----
+MIIFgDCCA2igAwIBAgIRALCoDS70cDjZ/NfSny9ADnIwDQYJKoZIhvcNAQENBQAwHzEQMA4GA1UEAwwHVGVzdCBDQTELMAkGA1UEBhMCRlIwHhcNMjIwMzMwMDk0ODMwWhcNMjIwMzMwMjE0ODMxWjBkMSgwJgYDVQQDDB9UZXN0VXNlcidzIFBlcnNvbmFsIENlcnRpZmljYXRlMTgwNgYKCZImiZPyLGQBAQwoOTI4MGZmOTI2Y2I3ZGQ4YzIwMzU2YTcxOGYwNWM2MTgxZWE0ZmI3NzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIOUHl1ahiORERRWM2k1p1vzm7Z+siHqrREsm0a8v9syBnltLfmNjXrFw88VbL4MbXsGtTDm8e1fvtbV3zc1B4pIwWG0x0B1lxTEd1VVpJK2NSJhfgn3GM6hSTafbouqtHeuEKVHLBkx8u84IjsBMDqdP55a9El4upkkwmmJIoodU18/XrSJhSKoGGCx5PKjhetyi8QRR3eh7phZU6Mo3sC7OZs3rR+IIGpaoE68JD+Zig5ShIMTQlRHaaF64i6NVcutjig3gp1wmpSPm9rMivTQp6kpiHGuiVPwjA2Dw0KhwAenQJSujW06YiW/lTx/ahdCd4EVztoYAZY3W3dDtgonFy9jF50tJI9x5ykK/eNhcb14QhZeurrf5mZHJAzxPvUiLC4jTszetpXTia4dE30+fLWxxBkcIIJ7ejGdRI6Qdj7akWSY5g16qqfJWvuN5l+zWq4IMeJ2SCBuCQ33nst9/rNTQZC89PkFk2KsQ/WLpQ1Gg1KPdCPWk6I7gjW7Be4DXZv544bn4i/rB4B3MOolbwkGiUqa+xDZa8f2dGQmjwcWuPThmvgH2O0KXh0e6AGdvvRCelSjgwrOEDHEeih+OYrMfCN8yzoKTDoLM2s/MX8zJbqtSsuLFfJqog5/ZPRCS3N8K3NShN1wgzLUn46EqT6nk2lpat4xTcXdijWFAgMBAAGjcjBwMBIGA1UdEwEB/wQIMAYBAf8CAQowCwYDVR0PBAQDAgEGMCIGA1UdHwQbMBkwF6AVoBOGEW51bGwvYXBpL2F1dGgvY3JsMCkGCCsGAQUFBwEBBB0wGzAZBggrBgEFBQcwAYYNbnVsbC9hcGkvb2NzcDANBgkqhkiG9w0BAQ0FAAOCAgEAsxKqhtGgTsR78bWdsMZqhyXVNS4aYG/MVjwD58zXTtT/VkOMCRbzLXYr7NLNCqzpgv+UOwP75gp/qo7fQFWVc6/bNPiDbdmSrkeCD7/3FYWdTlK6e6wqzX2DiuQm/TDJJ+PqOMqMAmzB8xoVHSI5OJN/PWsI2pyS0CgSy4OlWiBDoJ2tBBXdxBEs/fZUvQS/6k8hoPsrSIepPnfZwddnFWk+Hd00IpgW0nLy7DYI1vAMlJzK+pjMO/5sS373NCq4mDRfi7kf3nRYS1SSEScRoKnbC/fXREVhp5fx5UVtBBjsRYmbUMTIveJBeRofpweBu0KeA6fUSRItD3ABVsGLP/pXOBmV82FKTfex+JITkwRDXOMDKPzmFhqsslqNhnDE8D6B4x4iApIzO3FQ6L/wtnfWy7rzKnMvUHQ6sNHQ+v7UObxtJjcbN5ApeJa9Bx7oQNf5jeyT5IKXiPhnYEUSBLgYNe1rKOTuQloVNSV8GjkigBG3saCXuEjjl55BJtEm8scTKk2tnsCYhuEtMFLwAnW5/pkAfxaYNoghR2T9s1mgu7trblkvhiGT0ad5T3qZjCLgc1pV4BxhVx+lSUi5VwsTfpH912xCgE/Qp3Vy5Ifg93PesCW5SA8GwiqrWvSjgGTgJlolUBnEQr4VJWT1W1e9xAf89D2qXWlikG2wKE4=
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/datastore/src/test/resources/cert_b.crt b/datastore/src/test/resources/cert_b.crt
new file mode 100644
index 0000000000000000000000000000000000000000..0cd46697d9a342ed2e508facb71a8b26da8117da
--- /dev/null
+++ b/datastore/src/test/resources/cert_b.crt
@@ -0,0 +1,3 @@
+-----BEGIN CERTIFICATE-----
+MIIFfzCCA2egAwIBAgIQINxgpvbhpzYUVbg0OFZiyzANBgkqhkiG9w0BAQ0FADAfMRAwDgYDVQQDDAdUZXN0IENBMQswCQYDVQQGEwJGUjAeFw0yMjAzMzAwOTQ4MzFaFw0yMjA0MDUwNjU4MzFaMGQxKDAmBgNVBAMMH1Rlc3RVc2VyJ3MgUGVyc29uYWwgQ2VydGlmaWNhdGUxODA2BgoJkiaJk/IsZAEBDCg5MjgwZmY5MjZjYjdkZDhjMjAzNTZhNzE4ZjA1YzYxODFlYTRmYjc3MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAg5QeXVqGI5ERFFYzaTWnW/Obtn6yIeqtESybRry/2zIGeW0t+Y2NesXDzxVsvgxtewa1MObx7V++1tXfNzUHikjBYbTHQHWXFMR3VVWkkrY1ImF+CfcYzqFJNp9ui6q0d64QpUcsGTHy7zgiOwEwOp0/nlr0SXi6mSTCaYkiih1TXz9etImFIqgYYLHk8qOF63KLxBFHd6HumFlToyjewLs5mzetH4ggalqgTrwkP5mKDlKEgxNCVEdpoXriLo1Vy62OKDeCnXCalI+b2syK9NCnqSmIca6JU/CMDYPDQqHAB6dAlK6NbTpiJb+VPH9qF0J3gRXO2hgBljdbd0O2CicXL2MXnS0kj3HnKQr942FxvXhCFl66ut/mZkckDPE+9SIsLiNOzN62ldOJrh0TfT58tbHEGRwggnt6MZ1EjpB2PtqRZJjmDXqqp8la+43mX7Narggx4nZIIG4JDfeey33+s1NBkLz0+QWTYqxD9YulDUaDUo90I9aTojuCNbsF7gNdm/njhufiL+sHgHcw6iVvCQaJSpr7ENlrx/Z0ZCaPBxa49OGa+AfY7QpeHR7oAZ2+9EJ6VKODCs4QMcR6KH45isx8I3zLOgpMOgszaz8xfzMluq1Ky4sV8mqiDn9k9EJLc3wrc1KE3XCDMtSfjoSpPqeTaWlq3jFNxd2KNYUCAwEAAaNyMHAwEgYDVR0TAQH/BAgwBgEB/wIBCjALBgNVHQ8EBAMCAQYwIgYDVR0fBBswGTAXoBWgE4YRbnVsbC9hcGkvYXV0aC9jcmwwKQYIKwYBBQUHAQEEHTAbMBkGCCsGAQUFBzABhg1udWxsL2FwaS9vY3NwMA0GCSqGSIb3DQEBDQUAA4ICAQBRFnPH31HVl44SLqq/q8rm+lwG2i9g9sC80yvYrcsBSEKjMxKodQ+VLoHJQxp6fcfnakNkLdhp7/kVtSc0lTaLZtNti6KXUlYqf8iajpDxRQxs0hIcKs3vRDfMn3/uUbLKvmD8xhyu8e3Vm2tbqWJkkRvMQzw2mKkeGvxWK2pPoFPf51bgrpYsCxlb5v+jOUDSFhp+zED6w0Ggvabnv2QH9+4zKAk6hs2G0PqCUOz4viOfG7EzuWT23JYOMg6Nxqfd/VUx8+CV23f/sMNPNyA0tvxx7sNpyX1s0gEB2xGxVJFrCSOkz1no8qaPvvWqUVSeC8oDuZv5wd2Xw+pr+x1xHN5TjWDOvq5EHNNB6JcTDXRZGVDyhNDKqnsxv1CUuQVclucAlI8hOUfKLrPxAA7l2G1T23aDEQubURd1i4vZtECekBsvsuZ4JRYaymPB6f8U4kJGy+ZE6GsieXTfNLf1WG+Gy56M1zDc/ZJu3p/335BUukKjsGZteZv9VDAXX6WeaORW/sQSyTLvnqVqv0i153GYGjWhT8rOwwIIVZkWegYDbum4xsbCrQKnIwbvD6jqfcjxzgezc5xErl+BwEjtk5rlPHzwS/Sv5RKuCwrIqTLSds0YQAd1mT+mnno2yDAaOR9JaHFs4DWch+U66N1uEpsFDYcTouhLZGVunv/CLg==
+-----END CERTIFICATE-----
\ No newline at end of file