##### SUMMARY
Some of the providers for the openssl_certificate module attempt to load the contents of csr_path during their init() methods, 

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
crypto/openssl_certificate

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```
config file = /opt/ansible-openssl-module/molecule_openssl_test/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/python-environments/py36env/lib/python3.6/site-packages/ansible
  executable location = /opt/python-environments/py36env/bin/ansible
  python version = 3.6.7 (default, Dec  5 2018, 15:02:05) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Not applicable, bug identified during code review.

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```
- name: Generate self-signed certificate with cryptography, CSR is an invalid path
  openssl_certificate:
    path: /etc/ssl/crt/ansible.com.crt
    privatekey_path: /etc/ssl/private/ansible.com.pem
    csr_path: /etc/ssl/csr/ansible.com.INVALID.csr
    provider: selfsigned
- name: Generate self-signed certificate with pyopenssl, CSR is invalid path
    openssl_certificate:
    path: /etc/ssl/crt/ansible.com.crt
    privatekey_path: /etc/ssl/private/ansible.com.pem
    csr_path: /etc/ssl/csr/ansible.com.INVALID.csr
    provider: selfsigned
    select_crypto_backend: pyopenssl
- name: Generate OwnCA certificate with cryptography, CSR is invalid path
   openssl_certificate:
     path: /etc/ssl/crt/ansible.com.crt
     csr_path: /etc/ssl/csr/ansible.com.INVALID.csr
     ownca_path: /etc/ssl/crt/ansible_CA.crt
     ownca_privatekey_path: /etc/ssl/private/ansible_CA.pem
     provider: ownca
Name: Generate OwnCA certificate with pyopenssl, CSR is invalid path
   openssl_certificate:
     path: /etc/ssl/crt/ansible.com.crt
     csr_path: /etc/ssl/csr/ansible.com.INVALID.csr
     ownca_path: /etc/ssl/crt/ansible_CA.crt
     ownca_privatekey_path: /etc/ssl/private/ansible_CA.pem
     provider: ownca
     select_crypto_backend: pyopenssl
```
<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
Should throw error:
raise CertificateError(
                'The certificate signing request file %s does not exist' % self.csr_path
            )

That error is currently in the generate method instead of init(), so it ends up attempting the certificate load via crypto_utils.load_certificate_request in init prior to the check for file path existence.

##### ACTUAL RESULTS
Will update ticket to populate once I have a chance to create test cases.

<!--- Paste verbatim command output between quotes -->
```

```

rt = self.get_relative_time_option(self.valid_at, "valid_at")
        rt = to_bytes(rt, errors='surrogate_or_strict')
        return self.cert.get_notBefore(), rt, self.cert.get_notAfter()
    def _validate_invalid_at(self):
        rt = self.get_relative_time_option(self.invalid_at, "invalid_at")
        rt = to_bytes(rt, errors='surrogate_or_strict')
        return self.cert.get_notBefore(), rt, self.cert.get_notAfter()
    def _validate_valid_in(self):
        valid_in_asn1 = self.get_relative_time_option(self.valid_in, "valid_in")
        valid_in_date = to_bytes(valid_in_asn1, errors='surrogate_or_strict')
        return self.cert.get_notBefore(), valid_in_date, self.cert.get_notAfter()
class EntrustCertificate(Certificate):
    """Retrieve a certificate using Entrust (ECS)."""
    def __init__(self, module, backend):
        super(EntrustCertificate, self).__init__(module, backend)
        self.trackingId = None
        self.notAfter = self.get_relative_time_option(module.params['entrust_not_after'], 'entrust_not_after')
        if not os.path.exists(self.csr_path):
            raise CertificateError(
                'The certificate signing request file {0} does not exist'.format(self.csr_path)
            )
        self.csr = crypto_utils.load_certificate_request(self.csr_path, backend=self.backend)
        
        
        
        self.csr_org = None
        if self.backend == 'pyopenssl':
            csr_subject = self.csr.get_subject()
            csr_subject_components = csr_subject.get_components()