support registeredID general name in OpenSSL backend
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index cc4a92a..c21aeeb 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -63,6 +63,9 @@
     if gn.type == backend._lib.GEN_DNS:
         data = backend._ffi.buffer(gn.d.dNSName.data, gn.d.dNSName.length)[:]
         return x509.DNSName(idna.decode(data))
+    elif gn.type == backend._lib.GEN_RID:
+        oid = _obj2txt(backend, gn.d.registeredID)
+        return x509.RegisteredID(x509.ObjectIdentifier(oid))
     else:
         # otherName, x400Address or ediPartyName
         raise x509.UnsupportedGeneralNameType(
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 1283fca..bce6781 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -770,3 +770,21 @@
             cert.extensions
 
         assert exc.value.type == 0
+
+    def test_registered_id(self, backend):
+        cert = _load_cert(
+            os.path.join(
+                "x509", "custom", "san_registered_id.pem"
+            ),
+            x509.load_pem_x509_certificate,
+            backend
+        )
+        ext = cert.extensions.get_extension_for_oid(
+            x509.OID_SUBJECT_ALTERNATIVE_NAME
+        )
+        assert ext is not None
+        assert ext.critical is False
+
+        san = ext.value
+        rid = san.get_values_for_type(x509.RegisteredID)
+        assert rid == [x509.ObjectIdentifier("1.2.3.4")]