diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index a6acb07..c32b527 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -819,7 +819,7 @@
         assert x509_req != self._ffi.NULL
 
         # Set x509 version.
-        res = self._lib.X509_REQ_set_version(x509_req, builder._version.value)
+        res = self._lib.X509_REQ_set_version(x509_req, x509.Version.v1.value)
         assert res == 1
 
         # Set subject name.
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index c59de60..b1aa067 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -1445,33 +1445,20 @@
 
 
 class CertificateSigningRequestBuilder(object):
-    def __init__(self, version=Version.v1, subject_name=None, extensions=[]):
+    def __init__(self, subject_name=None, extensions=[]):
         """
         Creates an empty X.509 certificate request (v1).
         """
-        self._version = Version.v1
         self._subject_name = subject_name
         self._extensions = extensions[:]
 
-    def set_version(self, version):
-        """
-        Sets the X.509 version.
-        """
-        if not isinstance(version, Version):
-            raise TypeError('Expecting x509.Version object.')
-        return CertificateSigningRequestBuilder(
-            version, self._subject_name, self._extensions
-        )
-
     def set_subject_name(self, name):
         """
         Sets the certificate requestor's distinguished name.
         """
         if not isinstance(name, Name):
             raise TypeError('Expecting x509.Name object.')
-        return CertificateSigningRequestBuilder(
-            self._version, name, self._extensions
-        )
+        return CertificateSigningRequestBuilder(name, self._extensions)
 
     def add_extension(self, extension):
         """
@@ -1483,7 +1470,7 @@
             if e.oid == extension.oid:
                 raise ValueError('This extension has already been set.')
         return CertificateSigningRequestBuilder(
-            self._version, self._subject_name, self._extensions + [extension]
+            self._subject_name, self._extensions + [extension]
         )
 
     def sign(self, backend, private_key, algorithm):
