diff --git a/src/client/configurationmanager.cpp b/src/client/configurationmanager.cpp
index d67d6b206fae6bda67e67582f923b090f8906325..98be0b14c4479c05429e620495509aadc07440d8 100644
--- a/src/client/configurationmanager.cpp
+++ b/src/client/configurationmanager.cpp
@@ -120,7 +120,7 @@ getTlsDefaultSettings()
         {ring::Conf::CONFIG_TLS_CERTIFICATE_FILE, ""},
         {ring::Conf::CONFIG_TLS_PRIVATE_KEY_FILE, ""},
         {ring::Conf::CONFIG_TLS_PASSWORD, ""},
-        {ring::Conf::CONFIG_TLS_METHOD, "TLSv1"},
+        {ring::Conf::CONFIG_TLS_METHOD, "Default"},
         {ring::Conf::CONFIG_TLS_CIPHERS, ""},
         {ring::Conf::CONFIG_TLS_SERVER_NAME, ""},
         {ring::Conf::CONFIG_TLS_VERIFY_SERVER, "true"},
@@ -295,7 +295,7 @@ getCodecList()
 std::vector<std::string>
 getSupportedTlsMethod()
 {
-    return {"Default", "TLSv1", "SSLv3", "SSLv23"};
+    return SIPAccount::getSupportedTlsProtocols();
 }
 
 std::vector<std::string>
