--- /dev/null
+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
+ }
+