Compatibility with CPython 2.5 though CPython 3.2
diff --git a/OpenSSL/crypto/x509name.c b/OpenSSL/crypto/x509name.c
index 4ff2c34..a62c957 100644
--- a/OpenSSL/crypto/x509name.c
+++ b/OpenSSL/crypto/x509name.c
@@ -202,13 +202,19 @@
     char *buffer;
     char *name;
 
-    if (!PyString_CheckExact(nameobj) || !(name = PyString_AsString(nameobj))) {
+    if (!PyBytes_CheckExact(nameobj) && !PyUnicode_CheckExact(nameobj)) {
         PyErr_Format(PyExc_TypeError,
                      "attribute name must be string, not '%.200s'",
                      Py_TYPE(nameobj)->tp_name);
         return -1;
     }
 
+#ifdef PY3
+    name = PyBytes_AsString(PyUnicode_AsASCIIString(nameobj));
+#else
+    name = PyBytes_AsString(nameobj);
+#endif
+
     if ((nid = OBJ_txt2nid(name)) == NID_undef)
     {
         /* Just like the case in the getattr function */