Skip to content

Latest commit

 

History

History
951 lines (653 loc) · 52.8 KB

CHANGELOG.rst

File metadata and controls

951 lines (653 loc) · 52.8 KB

Community Crypto Release Notes

Topics

Bugfix release.

  • execution environment definition - fix installation of python3-pyOpenSSL package on CentOS and RHEL (ansible-collections#606).
  • execution environment definition - fix source of python3-pyOpenSSL package for Rocky Linux 9+ (ansible-collections#606).

Bugfix and maintenance release.

  • x509_crl - the mode option is deprecated; use crl_mode instead. The mode option will change its meaning in community.crypto 3.0.0, and will refer to the CRL file's mode instead (ansible-collections#596).
  • openssh_keypair - always generate a new key pair if the private key does not exist. Previously, the module would fail when regenerate=fail without an existing key, contradicting the documentation (ansible-collections#598).
  • x509_crl - remove problem with ansible-core 2.16 due to AnsibleModule is now validating the mode parameter's values (ansible-collections#596).

Feature release.

  • get_certificate - add asn1_base64 option to control whether the ASN.1 included in the extensions return value is binary data or Base64 encoded (ansible-collections#592).

Maintenance release with improved documentation.

Feature and bugfix release.

Bugfix and feature release.

  • openssl_csr, openssl_csr_pipe - prevent invalid values for crl_distribution_points that do not have one of full_name, relative_name, and crl_issuer (ansible-collections#560).
  • openssl_publickey_info - do not crash with internal error when public key cannot be parsed (ansible-collections#551).
  • openssl_csr_info - Retrieve information from OpenSSL Certificate Signing Requests (CSR)
  • openssl_privatekey_info - Retrieve information from OpenSSL private keys
  • openssl_publickey_info - Retrieve information from OpenSSL public keys in PEM format
  • split_pem - Split PEM file contents into multiple objects
  • x509_certificate_info - Retrieve information from X.509 certificates in PEM format
  • x509_crl_info - Retrieve information from X.509 CRLs in PEM format

Regular feature release.

  • x509_certificate_info - adds issuer_uri field in return value based on Authority Information Access data (ansible-collections#530).

Maintenance release with improved documentation.

Feature release.

  • acme_* modules - handle more gracefully if CA's new nonce call does not return a nonce (ansible-collections#525).
  • acme_* modules - include symbolic HTTP status codes in error and log messages when available (ansible-collections#524).
  • openssl_pkcs12 - add option encryption_level which allows to chose compatibility2022 when cryptography >= 38.0.0 is used to enable a more backwards compatible encryption algorithm. If cryptography uses OpenSSL 3.0.0 or newer, the default algorithm is not compatible with older software (ansible-collections#523).

Maintenance release.

Feature release.

  • acme* modules - also support the HTTP 503 Service Unavailable and 408 Request Timeout response status for automatic retries (ansible-collections#513).

Feature release.

  • acme* modules - support the HTTP 429 Too Many Requests response status (ansible-collections#508).
  • openssh_keypair - added pkcs1, pkcs8, and ssh to the available choices for the private_key_format option (ansible-collections#511).

Maintenance release with improved licensing declaration and documentation fixes.

  • All software licenses are now in the LICENSES/ directory of the collection root. Moreover, SPDX-License-Identifier: is used to declare the applicable license for every file that is not automatically generated (ansible-collections#491).

Deprecation and bugfix release. No new features this time.

  • Support for Ansible 2.9 and ansible-base 2.10 is deprecated, and will be removed in the next major release (community.crypto 3.0.0). Some modules might still work with these versions afterwards, but we will no longer keep compatibility code that was needed to support them (ansible-collections#460).

Re-release of what was intended to be 2.3.3.

A mistake during the release process caused the 2.3.3 tag to end up on the commit for 1.9.17, which caused the release pipeline to re-publish 1.9.17 as 2.3.3.

This release is identical to what should have been 2.3.3, except that the version number has been bumped to 2.3.4 and this changelog entry for 2.3.4 has been added.

Bugfix release.

  • Include Apache-2.0.txt file for plugins/module_utils/crypto/_obj2txt.py and plugins/module_utils/crypto/_objects_data.py.
  • openssl_csr - the module no longer crashes with 'permitted_subtrees/excluded_subtrees must be a non-empty list or None' if only one of name_constraints_permitted and name_constraints_excluded is provided (ansible-collections#481).
  • x509_crl - do not crash when signing CRL with Ed25519 or Ed448 keys (ansible-collections#473, ansible-collections#474).

Maintenance and bugfix release.

  • Include simplified_bsd.txt license file for the ECS module utils.
  • certificate_complete_chain - do not stop execution if an unsupported signature algorithm is encountered; warn instead (ansible-collections#457).

Maintenance release.

  • Include PSF-license.txt file for plugins/module_utils/_version.py.

Feature and bugfix release.

  • Prepare collection for inclusion in an Execution Environment by declaring its dependencies. Please note that system packages are used for cryptography and PyOpenSSL, which can be rather limited. If you need features from newer cryptography versions, you will have to manually force a newer version to be installed by pip by specifying something like cryptography >= 37.0.0 in your Execution Environment's Python dependencies file (ansible-collections#440).
  • Support automatic conversion for Internalionalized Domain Names (IDNs). When passing general names, for example Subject Altenative Names to community.crypto.openssl_csr, these will automatically be converted to IDNA. Conversion will be done per label to IDNA2008 if possible, and IDNA2003 if IDNA2008 conversion fails for that label. Note that IDNA conversion requires the Python idna library to be installed. Please note that depending on which versions of the cryptography library are used, it could try to process the converted IDNA another time with the Python idna library and reject IDNA2003 encoded values. Using a new enough cryptography version avoids this (ansible-collections#426, ansible-collections#436).
  • acme_* modules - add parameter request_timeout to manage HTTP(S) request timeout (ansible-collections#447, ansible-collections#448).
  • luks_devices - added perf_same_cpu_crypt, perf_submit_from_crypt_cpus, perf_no_read_workqueue, perf_no_write_workqueue for performance tuning when opening LUKS2 containers (ansible-collections#427).
  • luks_devices - added persistent option when opening LUKS2 containers (ansible-collections#434).
  • openssl_csr_info - add name_encoding option to control the encoding (IDNA, Unicode) used to return domain names in general names (ansible-collections#436).
  • openssl_pkcs12 - allow to provide the private key as text instead of having to read it from a file. This allows to store the private key in an encrypted form, for example in Ansible Vault (ansible-collections#452).
  • x509_certificate_info - add name_encoding option to control the encoding (IDNA, Unicode) used to return domain names in general names (ansible-collections#436).
  • x509_crl - add name_encoding option to control the encoding (IDNA, Unicode) used to return domain names in general names (ansible-collections#436).
  • x509_crl_info - add name_encoding option to control the encoding (IDNA, Unicode) used to return domain names in general names (ansible-collections#436).

Regular maintenance release.

  • openssh_* modules - fix exception handling to report traceback to users for enhanced traceability (ansible-collections#417).

Regular bugfix release.

Regular bugfix release.

In this release, we extended the test matrix to include Alpine 3, ArchLinux, Debian Bullseye, and CentOS Stream 8. CentOS 8 was removed from the test matrix.

Bugfix release.

Regular bugfix and feature release.

  • openssh_cert - added ignore_timestamps parameter so it can be used semi-idempotent with relative timestamps in valid_to/valid_from (ansible-collections#379).

Feature and bugfix release.

  • Adjust error messages that indicate cryptography is not installed from Can't to Cannot (ansible-collections#374).
  • crypto_info - Retrieve cryptographic capabilities
  • openssl_privatekey_convert - Convert OpenSSL private keys

Documentation fix release. No actual code changes.

Bugfix release with extra forward compatibility for newer versions of cryptography.

  • acme_* modules - fix usage of fetch_url with changes in latest ansible-core devel branch (ansible-collections#339).
  • acme_certificate - avoid passing multiple certificates to cryptography's X.509 certificate loader when fullchain_dest is used (ansible-collections#324).
  • get_certificate, openssl_csr_info, x509_certificate_info - add fallback code for extension parsing that works with cryptography 36.0.0 and newer. This code re-serializes de-serialized extensions and thus can return slightly different values if the extension in the original CSR resp. certificate was not canonicalized correctly. This code is currently used as a fallback if the existing code stops working, but we will switch it to be the main code in a future release (ansible-collections#331).
  • luks_device - now also runs a built-in LUKS signature cleaner on state=absent to make sure that also the secondary LUKS2 header is wiped when older versions of wipefs are used (ansible-collections#326, ansible-collections#327).
  • openssl_pkcs12 - use new PKCS#12 deserialization infrastructure from cryptography 36.0.0 if available (ansible-collections#302).

A new major release of the community.crypto collection. The main changes are removal of the PyOpenSSL backends for almost all modules (openssl_pkcs12 being the only exception), and removal of the assertonly provider in the x509_certificate provider. There are also some other breaking changes which should improve the user interface/experience of this collection long-term.

  • Adjust dirName text parsing and to text converting code to conform to Sections 2 and 3 of RFC 4514. This is similar to how cryptography handles this (ansible-collections#274).
  • acme module utils - removing compatibility code (ansible-collections#290).
  • acme_* modules - removed vendored copy of the Python library ipaddress. If you are using Python 2.x, please make sure to install the library (ansible-collections#287).
  • compatibility module_utils - removed vendored copy of the Python library ipaddress (ansible-collections#287).
  • crypto module utils - removing compatibility code (ansible-collections#290).
  • get_certificate, openssl_csr_info, x509_certificate_info - depending on the cryptography version used, the modules might not return the ASN.1 value for an extension as contained in the certificate respectively CSR, but a re-encoded version of it. This should usually be identical to the value contained in the source file, unless the value was malformed. For extensions not handled by C(cryptography) the value contained in the source file is always returned unaltered (ansible-collections#318).
  • module_utils - removed various PyOpenSSL support functions and default backend values that are not needed for the openssl_pkcs12 module (ansible-collections#273).
  • openssl_csr, openssl_csr_pipe, x509_crl - the subject respectively issuer fields no longer ignore empty values, but instead fail when encountering them (ansible-collections#316).
  • openssl_privatekey_info - by default consistency checks are not run; they need to be explicitly requested by passing check_consistency=true (ansible-collections#309).
  • x509_crl - for idempotency checks, the issuer order is ignored. If order is important, use the new issuer_ordered option (ansible-collections#316).
  • acme_* modules - ACME version 1 is now deprecated and support for it will be removed in community.crypto 2.0.0 (ansible-collections#288).

Regular bugfix release.

  • acme_* modules - fix commands composed for OpenSSL backend to retrieve information on CSRs and certificates from stdin to use /dev/stdin instead of -. This is needed for OpenSSL 1.0.1 and 1.0.2, apparently (ansible-collections#279).
  • acme_challenge_cert_helper - only return exception when cryptography is not installed, not when a too old version of it is installed. This prevents Ansible's callback to crash (ansible-collections#281).

Regular bugfix release.

  • openssl_csr and openssl_csr_pipe - make sure that Unicode strings are used to compare strings with the cryptography backend. This fixes idempotency problems with non-ASCII letters on Python 2 (ansible-collections#270, ansible-collections#271).

Bugfix release to fix the changelog. No other change compared to 1.9.0.

Accidental 1.9.1 release. Identical to 1.9.0.

Regular feature release.

  • keypair_backend module utils - simplify code to pass sanity tests (ansible-collections#263).
  • openssh_keypair - fixed cryptography backend to preserve original file permissions when regenerating a keypair requires existing files to be overwritten (ansible-collections#260).
  • openssh_keypair - fixed error handling to restore original keypair if regeneration fails (ansible-collections#260).
  • x509_crl - restore inherited function signature to pass sanity tests (ansible-collections#263).

Regular bugfix and feature release.

  • Avoid internal ansible-core module_utils in favor of equivalent public API available since at least Ansible 2.9 (ansible-collections#253).
  • openssh certificate module utils - new module_utils for parsing OpenSSH certificates (ansible-collections#246).
  • openssh_cert - added regenerate option to validate additional certificate parameters which trigger regeneration of an existing certificate (ansible-collections#256).
  • openssh_cert - adding diff support (ansible-collections#255).
  • openssh_cert - fixed certificate generation to restore original certificate if an error is encountered (ansible-collections#255).
  • openssh_keypair - fixed a bug that prevented custom file attributes being applied to public keys (ansible-collections#257).

Bugfix release.

Regular feature and bugfix release.

  • openssl_publickey_info - Provide information for OpenSSL public keys

Bugfix release. Fixes compatibility issue of ACME modules with step-ca.

Bugfix release.

Fixes compatibility issues with the latest ansible-core 2.11 beta, and contains a lot of internal refactoring for the ACME modules and support for private key passphrases for them.

  • acme module_utils - the acme module_utils (ansible_collections.community.crypto.plugins.module_utils.acme) is deprecated and will be removed in community.crypto 2.0.0. Use the new Python modules in the acme package instead (ansible_collections.community.crypto.plugins.module_utils.acme.xxx) (ansible-collections#184).
  • action_module plugin helper - make compatible with latest changes in ansible-core 2.11.0b3 (ansible-collections#202).
  • openssl_privatekey_pipe - make compatible with latest changes in ansible-core 2.11.0b3 (ansible-collections#202).

Regular feature and bugfix release. Deprecates a return value.

  • acme_account_info - when retrieve_orders is not ignore and the ACME server allows to query orders, the new return value order_uris is always populated with a list of URIs (ansible-collections#178).
  • luks_device - allow to specify sector size for LUKS2 containers with new sector_size parameter (ansible-collections#193).
  • acme_account_info - when retrieve_orders=url_list, orders will no longer be returned in community.crypto 2.0.0. Use order_uris instead (ansible-collections#178).

Release with several new features and bugfixes.

Contains new modules openssl_privatekey_pipe, openssl_csr_pipe and x509_certificate_pipe which allow to create or update private keys, CSRs and X.509 certificates without having to write them to disk.

  • openssh_cert - add module parameter use_agent to enable using signing keys stored in ssh-agent (ansible-collections#116).
  • openssl_csr - refactor module to allow code re-use by openssl_csr_pipe (ansible-collections#123).
  • openssl_privatekey - refactor module to allow code re-use by openssl_privatekey_pipe (ansible-collections#119).
  • openssl_privatekey - the elliptic curve secp192r1 now triggers a security warning. Elliptic curves of at least 224 bits should be used for new keys; see here (ansible-collections#132).
  • x509_certificate - for the selfsigned provider, a CSR is not required anymore. If no CSR is provided, the module behaves as if a minimal CSR which only contains the public key has been provided (ansible-collections#32, ansible-collections#129).
  • x509_certificate - refactor module to allow code re-use by x509_certificate_pipe (ansible-collections#135).
  • openssl_csr_pipe - Generate OpenSSL Certificate Signing Request (CSR)
  • openssl_privatekey_pipe - Generate OpenSSL private keys without disk access
  • x509_certificate_pipe - Generate and/or check OpenSSL certificates

Please note that this release fixes a security issue (CVE-2020-25646).

  • openssl_csr - the option privatekey_content was not marked as no_log, resulting in it being dumped into the system log by default, and returned in the registered results in the invocation field (CVE-2020-25646, ansible-collections#125).
  • openssl_privatekey_info - the option content was not marked as no_log, resulting in it being dumped into the system log by default, and returned in the registered results in the invocation field (CVE-2020-25646, ansible-collections#125).
  • openssl_publickey - the option privatekey_content was not marked as no_log, resulting in it being dumped into the system log by default, and returned in the registered results in the invocation field (CVE-2020-25646, ansible-collections#125).
  • openssl_signature - the option privatekey_content was not marked as no_log, resulting in it being dumped into the system log by default, and returned in the registered results in the invocation field (CVE-2020-25646, ansible-collections#125).
  • x509_certificate - the options privatekey_content and ownca_privatekey_content were not marked as no_log, resulting in it being dumped into the system log by default, and returned in the registered results in the invocation field (CVE-2020-25646, ansible-collections#125).
  • x509_crl - the option privatekey_content was not marked as no_log, resulting in it being dumped into the system log by default, and returned in the registered results in the invocation field (CVE-2020-25646, ansible-collections#125).
  • openssl_pkcs12 - do not crash when reading PKCS#12 file which has no private key and/or no main certificate (ansible-collections#103).

Bugfixes for Ansible 2.10.0.

Release for Ansible 2.10.0.

  • openssl_signature - Sign data with openssl
  • openssl_signature_info - Verify signatures with openssl

This is the first proper release of the community.crypto collection. This changelog contains all changes to the modules in this collection that were added after the release of Ansible 2.9.0.

  • luks_device - accept passphrase, new_passphrase and remove_passphrase.
  • luks_device - add keysize parameter to set key size at LUKS container creation
  • luks_device - added support to use UUIDs, and labels with LUKS2 containers
  • luks_device - added the type option that allows user explicit define the LUKS container format version
  • openssh_keypair - instead of regenerating some broken or password protected keys, fail the module. Keys can still be regenerated by calling the module with force=yes.
  • openssh_keypair - the regenerate option allows to configure the module's behavior when it should or needs to regenerate private keys.
  • openssl_* modules - the cryptography backend now properly supports dirName, otherName and RID (Registered ID) names.
  • openssl_certificate - Add option for changing which ACME directory to use with acme-tiny. Set the default ACME directory to Let's Encrypt instead of using acme-tiny's default. (acme-tiny also uses Let's Encrypt at the time being, so no action should be neccessary.)
  • openssl_certificate - Change the required version of acme-tiny to >= 4.0.0
  • openssl_certificate - allow to provide content of some input files via the csr_content, privatekey_content, ownca_privatekey_content and ownca_content options.
  • openssl_certificate - allow to return the existing/generated certificate directly as certificate by setting return_content to yes.
  • openssl_certificate_info - allow to provide certificate content via content option (ansible/ansible#64776).
  • openssl_csr - Add support for specifying the SAN otherName value in the OpenSSL ASN.1 UTF8 string format, otherName:<OID>;UTF8:string value.
  • openssl_csr - allow to provide private key content via private_key_content option.
  • openssl_csr - allow to return the existing/generated CSR directly as csr by setting return_content to yes.
  • openssl_csr_info - allow to provide CSR content via content option.
  • openssl_dhparam - allow to return the existing/generated DH params directly as dhparams by setting return_content to yes.
  • openssl_dhparam - now supports a cryptography-based backend. Auto-detection can be overwritten with the select_crypto_backend option.
  • openssl_pkcs12 - allow to return the existing/generated PKCS#12 directly as pkcs12 by setting return_content to yes.
  • openssl_privatekey - add format and format_mismatch options.
  • openssl_privatekey - allow to return the existing/generated private key directly as privatekey by setting return_content to yes.
  • openssl_privatekey - the regenerate option allows to configure the module's behavior when it should or needs to regenerate private keys.
  • openssl_privatekey_info - allow to provide private key content via content option.
  • openssl_publickey - allow to provide private key content via private_key_content option.
  • openssl_publickey - allow to return the existing/generated public key directly as publickey by setting return_content to yes.
  • openssl_csr - all values for the version option except 1 are deprecated. The value 1 denotes the current only standardized CSR version.
  • The letsencrypt module has been removed. Use acme_certificate instead.
  • ACME modules: fix bug in ACME v1 account update code
  • ACME modules: make sure some connection errors are handled properly
  • ACME modules: support Buypass' ACME v1 endpoint
  • acme_certificate - fix crash when module is used with Python 2.x.
  • acme_certificate - fix misbehavior when ACME v1 is used with modify_account set to false.
  • ecs_certificate - Always specify header connection: keep-alive for ECS API connections.
  • ecs_certificate - Fix formatting of contents of full_chain_path.
  • get_certificate - Fix cryptography backend when pyopenssl is unavailable (ansible/ansible#67900)
  • openssh_keypair - add logic to avoid breaking password protected keys.
  • openssh_keypair - fixes idempotence issue with public key (ansible/ansible#64969).
  • openssh_keypair - public key's file attributes (permissions, owner, group, etc.) are now set to the same values as the private key.
  • openssl_* modules - prevent crash on fingerprint determination in FIPS mode (ansible/ansible#67213).
  • openssl_certificate - When provider is entrust, use a connection: keep-alive header for ECS API connections.
  • openssl_certificate - provider option was documented as required, but it was not checked whether it was provided. It is now only required when state is present.
  • openssl_certificate - fix assertonly provider certificate verification, causing 'private key mismatch' and 'subject mismatch' errors.
  • openssl_certificate and openssl_csr - fix Ed25519 and Ed448 private key support for cryptography backend. This probably needs at least cryptography 2.8, since older versions have problems with signing certificates or CSRs with such keys. (ansible/ansible#59039, PR ansible/ansible#63984)
  • openssl_csr - a warning is issued if an unsupported value for version is used for the cryptography backend.
  • openssl_csr - the module will now enforce that privatekey_path is specified when state=present.
  • openssl_publickey - fix a module crash caused when pyOpenSSL is not installed (ansible/ansible#67035).
  • ecs_domain - Request validation of a domain with the Entrust Certificate Services (ECS) API
  • x509_crl - Generate Certificate Revocation Lists (CRLs)
  • x509_crl_info - Retrieve information on Certificate Revocation Lists (CRLs)