##### 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 -->
```

```

for k, v in csr_subject_components:
                if k.upper() == 'O':
                    
                    if self.csr_org is not None:
                        module.fail_json(msg=("Entrust provider does not currently support multiple validated organizations. Multiple organizations found in "
                                              "Subject DN: '{0}'. ".format(csr_subject)))
                    else:
                        self.csr_org = v
        elif self.backend == 'cryptography':
            csr_subject_orgs = self.csr.subject.get_attributes_for_oid(NameOID.ORGANIZATION_NAME)
            if len(csr_subject_orgs) == 1:
                self.csr_org = csr_subject_orgs[0].value
            elif len(csr_subject_orgs) > 1:
                module.fail_json(msg=("Entrust provider does not currently support multiple validated organizations. Multiple organizations found in "
                                      "Subject DN: '{0}'. ".format(self.csr.subject)))
        
        
        if self.csr_org is None:
            self.csr_org = ''
        try:
            self.ecs_client = ECSClient(
                entrust_api_user=module.params.get('entrust_api_user'),
                entrust_api_key=module.params.get('entrust_api_key'),
                entrust_api_cert=module.params.get('entrust_api_client_cert_path'),
                entrust_api_cert_key=module.params.get('entrust_api_client_cert_key_path'),
                entrust_api_specification_path=module.params.get('entrust_api_specification_path')
            )
        except SessionConfigurationException as e:
            module.fail_json(msg='Failed to initialize Entrust Provider: {0}'.format(to_native(e.message)))
    def generate(self, module):