diff --git a/src/ssl/Ssl.c b/src/ssl/Ssl.c
index 6501f25..9c24ad5 100644
--- a/src/ssl/Ssl.c
+++ b/src/ssl/Ssl.c
@@ -302,8 +302,8 @@ static boolean_t _retry(int socket, int *timeout, int (*callback)(int socket, ti
 
 
 #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
-static unsigned long _threadID() {
-        return (unsigned long)Thread_self();
+static void _threadID(CRYPTO_THREADID *id) {
+        CRYPTO_THREADID_set_numeric(id, (unsigned long)Thread_self());
 }
 
 
@@ -482,7 +482,7 @@ void Ssl_start() {
         instanceMutexTable = CALLOC(locks, sizeof(Mutex_T));
         for (int i = 0; i < locks; i++)
                 Mutex_init(instanceMutexTable[i]);
-        CRYPTO_set_id_callback(_threadID);
+        CRYPTO_THREADID_set_callback(_threadID);
         CRYPTO_set_locking_callback(_mutexLock);
 #endif
         if (File_exist(URANDOM_DEVICE))
@@ -496,7 +496,7 @@ void Ssl_start() {
 
 void Ssl_stop() {
 #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
-        CRYPTO_set_id_callback(NULL);
+        CRYPTO_THREADID_set_callback(NULL);
         CRYPTO_set_locking_callback(NULL);
         for (int i = 0; i < CRYPTO_num_locks(); i++)
                 Mutex_destroy(instanceMutexTable[i]);
@@ -510,7 +510,7 @@ void Ssl_stop() {
 
 void Ssl_threadCleanup() {
 #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
-        ERR_remove_state(0);
+        ERR_remove_thread_state(NULL);
 #endif
 }