--- ext/dtls/gstdtlsagent.c
+++ ext/dtls/gstdtlsagent.c
@@ -176,7 +176,7 @@ gst_dtls_agent_init (GstDtlsAgent * self
 
   ERR_clear_error ();
 
-#if OPENSSL_VERSION_NUMBER >= 0x1000200fL
+#if OPENSSL_VERSION_NUMBER >= 0x1000200fL && !defined(LIBRESSL_VERSION_NUMBER)
   priv->ssl_context = SSL_CTX_new (DTLS_method ());
 #else
   priv->ssl_context = SSL_CTX_new (DTLSv1_method ());
--- ext/dtls/gstdtlsconnection.c
+++ ext/dtls/gstdtlsconnection.c
@@ -215,7 +215,7 @@ gst_dtls_connection_finalize (GObject * gobject)
   G_OBJECT_CLASS (gst_dtls_connection_parent_class)->finalize (gobject);
 }
 
-#if OPENSSL_VERSION_NUMBER < 0x10100001L
+#if (OPENSSL_VERSION_NUMBER < 0x10100001L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000)
 static void
 BIO_set_data (BIO * bio, void *ptr)
 {
@@ -606,7 +606,7 @@ log_state (GstDtlsConnection * self, const gchar * str)
   states |= (! !SSL_want_write (priv->ssl) << 20);
   states |= (! !SSL_want_read (priv->ssl) << 24);
 
-#if OPENSSL_VERSION_NUMBER < 0x10100001L
+#if (OPENSSL_VERSION_NUMBER < 0x10100001L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000)
   GST_LOG_OBJECT (self, "%s: role=%s buf=(%d,%p:%d/%d) %x|%x %s",
       str,
       priv->is_client ? "client" : "server",
@@ -821,7 +821,7 @@ openssl_verify_callback (int preverify_ok, X509_STORE_CTX * x509_ctx)
     ########  ####  #######
 */
 
-#if OPENSSL_VERSION_NUMBER < 0x10100001L
+#if (OPENSSL_VERSION_NUMBER < 0x10100001L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000)
 static BIO_METHOD custom_bio_methods = {
   BIO_TYPE_BIO,
   "stream",