@@ -303,7 +303,7 @@ getSupportedCiphers(const std::string& accountID)
 {
 #if HAVE_TLS
     if (auto sipaccount = ring::Manager::instance().getAccount<SIPAccount>(accountID))
-        return sipaccount->getSupportedCiphers();
+        return SIPAccount::getSupportedTlsCiphers();
     RING_ERR("SIP account %s doesn't exist", accountID.c_str());
 #endif
     return {};
diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index 51604670f2633d5ba20a8416c0895c532b4e2d6a..a052d02f74f9867a3b4003a767995446fa5b0833 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -92,19 +92,10 @@ using yaml_utils::parseVectorMap;
 
 static const int MIN_REGISTRATION_TIME = 60;
 static const int DEFAULT_REGISTRATION_TIME = 3600;
-static const char *const VALID_TLS_METHODS[] = {"Default", "TLSv1", "SSLv3", "SSLv23"};
+static const char *const VALID_TLS_PROTOS[] = {"Default", "TLSv1.2", "TLSv1.1", "TLSv1", "SSLv3"};
 
 constexpr const char * const SIPAccount::ACCOUNT_TYPE;
 
-#if HAVE_TLS
-
-// Empty cypher list will use default cypher list for the transport type on GnuTLS
-const CipherArray SIPAccount::TLSv1_DEFAULT_CIPHER_LIST = {};
-const CipherArray SIPAccount::SSLv3_DEFAULT_CIPHER_LIST = {};
-const CipherArray SIPAccount::SSLv23_DEFAULT_CIPHER_LIST = {};
-
-#endif
-
 static void
 registration_cb(pjsip_regc_cbparam *param)
 {
@@ -559,7 +550,7 @@ void SIPAccount::unserialize(const YAML::Node &node)
 
     std::string tmpMethod(tlsMethod_);
     parseValue(tlsMap, Conf::METHOD_KEY, tmpMethod);
-    validate(tlsMethod_, tmpMethod, VALID_TLS_METHODS);
+    validate(tlsMethod_, tmpMethod, VALID_TLS_PROTOS);
 
     parseValue(tlsMap, Conf::SERVER_KEY, tlsServerName_);
     parseValue(tlsMap, Conf::REQUIRE_CERTIF_KEY, tlsRequireClientCertificate_);
@@ -623,7 +614,7 @@ void SIPAccount::setAccountDetails(const std::map<std::string, std::string> &det
     parseInt(details, Conf::CONFIG_TLS_LISTENER_PORT, tlsListenerPort_);
     auto iter = details.find(Conf::CONFIG_TLS_METHOD);
     if (iter != details.end())
-        validate(tlsMethod_, iter->second, VALID_TLS_METHODS);
+        validate(tlsMethod_, iter->second, VALID_TLS_PROTOS);
     parseString(details, Conf::CONFIG_TLS_CIPHERS, tlsCiphers_);
     parseString(details, Conf::CONFIG_TLS_SERVER_NAME, tlsServerName_);
     parseBool(details, Conf::CONFIG_TLS_VERIFY_SERVER, tlsVerifyServer_);
@@ -1179,21 +1170,20 @@ SIPAccount::sendUnregister()
 }
 
 #if HAVE_TLS
-pjsip_ssl_method SIPAccount::sslMethodStringToPjEnum(const std::string& method)
+pj_uint32_t
+SIPAccount::tlsProtocolFromString(const std::string& method)
 {
     if (method == "Default")
-        return PJSIP_SSL_UNSPECIFIED_METHOD;
-
+        return PJSIP_SSL_DEFAULT_PROTO;
+    if (method == "TLSv1.2")
+        return PJ_SSL_SOCK_PROTO_TLS1_2;
+    if (method == "TLSv1.1")
+        return PJ_SSL_SOCK_PROTO_TLS1_2 | PJ_SSL_SOCK_PROTO_TLS1_1;
     if (method == "TLSv1")
-        return PJSIP_TLSV1_METHOD;
-
+        return PJ_SSL_SOCK_PROTO_TLS1_2 | PJ_SSL_SOCK_PROTO_TLS1_1 | PJ_SSL_SOCK_PROTO_TLS1;
     if (method == "SSLv3")
-        return PJSIP_SSLV3_METHOD;
-
-    if (method == "SSLv23")
-        return PJSIP_SSLV23_METHOD;
-
-    return PJSIP_SSL_UNSPECIFIED_METHOD;
+        return PJ_SSL_SOCK_PROTO_SSL3;
+    return PJSIP_SSL_DEFAULT_PROTO;
 }
 
 /**
@@ -1216,7 +1206,7 @@ void SIPAccount::trimCiphers()
 void SIPAccount::initTlsConfiguration()
 {
     pjsip_tls_setting_default(&tlsSetting_);
-    tlsSetting_.method = sslMethodStringToPjEnum(tlsMethod_);
+    tlsSetting_.proto = tlsProtocolFromString(tlsMethod_);
 
     // Determine the cipher list supported on this machine
     CipherArray avail_ciphers(256);
@@ -1242,11 +1232,6 @@ void SIPAccount::initTlsConfiguration()
         }
     }
 #endif
-    if (ciphers_.empty()) {
-        ciphers_ = (tlsSetting_.method == PJSIP_TLSV1_METHOD) ? TLSv1_DEFAULT_CIPHER_LIST : (
-                   (tlsSetting_.method == PJSIP_SSLV3_METHOD) ? SSLv3_DEFAULT_CIPHER_LIST : (
-                   (tlsSetting_.method == PJSIP_SSLV23_METHOD) ? SSLv23_DEFAULT_CIPHER_LIST : CipherArray {} ));
-    }
     ciphers_.erase(std::remove_if(ciphers_.begin(), ciphers_.end(), [&](pj_ssl_cipher c) {
         return std::find(avail_ciphers.cbegin(), avail_ciphers.cend(), c) == avail_ciphers.cend();
     }), ciphers_.end());
@@ -1542,7 +1527,7 @@ SIPAccount::getHostPortFromSTUN(pj_pool_t *pool)
 }
 
 const std::vector<std::string>&
-SIPAccount::getSupportedCiphers() const
+SIPAccount::getSupportedTlsCiphers()
 {
     //Currently, both OpenSSL and GNUTLS implementations are static
     //reloading this for each account is unnecessary
@@ -1565,6 +1550,13 @@ SIPAccount::getSupportedCiphers() const
     return availCiphers;
 }
 
+const std::vector<std::string>&
+SIPAccount::getSupportedTlsProtocols()
+{
+    static std::vector<std::string> availProtos {VALID_TLS_PROTOS, VALID_TLS_PROTOS+RING_ARRAYSIZE(VALID_TLS_PROTOS)};
+    return availProtos;
+}
+
 void SIPAccount::keepAliveRegistrationCb(UNUSED pj_timer_heap_t *th, pj_timer_entry *te)
 {
     SIPAccount *sipAccount = static_cast<SIPAccount *>(te->user_data);
diff --git a/src/sip/sipaccount.h b/src/sip/sipaccount.h
index 8aeb31e4ee8db82612daa35e30282206e5092fdf..f863635eb5d77bae6d9bd481a67aec03e7701a0c 100644
--- a/src/sip/sipaccount.h
+++ b/src/sip/sipaccount.h
@@ -342,7 +342,8 @@ class SIPAccount : public SIPAccountBase {
             return stunServerName_;
         }
 
-        const std::vector<std::string>& getSupportedCiphers() const;
+        static const std::vector<std::string>& getSupportedTlsCiphers();
+        static const std::vector<std::string>& getSupportedTlsProtocols();
 
         /**
          * @return pj_uint8_t structure, filled from the configuration
@@ -594,17 +595,13 @@ class SIPAccount : public SIPAccountBase {
 
 #if HAVE_TLS
 
-        static const CipherArray TLSv1_DEFAULT_CIPHER_LIST;
-        static const CipherArray SSLv3_DEFAULT_CIPHER_LIST;
-        static const CipherArray SSLv23_DEFAULT_CIPHER_LIST;
-
         /**
          * Maps a string description of the SSL method
          * to the corresponding enum value in pjsip_ssl_method.
          * @param method The string representation
          * @return pjsip_ssl_method The corresponding value in the enum
          */
-        static pjsip_ssl_method sslMethodStringToPjEnum(const std::string& method);
+        static pj_uint32_t tlsProtocolFromString(const std::string& method);
 
         /**
          * Initializes tls settings from configuration file.