diff --git a/src/app/mumta.cpp b/src/app/mumta.cpp
index 001c8fafcc6c74fe039eae5bfe34e9083a297665..f9aca82989e37768e3b3e9f39229e21bde334b47 100644
--- a/src/app/mumta.cpp
+++ b/src/app/mumta.cpp
@@ -5,6 +5,7 @@
 
 #include "lib/ev/ev.hpp"
 #include "lib/nl/nl.hpp"
+#include "lib/openssl/openssl.hpp"
 
 #include "mumta/evloop.hpp"
 
@@ -18,6 +19,9 @@ int main() {
     if (!check_version_libnl()) {
         return 1;
     }
+    if (!check_version_openssl()) {
+        return 1;
+    }
 
     dctl_status_msg("Initializing");
     dctl_status_msg("Reading configuration");
diff --git a/src/app/mumta.ldflags b/src/app/mumta.ldflags
index 8c91bf42df5f889a4de0bb9777dfe33adbb3216a..6e8b4f222dd819bc408875db6c48297569b1c177 100644
--- a/src/app/mumta.ldflags
+++ b/src/app/mumta.ldflags
@@ -1,4 +1,5 @@
 `pkg-config --cflags --libs libsystemd`
 `pkg-config --cflags --libs libnl-3.0`
+`pkg-config --cflags --libs libssl libcrypto`
 -lev
 -pthread
diff --git a/src/lib/openssl/openssl.cpp b/src/lib/openssl/openssl.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..35677049e378e9d849f6ae060c29f5e9be2d8622
--- /dev/null
+++ b/src/lib/openssl/openssl.cpp
@@ -0,0 +1,36 @@
+#include "lib/openssl/openssl.hpp"
+
+#include <iomanip>
+#include <sstream>
+#include <string>
+
+#include <openssl/crypto.h>
+
+#include "service/daemonctl.hpp"
+
+bool check_version_openssl()
+{
+    auto ossl_version{OpenSSL_version_num()};
+    constexpr auto exp_version{OPENSSL_VERSION_NUMBER};
+    constexpr auto exp_mask{0xFFFF0000UL};
+
+    std::stringstream str;
+    str <<
+        "Checking dependency: libssl: detected " <<
+        std::hex << std::setw(8) << ossl_version <<
+        ", compiled " <<
+        std::hex << std::setw(8) << ossl_version;
+    dctl_status_msg(str.str().c_str());
+
+    if ((ossl_version & exp_mask) != (exp_version & exp_mask)) {
+        dctl_status_err("Checking dependency: libssl: failed version check: Major API version mismatch.\n");
+        return false;
+    }
+
+    if ((ossl_version & ~exp_mask) < (exp_version & ~exp_mask)) {
+        dctl_status_err("Checking dependency: libssl: failed version check: Minor API version too old.\n");
+        return false;
+    }
+
+    return true;
+}
diff --git a/src/lib/openssl/openssl.hpp b/src/lib/openssl/openssl.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5f62e6c039fb913757f0a41bc66b3579f5269932
--- /dev/null
+++ b/src/lib/openssl/openssl.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+bool check_version_openssl();