Merge branch '2.3' into 2.4
This commit is contained in:
		@ -34,13 +34,10 @@ class MXS_CONFIG_PARAMETER;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
enum ssl_method_type_t
 | 
					enum ssl_method_type_t
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifndef OPENSSL_1_1
 | 
					 | 
				
			||||||
    SERVICE_TLS10,
 | 
					    SERVICE_TLS10,
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef OPENSSL_1_0
 | 
					 | 
				
			||||||
    SERVICE_TLS11,
 | 
					    SERVICE_TLS11,
 | 
				
			||||||
    SERVICE_TLS12,
 | 
					    SERVICE_TLS12,
 | 
				
			||||||
#endif
 | 
					    SERVICE_TLS13,
 | 
				
			||||||
    SERVICE_SSL_MAX,
 | 
					    SERVICE_SSL_MAX,
 | 
				
			||||||
    SERVICE_TLS_MAX,
 | 
					    SERVICE_TLS_MAX,
 | 
				
			||||||
    SERVICE_SSL_TLS_MAX,
 | 
					    SERVICE_SSL_TLS_MAX,
 | 
				
			||||||
 | 
				
			|||||||
@ -41,13 +41,10 @@ static RSA* rsa_1024 = NULL;
 | 
				
			|||||||
const MXS_ENUM_VALUE ssl_version_values[] =
 | 
					const MXS_ENUM_VALUE ssl_version_values[] =
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    {"MAX",    SERVICE_SSL_TLS_MAX},
 | 
					    {"MAX",    SERVICE_SSL_TLS_MAX},
 | 
				
			||||||
#ifndef OPENSSL_1_1
 | 
					 | 
				
			||||||
    {"TLSv10", SERVICE_TLS10      },
 | 
					    {"TLSv10", SERVICE_TLS10      },
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef OPENSSL_1_0
 | 
					 | 
				
			||||||
    {"TLSv11", SERVICE_TLS11      },
 | 
					    {"TLSv11", SERVICE_TLS11      },
 | 
				
			||||||
    {"TLSv12", SERVICE_TLS12      },
 | 
					    {"TLSv12", SERVICE_TLS12      },
 | 
				
			||||||
#endif
 | 
					    {"TLSv13", SERVICE_TLS13      },
 | 
				
			||||||
    {NULL}
 | 
					    {NULL}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -122,19 +119,18 @@ const char* ssl_method_type_to_string(ssl_method_type_t method_type)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    switch (method_type)
 | 
					    switch (method_type)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#ifndef OPENSSL_1_1
 | 
					 | 
				
			||||||
    case SERVICE_TLS10:
 | 
					    case SERVICE_TLS10:
 | 
				
			||||||
        return "TLSV10";
 | 
					        return "TLSv10";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef OPENSSL_1_0
 | 
					 | 
				
			||||||
    case SERVICE_TLS11:
 | 
					    case SERVICE_TLS11:
 | 
				
			||||||
        return "TLSV11";
 | 
					        return "TLSv11";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case SERVICE_TLS12:
 | 
					    case SERVICE_TLS12:
 | 
				
			||||||
        return "TLSV12";
 | 
					        return "TLSv12";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case SERVICE_TLS13:
 | 
				
			||||||
 | 
					        return "TLSv13";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    case SERVICE_SSL_MAX:
 | 
					    case SERVICE_SSL_MAX:
 | 
				
			||||||
    case SERVICE_TLS_MAX:
 | 
					    case SERVICE_TLS_MAX:
 | 
				
			||||||
    case SERVICE_SSL_TLS_MAX:
 | 
					    case SERVICE_SSL_TLS_MAX:
 | 
				
			||||||
