diff --git a/main/iostream.c b/main/iostream.c
index 008888142b476c60572748f9683524679376fe55..a20a0489640426dfdfe63d7fe3586e1b8074bfc5 100644
--- a/main/iostream.c
+++ b/main/iostream.c
@@ -462,9 +462,19 @@ int ast_iostream_close(struct ast_iostream *stream)
 					SSL_get_error(stream->ssl, res));
 			}
 
+#if defined(OPENSSL_API_COMPAT) && OPENSSL_API_COMPAT >= 0x10100000L
+			if (!SSL_is_server(stream->ssl)) {
+#else
 			if (!stream->ssl->server) {
+#endif
 				/* For client threads, ensure that the error stack is cleared */
+#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < 0x10100000L
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+				ERR_remove_thread_state(NULL);
+#else
 				ERR_remove_state(0);
+#endif	/* OPENSSL_VERSION_NUMBER >= 0x10000000L */
+#endif  /* !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < 0x10100000L */
 			}
 
 			SSL_free(stream->ssl);
diff --git a/main/libasteriskssl.c b/main/libasteriskssl.c
index 16a1aa7395c250f45f28e1b4ff6dd5cccc5fd83b..9905b150c97077728ae5b79968668d01d4c81d9b 100644
--- a/main/libasteriskssl.c
+++ b/main/libasteriskssl.c
@@ -65,13 +65,14 @@ static void ssl_lock(int mode, int n, const char *file, int line)
 		return;
 	}
 
-	if (mode & CRYPTO_LOCK) {
+	if (mode & 0x1) {
 		ast_mutex_lock(&ssl_locks[n]);
 	} else {
 		ast_mutex_unlock(&ssl_locks[n]);
 	}
 }
 
+#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < 0x10100000L
 int SSL_library_init(void)
 {
 #if defined(AST_DEVMODE)
@@ -113,6 +114,7 @@ void ERR_free_strings(void)
 {
 	/* we can't allow this to be called, ever */
 }
+#endif /* !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < 0x10100000L */
 
 #endif /* HAVE_OPENSSL */
 
diff --git a/main/tcptls.c b/main/tcptls.c
index c8ebab43470d31badbe10556a18f936f5cb20dc6..6b040ae3e706cbe55a94cc98ab98959f76ccec2a 100644
--- a/main/tcptls.c
+++ b/main/tcptls.c
@@ -310,7 +310,7 @@ static int __ssl_setup(struct ast_tls_config *cfg, int client)
 	}
 
 	if (client) {
-#ifndef OPENSSL_NO_SSL2
+#if !defined(OPENSSL_NO_SSL2) && (OPENSSL_VERSION_NUMBER < 0x10100000L)
 		if (ast_test_flag(&cfg->flags, AST_SSL_SSLV2_CLIENT)) {
 			ast_log(LOG_WARNING, "Usage of SSLv2 is discouraged due to known vulnerabilities. Please use 'tlsv1' or leave the TLS method unspecified!\n");
 			cfg->ssl_ctx = SSL_CTX_new(SSLv2_client_method());