diff --git a/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java b/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java
index 8bebfbc2eb5a8120a73f0623fbaa70d0976ebb40..6755e2127402d12ab1cb46c6397d4f23d1e5d262 100644
--- a/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java
+++ b/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java
@@ -136,4 +136,12 @@ public class JamsCA implements CertificateAuthority {
     public X509Certificate getCA() {
         return CA.getCertificate();
     }
+
+    @Override
+    public boolean shutdownThreads() {
+        //Unsafe but acceptable.
+        crlWorker.stop();
+        ocspWorker.stop();
+        return true;
+    }
 }
diff --git a/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java b/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java
index 8ea454b8b691dc01ae1393ccf7892e54f5d6ea31..0d740e9477c577366d7cc5d5dc68f7f488de058a 100644
--- a/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java
+++ b/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java
@@ -44,5 +44,6 @@ public interface CertificateAuthority {
     String getLatestCRLPEMEncoded();
     OCSPResp getOCSPResponse(OCSPReq ocspRequest);
     X509Certificate getCA();
+    boolean shutdownThreads();
 
 }
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
index a3378db4ae08059f70011dde0bd19c001d8d7c52..c3c8b9f9b7db42db14183bc075d41d20a0628ff0 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
@@ -24,6 +24,8 @@
 package net.jami.jams.server.core;
 
 import lombok.extern.slf4j.Slf4j;
+import net.jami.jams.ca.JamsCA;
+import net.jami.jams.server.Server;
 import org.apache.catalina.WebResourceRoot;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.core.StandardContext;
@@ -39,6 +41,8 @@ import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 
+import static net.jami.jams.server.Server.certificateAuthority;
+
 //This class boots the tomcat server which provides the subsystem
 //for the API calls.
 @Slf4j
@@ -116,8 +120,10 @@ public class TomcatLauncher {
     public void stopTomcat() {
         try {
             synchronized (tomcat) {
+                certificateAuthority.shutdownThreads();
                 tomcat.stop();
                 tomcat.destroy();
+                context.destroy();
             }
         } catch (Exception e) {
             log.info("Failed to stop tomcat server with error {}", e.getMessage());