diff --git a/crow/include/crow/app.h b/crow/include/crow/app.h
index 9ce2f8b..f1f3687 100644
--- a/crow/include/crow/app.h
+++ b/crow/include/crow/app.h
@@ -156,7 +156,9 @@
         sslContext.use_private_key_file(key_filename, ssl_context_t::pem);
         sslContext.set_options(boost::asio::ssl::context::default_workarounds |
                                boost::asio::ssl::context::no_sslv2 |
-                               boost::asio::ssl::context::no_sslv3);
+                               boost::asio::ssl::context::no_sslv3 |
+                               boost::asio::ssl::context::no_tlsv1 |
+                               boost::asio::ssl::context::no_tlsv1_1);
         return *this;
     }
 
@@ -166,7 +168,9 @@
         sslContext.load_verify_file(pem_filename);
         sslContext.set_options(boost::asio::ssl::context::default_workarounds |
                                boost::asio::ssl::context::no_sslv2 |
-                               boost::asio::ssl::context::no_sslv3);
+                               boost::asio::ssl::context::no_sslv3 |
+                               boost::asio::ssl::context::no_tlsv1 |
+                               boost::asio::ssl::context::no_tlsv1_1);
         return *this;
     }
 
@@ -176,7 +180,7 @@
         return *this;
     }
 
-    ssl_context_t sslContext{boost::asio::ssl::context::sslv23};
+    ssl_context_t sslContext{boost::asio::ssl::context::tls_server};
 
 #else
     template <typename T, typename... Remain> self_t& ssl_file(T&&, Remain&&...)
diff --git a/include/ssl_key_handler.hpp b/include/ssl_key_handler.hpp
index 32d7a73..34a7c04 100644
--- a/include/ssl_key_handler.hpp
+++ b/include/ssl_key_handler.hpp
@@ -282,7 +282,8 @@
 
 inline boost::asio::ssl::context getSslContext(const std::string &ssl_pem_file)
 {
-    boost::asio::ssl::context mSslContext{boost::asio::ssl::context::sslv23};
+    boost::asio::ssl::context mSslContext{
+        boost::asio::ssl::context::tls_server};
     mSslContext.set_options(boost::asio::ssl::context::default_workarounds |
                             boost::asio::ssl::context::no_sslv2 |
                             boost::asio::ssl::context::no_sslv3 |
@@ -305,55 +306,19 @@
         BMCWEB_LOG_ERROR << "Error setting tmp ecdh list\n";
     }
 
-    // From mozilla "compatibility"
-    std::string mozillaCompatibilityCiphers = "ECDHE-ECDSA-CHACHA20-POLY1305:"
-                                              "ECDHE-RSA-CHACHA20-POLY1305:"
-                                              "ECDHE-ECDSA-AES128-GCM-SHA256:"
-                                              "ECDHE-RSA-AES128-GCM-SHA256:"
-                                              "ECDHE-ECDSA-AES256-GCM-SHA384:"
-                                              "ECDHE-RSA-AES256-GCM-SHA384:"
-                                              "DHE-RSA-AES128-GCM-SHA256:"
-                                              "DHE-RSA-AES256-GCM-SHA384:"
-                                              "ECDHE-ECDSA-AES128-SHA256:"
-                                              "ECDHE-RSA-AES128-SHA256:"
-                                              "ECDHE-ECDSA-AES128-SHA:"
-                                              "ECDHE-RSA-AES256-SHA384:"
-                                              "ECDHE-RSA-AES128-SHA:"
-                                              "ECDHE-ECDSA-AES256-SHA384:"
-                                              "ECDHE-ECDSA-AES256-SHA:"
-                                              "ECDHE-RSA-AES256-SHA:"
-                                              "DHE-RSA-AES128-SHA256:"
-                                              "DHE-RSA-AES128-SHA:"
-                                              "DHE-RSA-AES256-SHA256:"
-                                              "DHE-RSA-AES256-SHA:"
-                                              "ECDHE-ECDSA-DES-CBC3-SHA:"
-                                              "ECDHE-RSA-DES-CBC3-SHA:"
-                                              "EDH-RSA-DES-CBC3-SHA:"
-                                              "AES128-GCM-SHA256:"
-                                              "AES256-GCM-SHA384:"
-                                              "AES128-SHA256:"
-                                              "AES256-SHA256:"
-                                              "AES128-SHA:"
-                                              "AES256-SHA:"
-                                              "DES-CBC3-SHA:"
-                                              "!DSS";
-
-    // From mozilla "modern"
-    std::string mozillaModernCiphers = "ECDHE-ECDSA-AES256-GCM-SHA384:"
-                                       "ECDHE-RSA-AES256-GCM-SHA384:"
-                                       "ECDHE-ECDSA-CHACHA20-POLY1305:"
-                                       "ECDHE-RSA-CHACHA20-POLY1305:"
-                                       "ECDHE-ECDSA-AES128-GCM-SHA256:"
-                                       "ECDHE-RSA-AES128-GCM-SHA256:"
-                                       "ECDHE-ECDSA-AES256-SHA384:"
-                                       "ECDHE-RSA-AES256-SHA384:"
-                                       "ECDHE-ECDSA-AES128-SHA256:"
-                                       "ECDHE-RSA-AES128-SHA256";
-
-    std::string aesOnlyCiphers = "AES128+EECDH:AES128+EDH:!aNULL:!eNULL";
+    std::string mozillaModern = "ECDHE-ECDSA-AES256-GCM-SHA384:"
+                                "ECDHE-RSA-AES256-GCM-SHA384:"
+                                "ECDHE-ECDSA-CHACHA20-POLY1305:"
+                                "ECDHE-RSA-CHACHA20-POLY1305:"
+                                "ECDHE-ECDSA-AES128-GCM-SHA256:"
+                                "ECDHE-RSA-AES128-GCM-SHA256:"
+                                "ECDHE-ECDSA-AES256-SHA384:"
+                                "ECDHE-RSA-AES256-SHA384:"
+                                "ECDHE-ECDSA-AES128-SHA256:"
+                                "ECDHE-RSA-AES128-SHA256";
 
     if (SSL_CTX_set_cipher_list(mSslContext.native_handle(),
-                                mozillaCompatibilityCiphers.c_str()) != 1)
+                                mozillaModern.c_str()) != 1)
     {
         BMCWEB_LOG_ERROR << "Error setting cipher list\n";
     }
