diff --git a/OpenSSL/crypto.py b/OpenSSL/crypto.py
index e8b6d3c..b671d9e 100644
--- a/OpenSSL/crypto.py
+++ b/OpenSSL/crypto.py
@@ -1,4 +1,5 @@
-import warnings
+from warnings import warn
+from sys import version_info
 from time import time
 from base64 import b16encode
 from functools import partial
@@ -1956,7 +1957,12 @@
 
         # Backward compatibility
         if isinstance(passphrase, _text_type):
-            warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+            if version_info.major == 2:
+                warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+            elif version_info.major == 3:
+                warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+            else:
+                warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
             passphrase = passphrase.encode('utf-8')
 
         if self._cacerts is None:
@@ -2259,7 +2265,12 @@
 
     # Backward compatibility
     if isinstance(data, _text_type):
-        warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        if version_info.major == 2:
+            warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        elif version_info.major == 3:
+            warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        else:
+            warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
         data = data.encode('utf-8')
 
     digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest))
@@ -2299,7 +2310,12 @@
 
     # Backward compatibility
     if isinstance(data, _text_type):
-        warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        if version_info.major == 2:
+            warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        elif version_info.major == 3:
+            warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        else:
+            warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
         data = data.encode('utf-8')
 
     digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest))
@@ -2396,7 +2412,12 @@
 
     # Backward compatibility
     if isinstance(passphrase, _text_type):
-        warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        if version_info.major == 2:
+            warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        elif version_info.major == 3:
+            warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        else:
+            warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
         passphrase = passphrase.encode('utf-8')
 
     if isinstance(buffer, _text_type):
