Commit Graph

79 Commits (df768914a151a620399dfbde753c26f86d4d7bf0)

Author SHA1 Message Date
Felix Fontein 26edeb7cce Refactoring GET request handling. (#45051) 2018-09-04 21:28:04 +02:00
Felix Fontein fec302b162 Fixing typo in acme_certificate docs. (#45082) 2018-09-02 13:01:45 -04:00
lolcube 1fac494d8c fix typo (#44712) 2018-08-27 14:35:53 +02:00
Felix Fontein fadf8a2d09 ACME: improve documentation (#44691)
* Override description for account_key_src and account_key_content to also mention private_key_*.

* Convert generic OpenSSL/cryptography remark from description to note.

This avoids the whole description list to be sorted alphabetically, which will be done by plugin_docs.py in case description is mentioned in both module fragment and module itself.

* Moving more notes to the notes: section.

* Uniformization of first paragraph. Mainly mention ACME supporting CAs, and only then mention Let's Encrypt as one of them.

* Adjusting to current drafts.

* Adjusting to updated drafts.

* Harmonizing short module descriptions.

* Referencing helper modules.

* Move general Let's Encrypt remark to doc fragment.

* Changing some Let's Encrypt references to more generic statements.
2018-08-26 22:46:55 +02:00
Felix Fontein 0e6234ab04 Adding module which allows to complete certificate chains (#44169)
* Adding certificate_complete_chain module.

* Avoid code smell errors.

* Removing input_chain_src.

* Make sure line ending is there.
2018-08-23 23:18:36 +02:00
Guillaume Delpierre 23e44319ce crypto: Add new module openssl_pkcs12 (#27320)
[module] Create new module to handle PKCS#12 file.
2018-08-23 08:15:22 -07:00
Felix Fontein 960d99a785 ACME: new helper module for ACME challenges which need TLS certs (#43756)
* Added helper module for generating ACME challenge certificates.

* Soft-fail on missing cryptography. Also check version.

* Adding integration test.

* Move acme_challenge_cert_helper from web_infrastructure to crypto/acme.

* Adjusting to draft-05.

* The cryptography branch has already been merged.
2018-08-22 23:12:43 +02:00
♫ Christian Krause ♫ d779eb1f15 doc: fixes the the repetitions (#43937)
Wow, this does not seem to be an uncommon misspelling. Might be there
are some left that span over two lines. I noticed the one in the git
module and then used `grep -rw 'the the'` to find some more.
2018-08-22 21:53:30 +02:00
Felix Fontein a99cfc1814 New acme_account_facts module. (#44301) 2018-08-17 15:32:09 +02:00
Felix Fontein cfba02bc3b Allowing to force account URI. (#44282) 2018-08-17 07:43:38 +02:00
Felix Fontein f7ac1c588d Move acme_* modules from web_infrastructure into crypto category (#44279)
* Moving acme_* modules from web_infrastructure into crypto category.

* Creating new subcategory 'acme' in 'crypto'.
2018-08-16 22:21:39 +02:00
Xyon 9121f2a4c9 Validate and reject if csr_path is not supplied when provider is not assertonly (#41385) 2018-07-27 05:24:51 -04:00
Loïc b61b113fb9 new provider: ownca (#35840) 2018-06-21 12:41:00 +05:30
Abhijeet Kasurde 671babd9aa openssl_csr: Update example (#41677)
Update example of Subject Alternative Name with dynamic list.

Fixes: #33676

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-06-20 02:28:59 -04:00
Michael Scherer 5bdd91d75f Return changed=True if a new certificate was written (#41445) 2018-06-12 10:17:29 -04:00
Abhijeet Kasurde b310b278be
Convert valid_date to bytes for conversion (#40872)
Fixes: #40523

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-06-11 19:23:53 +05:30
John R Barker 7c4b91844d
More validate module fixes (#39097)
* Fix type bool DOCUMENTATION issues
2018-04-24 18:05:50 +01:00
Yanis Guenane 99497ce54c openssl_certificate: Handle dump() in check_mode (#38386)
Currently, when ones run the module in check_mode it tries to retrieve
values from the actual certificate generated in the generate() function.

Since in check_mode we call dump() without calling generate(), self.cert
is None, leading to self.cert.get_notBefore(), self.cert.get_notAfter()
and self.cert.get_serial_number() raising an error.

>  NoneType' object has no attribute 'get_notBefore'

The solution is to have two way to handle dump() method, whether its run
in check_mode=True or check_mode=False leading to different way the
information is retrieved.
2018-04-09 09:26:02 +01:00
Yanis Guenane 6633eaa2c1 crypto: Fix incorrect type for privatekey_passphrase (#36868)
Fix incorrect type for privatekey_passphrase path -> str
2018-02-28 17:19:22 +01:00
Michael Scherer eb162bdf7f Add space between arguments for acme-tiny (#36739)
Currently, the module fail with a error saying that --acme-dir is mandatory.
Looking at the commandline:

    /usr/sbin/acme-tiny --chain --account-key /srv/letsencrypt/acme_key/acme.key
    --csr /srv/letsencrypt/nginx_certs/www.example.org.csr--acme-dir /srv/letsencrypt/webroot",

We can see that the space before --acme-dir is missing.
2018-02-26 09:15:17 -05:00
Sam Doran b7f4b89757 Code style words in docs 2018-02-08 15:58:01 -05:00
Yanis Guenane b37549f679 openssl_csr: Improved documentation on subject_alt_name possible values 2018-02-08 15:58:01 -05:00
Felix Fontein d1f19125a5 openssl_csr: added support for the OCSP Must Staple extension (#35082)
* Added support for the OCSP Must Staple extension.

* Trying to clean up magic constants a bit.
2018-02-08 12:03:28 +00:00
Michael Scherer 2efd6bcaac Remove deadcode since diff is never used (#35147)
Flake8 keep warning me about that
2018-02-07 05:03:22 -05:00
Thom Wiggers e2af5dfae0 Module to generate Diffie-Hellman parameters (#32620)
* Module to generate Diffie-Hellman parameters

Implements #32577

* Add integration tests for openssl_dhparam

* Slightly refactor check to prevent unnecessary regeneration

* Fix code smell in tests

Highly annoying to have to do this again and again and again as the rules change during the game

* Using module.run_command() and module.atomic_move() from a tempfile.

* Remove underscore variable

Ansible prefers dummy
2018-01-26 08:08:29 +00:00
Michael Scherer 8071cc0529 Add support for adding the intermediate cert (#35144)
acme-tiny generate certificate without adding add the LE intermediate
certificate, which make several browsers and curl complain.
2018-01-21 15:39:22 -05:00
Michael Scherer 347b5d1e50 write need bytes object on python 3 (#35143)
Otherwise, it fail with:

    Traceback (most recent call last):
      File \"/tmp/ansible_c1zmq3i9/ansible_module_openssl_certificate.py\", line 808, in <module>
        main()
      File \"/tmp/ansible_c1zmq3i9/ansible_module_openssl_certificate.py\", line 787, in main
        certificate.generate(module)
      File \"/tmp/ansible_c1zmq3i9/ansible_module_openssl_certificate.py\", line 692, in generate
        certfile.write(str(crt))
    TypeError: a bytes-like object is required, not 'str'
2018-01-21 06:26:32 -05:00
Michael Scherer f23f277e46 Verify that acme-tiny is present (#35145)
* Verify that acme-tiny is present

* Use run_command rather than subprocess for acme-tiny

Besides consistency with the rest of the code base, this also
add 2 bug fixes:
- ansible should no longer show "warning, junk after json" when using the module
- it also verify the return code of acme-tiny, and so fail when the
verification fail. The previous code didn't check rc, so it would continue
with a empty file
2018-01-21 06:26:18 -05:00
Ulf Tigerstedt fb18338cdc Change documentation for path: in openssl_csr to match reality (#35045) 2018-01-18 09:43:05 -05:00
Yanis Guenane a2b00e9b52 openssl_certificate: Ensure issuer field is set (#34982)
Ensure the Issuer field of the certificate is set when using the
selfsigned backend.

Fixes: https://github.com/ansible/ansible/issues/34963
2018-01-18 13:35:05 +00:00
John R Barker 195beebcb4
Module DOCUMENTATION should match argspec (#34895)
* Module DOCUMENTATION should match argspec

Large update of many modules so that DOCUMENTATION option name and
aliases match those defined in the argspec.

Issues identified by https://github.com/ansible/ansible/pull/34809

In addition to many typos and missing aliases, the following notable
changes were made:

* Create `module_docs_fragments/url.py` for `url_argument_spec`
* `dellos*_command` shouldn't have ever had `waitfor` (was incorrectly copied)
* `ce_aaa_server_host.py` `s/raduis_server_type/radius_server_type/g`
* `Junos_lldp` enable should be part of `state`.
2018-01-16 12:18:51 +00:00
MarkusTeufelberger 10b3431990 expose subject_strict and issuer_strict to users (#34090) 2018-01-04 04:43:37 -05:00
MarkusTeufelberger 070ea3270c add usage example for the assertonly provider (#34092) 2017-12-21 13:38:15 +10:00
Yanis Guenane a724b8e722 openssl_certificate: Return self.cert.get_VALUES() (#33970)
Currently when we make up the return value, we take values based of the
parameters rather than the generated openssl_certificate itself.

This commits returns the actual certificate values making it all time
accurate.
2017-12-18 14:34:34 +05:30
MarkusTeufelberger 9ea1b18ff7 Allow multiple values per key in name fields in openssl_certificate/csr (#30338)
* allow multiple values per key in name fields in openssl_certificate

* check correct side of comparison

* trigger only on lists

* add subject parameter to openssl_csr

* fix key: value mapping not skipping None elements

* temporary fix for undefined "subject" field

* fix iteration over subject entries

* fix docs

* quote sample string

* allow csr with only subject defined

* fix integration test

* look up NIDs before comparing, add hidden _strict params

* deal with empty issuer/subject fields

* adapt integration tests

* also normalize output from pyopenssl

* fix issue with _sanitize_inputs

* don't convert empty lists

* workaround for pyopenssl limitations

* properly encode the input to the txt2nid function

* another to_bytes fix

* make subject, commonname and subjecAltName completely optional

* don't compare hashes of keys in openssl_csr integration tests

* add integration test for old API in openssl_csr

* compare keys directly in certificate and publickey integration tests

* fix typo
2017-12-12 12:35:22 +00:00
Abhijeet Kasurde d78d044142 Fix documentation about mode in openssl_privatekey (#32664)
This fixes adds documentation about undocumented parameter
'mode'. Also, adds logic to specify mode in custom symbolic permissions.

Fixes: #32616

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2017-12-07 04:47:23 -05:00
Thom Wiggers 04877f4969 Support basicConstraints in openssl_csr (#32632) 2017-11-30 19:20:45 +05:30
Yanis Guenane a773bd7ad5 openssl_publickey: Ensure format OpenSSH is idempotent (#33264)
Currently the check() method for idempotence only assumes the public
key is under the form of a PEM file when its not always the case.

The module openssl_publickey allows one to generate OpenSSH format
publickey. This leads to idempotence not being detected.
2017-11-28 14:08:47 +05:30
Satyajit Bulage 341e79b604 Removes 'md5' as it only compares two hashes. (#33286)
Removing 'md5' checksum checking as simply comparing current and desired publickey does the expected job.

Signed-off-by: Satyajit Bulage <sbulage@redhat.com>
2017-11-28 13:51:17 +05:30
Yanis Guenane c800048e93 Adding extends_documenation_fragment in crypto/* (#33253)
All crypto modules uses file common arguments to specify generated file
permissions. This commits aims to add the extends_documentation_fragment
in the doc so it is automatically stated.
2017-11-25 22:50:28 +01:00
Yanis Guenane 32635577a3 openssl_publickey: Do not fail on empty existing file (#33255)
Currently during the check phase, the code considers the file to be
a public key if the file exist - which is not necessarily true.

This commits aims to ensure that the file is actually a publickey else
returns false for the check.
2017-11-25 03:29:06 +00:00
Thom Wiggers 16e98c8c5b Fix a typo in the examples (#32599) 2017-11-06 19:39:10 +01:00
MarkusTeufelberger acf99085b5 openssl_certificate: compare bytes with bytes on python3 (#30522)
* compare bytes with bytes on python3
2017-09-25 12:13:50 -07:00
Yanis Guenane 0648e339a7 openssl: remove static dict for keyUsage (#30339)
keyUsage and extendedKeyUsage are currently statically limited via a
static dict defined in modules_utils/crypto.py. If one specify a value
that isn't in there, idempotency won't work.

Instead of having static dict, we uses keyUsage and extendedKyeUsage
values OpenSSL NID and compare those rather than comparing strings.

Fixes: https://github.com/ansible/ansible/issues/30316
2017-09-14 12:03:00 -04:00
Yanis Guenane 3e4a306a42 openssl_certificate: Correctly set the version (#30314)
Current openssl_certificate is mistakenly taking its derivating its
version number from the csr version number.

Thos two fields are completly unrelated and hence the version number of
the certificate should be able to be directly specified (via
selfsigned_version parameter).
2017-09-14 15:21:32 +02:00
MarkusTeufelberger 2186b04934 Add simple integration test for openssl_certificate (#29038)
* openssl_certificate: Fix parameter assertion in Python3

Parameter assertion in Python3 is broken. pyOpenSSL get_X() functions
returns b'' type string and tries to compare it with '' string, leading
to failure.

The error mentionned above has been fixed by sanitizing the inputs from
a user to the assert only backend.

Also, this error was hidden by the fact that the improper check method
was called in the generate() functions.

* Add simple integration test for openssl_certificate

* remove subject == issuer assertion

* run integration tests only on supported hosts

* change min supported version to 0.15.x

* Add test for more CSR fields

* also convert dict members to bytes

* fix version_compare

* openssl_{csr, certificate}: Fail if pyOpenSSL <= 0.15

Previous 0.13 pyOpenSSL was a C-binding, and required the parameter
passed to add_extention to be in ASN.1. This has changed with the move
to 0.14 and it is now all pythong and string based.

Previous the 0.15 release, the `get_extensions()` method didn't exist,
since the modules rely heavily on it we ensure pyOpenSSL version is at
last 0.15.0.

* check pyopenssl version in openssl_csr integration test
2017-09-13 14:39:32 -07:00
Christian Pointner 1fe5171f1a openssl_certificate: make subject-alt-name identifier conistent with openssl_csr (#30151) 2017-09-13 05:06:23 -04:00
Christian Pointner 177ce3014c openssl_csr: consistent param namings (#29604)
* harmonize openssl-csr argument names

* the module has been introduced by 2.4 not only the privatekey_passphrase
2017-09-11 21:05:15 +02:00
René Moser f23f2468ec openssl_certificate: fix arg docs for not_before (#28985) 2017-09-04 12:31:28 +02:00
René Moser c1be5b2389 openssl_certificate: consistent param namings (#28521) 2017-08-28 17:29:16 +02:00