@ -151,14 +147,10 @@ ssl_method_type_t string_to_ssl_method_type(const char* str)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return SERVICE_SSL_TLS_MAX;
 | 
					        return SERVICE_SSL_TLS_MAX;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef OPENSSL_1_1
 | 
					 | 
				
			||||||
    else if (strcasecmp("TLSV10", str) == 0)
 | 
					    else if (strcasecmp("TLSV10", str) == 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return SERVICE_TLS10;
 | 
					        return SERVICE_TLS10;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef OPENSSL_1_0
 | 
					 | 
				
			||||||
    else if (strcasecmp("TLSV11", str) == 0)
 | 
					    else if (strcasecmp("TLSV11", str) == 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return SERVICE_TLS11;
 | 
					        return SERVICE_TLS11;
 | 
				
			||||||
@ -167,8 +159,10 @@ ssl_method_type_t string_to_ssl_method_type(const char* str)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return SERVICE_TLS12;
 | 
					        return SERVICE_TLS12;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					    else if (strcasecmp("TLSV13", str) == 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return SERVICE_TLS13;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return SERVICE_SSL_UNKNOWN;
 | 
					    return SERVICE_SSL_UNKNOWN;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -240,22 +234,43 @@ bool SSLContext::init()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    switch (m_cfg.version)
 | 
					    switch (m_cfg.version)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#ifndef OPENSSL_1_1
 | 
					 | 
				
			||||||
    case SERVICE_TLS10:
 | 
					    case SERVICE_TLS10:
 | 
				
			||||||
 | 
					#ifndef OPENSSL_1_1
 | 
				
			||||||
        m_method = (SSL_METHOD*)TLSv1_method();
 | 
					        m_method = (SSL_METHOD*)TLSv1_method();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        MXS_ERROR("TLSv1.0 is not supported on this system.");
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
#ifdef OPENSSL_1_0
 | 
					 | 
				
			||||||
    case SERVICE_TLS11:
 | 
					    case SERVICE_TLS11:
 | 
				
			||||||
 | 
					#ifdef OPENSSL_1_0
 | 
				
			||||||
        m_method = (SSL_METHOD*)TLSv1_1_method();
 | 
					        m_method = (SSL_METHOD*)TLSv1_1_method();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        MXS_ERROR("TLSv1.1 is not supported on this system.");
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case SERVICE_TLS12:
 | 
					    case SERVICE_TLS12:
 | 
				
			||||||
 | 
					#ifdef OPENSSL_1_0
 | 
				
			||||||
        m_method = (SSL_METHOD*)TLSv1_2_method();
 | 
					        m_method = (SSL_METHOD*)TLSv1_2_method();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        MXS_ERROR("TLSv1.2 is not supported on this system.");
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case SERVICE_TLS13:
 | 
				
			||||||
 | 
					#ifdef OPENSSL_1_1
 | 
				
			||||||
 | 
					        m_method = (SSL_METHOD*)TLS_method();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        MXS_ERROR("TLSv1.3 is not supported on this system.");
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** Rest of these use the maximum available SSL/TLS methods */
 | 
					    /** Rest of these use the maximum available SSL/TLS methods */
 | 
				
			||||||
    case SERVICE_SSL_MAX:
 | 
					    case SERVICE_SSL_MAX:
 | 
				
			||||||
        m_method = (SSL_METHOD*)SSLv23_method();
 | 
					        m_method = (SSL_METHOD*)SSLv23_method();
 | 
				
			||||||
@ -290,6 +305,13 @@ bool SSLContext::init()
 | 
				
			|||||||
    /** Disable SSLv3 */
 | 
					    /** Disable SSLv3 */
 | 
				
			||||||
    SSL_CTX_set_options(m_ctx, SSL_OP_NO_SSLv3);
 | 
					    SSL_CTX_set_options(m_ctx, SSL_OP_NO_SSLv3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (m_cfg.version == SERVICE_TLS13)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // There is no TLSv1_3_method function as the TLSv1_X_method functions are deprecated in favor of
 | 
				
			||||||
 | 
					        // disabling them via options.
 | 
				
			||||||
 | 
					        SSL_CTX_set_options(m_ctx, SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Disable session cache
 | 
					    // Disable session cache
 | 
				
			||||||
    SSL_CTX_set_session_cache_mode(m_ctx, SSL_SESS_CACHE_OFF);
 | 
					    SSL_CTX_set_session_cache_mode(m_ctx, SSL_SESS_CACHE_OFF);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user