diff --git a/pom.xml b/pom.xml
index cf8362f..9252e99 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,7 @@
     <caffeine.version>2.7.0</caffeine.version>
     <findbugs.annotations.version>1.0.0</findbugs.annotations.version>
     <forbiddenapis.version>2.6</forbiddenapis.version>
-    <jetty.version>9.4.19.v20190610</jetty.version>
+    <jetty.version>9.4.24.v20191120</jetty.version>
     <!-- The Jetty bundle exports are using version 9.4.5, not 9.4.5.v20170502... -->
     <jetty.bundle.version>9.4.19</jetty.bundle.version>
     <junit.version>4.12</junit.version>
@@ -78,7 +78,7 @@
     <mina.core.version>2.1.3</mina.core.version>
     <org.apache.felix.version>6.0.3</org.apache.felix.version>
     <pax-exam.version>4.11.0</pax-exam.version>
-    <pax-url.version>2.5.4</pax-url.version>
+    <pax-url.version>2.6.2</pax-url.version>
     <plexus.utils.version>3.2.0</plexus.utils.version>
     <slf4j.api.version>1.7.26</slf4j.api.version>
     <slf4j.api.bundleversion>"$«range;[==,=+)»"</slf4j.api.bundleversion>
diff --git a/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/ssl/ServerX509TrustManager.java b/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/ssl/ServerX509TrustManager.java
deleted file mode 100644
index 72ae501..0000000
--- a/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/ssl/ServerX509TrustManager.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.directory.server.ldap.handlers.ssl;
-
-
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.X509TrustManager;
-
-
-/**
- * An {@link X509TrustManager} for LDAP server.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class ServerX509TrustManager implements X509TrustManager
-{
-    public ServerX509TrustManager()
-    {
-    }
-
-
-    public void checkClientTrusted( X509Certificate[] arg0, String arg1 ) throws CertificateException
-    {
-        // We don't check clients at all right now.
-        // XXX: Do we need a client-side certificates?
-    }
-
-
-    public void checkServerTrusted( X509Certificate[] arg0, String arg1 ) throws CertificateException
-    {
-        // It is server-side trust manager, so we don't need to check the server itself.
-    }
-
-
-    public X509Certificate[] getAcceptedIssuers()
-    {
-        return null;
-    }
-}
diff --git a/server-integ/src/test/java/org/apache/directory/server/ssl/BogusSSLContextFactory.java b/server-integ/src/test/java/org/apache/directory/server/ssl/BogusSSLContextFactory.java
index 38f02d5..c760fd0 100644
--- a/server-integ/src/test/java/org/apache/directory/server/ssl/BogusSSLContextFactory.java
+++ b/server-integ/src/test/java/org/apache/directory/server/ssl/BogusSSLContextFactory.java
@@ -138,7 +138,7 @@
         }
 
         // Set up key manager factory to use our key store
-        KeyManagerFactory kmf = KeyManagerFactory.getInstance( "SunX509" );
+        KeyManagerFactory kmf = KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm() );
         kmf.init( ks, BOGUS_PW );
 
         // Initialize the SSLContext to work with our key managers.
