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

```

- The version of the certificate.
            - Nowadays it should almost always be 3.
            - This is only used by the C(assertonly) provider.
            - This option is deprecated since Ansible 2.9 and will be removed with the C(assertonly) provider in Ansible 2.13.
              For alternatives, see the example on replacing C(assertonly).
        type: int
    valid_at:
        description:
            - The certificate must be valid at this point in time.
            - The timestamp is formatted as an ASN.1 TIME.
            - This is only used by the C(assertonly) provider.
            - This option is deprecated since Ansible 2.9 and will be removed with the C(assertonly) provider in Ansible 2.13.
              For alternatives, see the example on replacing C(assertonly).
        type: str
    invalid_at:
        description:
            - The certificate must be invalid at this point in time.
            - The timestamp is formatted as an ASN.1 TIME.
            - This is only used by the C(assertonly) provider.
            - This option is deprecated since Ansible 2.9 and will be removed with the C(assertonly) provider in Ansible 2.13.
              For alternatives, see the example on replacing C(assertonly).
        type: str
    not_before:
        description:
            - The certificate must start to become valid at this point in time.
            - The timestamp is formatted as an ASN.1 TIME.
            - This is only used by the C(assertonly) provider.
            - This option is deprecated since Ansible 2.9 and will be removed with the C(assertonly) provider in Ansible 2.13.
              For alternatives, see the example on replacing C(assertonly).
        type: str