diff --git a/src/cryptography/hazmat/bindings/openssl/binding.py b/src/cryptography/hazmat/bindings/openssl/binding.py
--- a/src/cryptography/hazmat/bindings/openssl/binding.py
+++ b/src/cryptography/hazmat/bindings/openssl/binding.py
@@ -5,6 +5,7 @@
 from __future__ import absolute_import, division, print_function
 
 import collections
+import os
 import threading
 import types
 import warnings
@@ -170,12 +171,19 @@ def _verify_openssl_version(lib):
         lib.CRYPTOGRAPHY_OPENSSL_LESS_THAN_110
         and not lib.CRYPTOGRAPHY_IS_LIBRESSL
     ):
-        warnings.warn(
-            "OpenSSL version 1.0.2 is no longer supported by the OpenSSL "
-            "project, please upgrade. The next version of cryptography will "
-            "drop support for it.",
-            utils.CryptographyDeprecationWarning,
-        )
+        if os.environ.get("CRYPTOGRAPHY_ALLOW_OPENSSL_102"):
+            warnings.warn(
+                "OpenSSL version 1.0.2 is no longer supported by the OpenSSL "
+                "project, please upgrade. The next version of cryptography "
+                "will completely remove support for it.",
+                utils.CryptographyDeprecationWarning,
+            )
+        else:
+            raise RuntimeError(
+                "You are linking against OpenSSL 1.0.2, which is no longer "
+                "supported by the OpenSSL project. You need to upgrade to a "
+                "newer version of OpenSSL."
+            )
 
 
 def _verify_package_version(version):

diff --git a/tests/hazmat/bindings/test_openssl.py b/tests/hazmat/bindings/test_openssl.py
--- a/tests/hazmat/bindings/test_openssl.py
+++ b/tests/hazmat/bindings/test_openssl.py
@@ -4,6 +4,8 @@
 
 from __future__ import absolute_import, division, print_function
 
+import pretend
+
 import pytest
 
 from cryptography.exceptions import InternalError
@@ -11,6 +13,7 @@
     Binding,
     _consume_errors,
     _openssl_assert,
+    _verify_openssl_version,
     _verify_package_version,
 )
 
@@ -125,3 +128,12 @@ def test_check_startup_errors_are_allowed(self):
     def test_version_mismatch(self):
         with pytest.raises(ImportError):
             _verify_package_version("nottherightversion")
+
+    def test_verify_openssl_version(self, monkeypatch):
+        monkeypatch.delenv("CRYPTOGRAPHY_ALLOW_OPENSSL_102", raising=False)
+        lib = pretend.stub(
+            CRYPTOGRAPHY_OPENSSL_LESS_THAN_110=True,
+            CRYPTOGRAPHY_IS_LIBRESSL=False,
+        )
+        with pytest.raises(RuntimeError):
+            _verify_openssl_version(lib)

Make OpenSSL 1.0.2 error (+ env var fallback)


tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_binding_loads tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_crypto_lock_init tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_add_engine_more_than_once tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_ssl_ctx_options tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_ssl_options tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_ssl_mode tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_conditional_removal tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_openssl_assert_error_on_stack tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_check_startup_errors_are_allowed tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_version_mismatch
tests/hazmat/bindings/test_openssl.py::TestOpenSSL::test_verify_openssl_version