This module has been removed
-in version 2.0.0 of community.crypto.
-The ‘community.crypto.acme_account_facts’ module has been renamed to ‘community.crypto.acme_account_info’.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_account_info.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
The notes for this module contain a list of ACME services this module has been tested against.
-
-
-
-
acme_version
-
integer / required
-
-
The ACME version of the endpoint.
-
Must be 1 for the classic Let’s Encrypt and Buypass ACME endpoints, or 2 for standardized ACME v2 endpoints.
-
The value 1 is deprecated since community.crypto 2.0.0 and will be removed from community.crypto 3.0.0.
-
Choices:
-
-
1
-
2
-
-
-
-
-
request_timeout
-
integer
-
added in community.crypto 2.3.0
-
-
The time Ansible should wait for a response from the ACME API.
-
This timeout is applied to all HTTP(S) requests (HEAD, GET, POST).
-
Default:10
-
-
-
-
retrieve_orders
-
string
-
-
Whether to retrieve the list of order URLs or order objects, if provided by the ACME server.
-
A value of ignore will not fetch the list of orders.
-
If the value is not ignore and the ACME server supports orders, the order_uris return value is always populated. The orders return value is only returned if this option is set to object_list.
-
Currently, Let’s Encrypt does not return orders, so the orders result will always be empty.
-
Choices:
-
-
"ignore"← (default)
-
"url_list"
-
"object_list"
-
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available, and falls back to openssl.
-
If set to openssl, will try to use the openssl binary.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
"openssl"
-
-
-
-
-
validate_certs
-
boolean
-
-
Whether calls to the ACME directory will validate TLS certificates.
-
Warning: Should only ever be set to false for testing purposes, for example when testing against a local Pebble server.
This module was called acme_account_facts before Ansible 2.8. The usage did not change.
-
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
--name:Check whether an account with the given account key exists
-community.crypto.acme_account_info:
-account_key_src:/etc/pki/cert/private/account.key
-register:account_data
--name:Verify that account exists
-ansible.builtin.assert:
-that:
--account_data.exists
--name:Print account URI
-ansible.builtin.debug:
-var:account_data.account_uri
--name:Print account contacts
-ansible.builtin.debug:
-var:account_data.account.contact
-
--name:Check whether the account exists and is accessible with the given account key
-acme_account_info:
-account_key_content:"{{acme_account_key}}"
-account_uri:"{{acme_account_uri}}"
-register:account_data
--name:Verify that account exists
-ansible.builtin.assert:
-that:
--account_data.exists
--name:Print account contacts
-ansible.builtin.debug:
-var:account_data.account.contact
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_account.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
Must be specified when state is present. Will be ignored if state is absent or changed_key.
-
Default:[]
-
-
-
-
external_account_binding
-
dictionary
-
added in community.crypto 1.1.0
-
-
Allows to provide external account binding data during account creation.
-
This is used by CAs like Sectigo, HARICA, or ZeroSSL to bind a new ACME account to an existing CA-specific account, to be able to properly identify a customer.
-
Only used when creating a new account. Can not be specified for ACME v1.
-
-
-
-
alg
-
string / required
-
-
The MAC algorithm provided by the CA.
-
If not specified by the CA, this is probably HS256.
-
Choices:
-
-
"HS256"
-
"HS384"
-
"HS512"
-
-
-
-
-
key
-
string / required
-
-
Base64 URL encoded value of the MAC key provided by the CA.
-
Padding (= symbols at the end) can be omitted.
-
-
-
-
kid
-
string / required
-
-
The key identifier provided by the CA.
-
-
-
-
new_account_key_content
-
string
-
-
Content of the ACME account RSA or Elliptic Curve key to change to.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
--name:Make sure account exists and has given contacts. We agree to TOS.
-community.crypto.acme_account:
-account_key_src:/etc/pki/cert/private/account.key
-state:present
-terms_agreed:true
-contact:
--mailto:me@example.com
--mailto:myself@example.org
-
--name:Make sure account has given email address. Do not create account if it does not exist
-community.crypto.acme_account:
-account_key_src:/etc/pki/cert/private/account.key
-state:present
-allow_creation:false
-contact:
--mailto:me@example.com
-
--name:Change account's key to the one stored in the variable new_account_key
-community.crypto.acme_account:
-account_key_src:/etc/pki/cert/private/account.key
-new_account_key_content:'{{new_account_key}}'
-state:changed_key
-
--name:Delete account (we have to use the new key)
-community.crypto.acme_account:
-account_key_content:'{{new_account_key}}'
-state:absent
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_ari_info.
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower.
---
--name:Retrieve renewal information for a certificate
-community.crypto.acme_ari_info:
-certificate_path:/etc/httpd/ssl/sample.com.crt
-register:cert_data
-
--name:Show the certificate renewal information
-ansible.builtin.debug:
-var:cert_data.renewal_info
-
A URL pointing to a page which may explain why the suggested renewal window is what it is.
-
For example, it may be a page explaining the CA’s dynamic load-balancing strategy, or a page documenting which certificates are affected by a mass revocation event. Should be shown to the user.
-
Returned: depends on the ACME server
-
Sample:"https://example.com/docs/ari"
-
-
-
-
retryAfter
-
string
-
-
A timestamp before the next retry to ask for this information should not be made.
-
Returned: depends on the ACME server
-
Sample:"2024-04-29T01:17:10.236921+00:00"
-
-
-
-
suggestedWindow
-
dictionary
-
-
Describes the window during which the certificate should be renewed.
-
Returned: always
-
-
-
-
end
-
string
-
-
The end of the window during which the certificate should be renewed.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_deactivate_authz.
Deactivate all authentication objects (authz) for an ACME v2 order, which effectively deactivates (invalidates) the order itself.
-
Authentication objects are bound to an account key and remain valid for a certain amount of time, and can be used to issue certificates without having to re-authenticate the domain. This can be a security concern.
-
Another reason to use this module is to deactivate an order whose processing failed when using include_renewal_cert_id.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
--name:Deactivate all authzs for an order
-community.crypto.acme_certificate_deactivate_authz:
-account_key_content:"{{account_private_key}}"
-order_uri:"{{certificate_result.order_uri}}"
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate.
Create and renew SSL/TLS certificates with a CA supporting the ACME protocol, such as Let’s Encrypt. The current implementation supports the http-01, dns-01 and tls-alpn-01 challenges.
-
To use this module, it has to be executed twice. Either as two different tasks in the same run or during two runs. Note that the output of the first run needs to be recorded and passed to the second run as the module argument data.
-
Between these two tasks you have to fulfill the required steps for the chosen challenge by whatever means necessary. For http-01 that means creating the necessary challenge file on the destination webserver. For dns-01 the necessary DNS record has to be created. For tls-alpn-01 the necessary certificate has to be created and served. It is not the responsibility of this module to perform these steps.
It will be used for certificate expiration warnings.
-
Note that when modify_account is not set to false and you also used the community.crypto.acme_account module to specify more than one contact for your account, this module will update your account and restrict it to the (at most one) contact email address specified here.
-
-
-
-
account_key_content
-
string
-
-
Content of the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
This option will only be used when acme_version is 1.
-
-
-
-
-
chain_dest
-
aliases: chain
-
path
-
-
If specified, the intermediate certificate will be written to this file.
-
-
-
-
challenge
-
string
-
-
The challenge to be performed.
-
If set to nochallenge, no challenge will be used. This is necessary for some private CAs which use External Account Binding and other means of validating certificate assurance. For example, an account could be allowed to issue certificates for foo.example.com without any further validation for a certain period of time.
The CSR may contain multiple Subject Alternate Names, but each one will lead to an individual challenge that must be fulfilled for the CSR to be signed.
-
Note: the private key used to create the CSR must not be the account key. This is a bad idea from a security point of view, and the CA should not accept the CSR. The ACME server should return an error in this case.
The CSR may contain multiple Subject Alternate Names, but each one will lead to an individual challenge that must be fulfilled for the CSR to be signed.
-
Note: the private key used to create the CSR must not be the account key. This is a bad idea from a security point of view, and the CA should not accept the CSR. The ACME server should return an error in this case.
The data to validate ongoing challenges. This must be specified for the second run of the module only.
-
The value that must be used here will be provided by a previous use of this module. See the examples for more details.
-
Note that for ACME v2, only the order_uri entry of data will be used. For ACME v1, data must be non-empty to indicate the second stage is active; all needed data will be taken from the CSR.
-
Note: the data option was marked as no_log up to Ansible 2.5. From Ansible 2.6 on, it is no longer marked this way as it causes error messages to be come unusable, and data does not contain any information which can be used without having access to the account key or which are not public anyway.
-
-
-
-
deactivate_authzs
-
boolean
-
-
Deactivate authentication objects (authz) after issuing a certificate, or when issuing the certificate failed.
-
Authentication objects are bound to an account key and remain valid for a certain amount of time, and can be used to issue certificates without having to re-authenticate the domain. This can be a security concern.
Determines whether to request renewal of an existing certificate according to Section 5 of RFC 9773.
-
This is only used when the certificate specified in dest or fullchain_dest already exists.
-
Generally you should use when_ari_supported if you know that the ACME service supports a compatible draft (or final version, once it is out) of the ARI extension. always should never be necessary. If you are not sure, or if you receive strange errors on invalid replaces values in order objects, use never, which also happens to be the default.
-
ACME servers might refuse to create new orders with replaces for certificates that already have an existing order. This can happen if this module is used to create an order, and then the playbook/role fails in case the challenges cannot be set up. If the playbook/role does not record the order data to continue with the existing order, but tries to create a new one on the next run, creating the new order might fail. If order_creation_error_strategy=fail this will make the module fail. order_creation_error_strategy=auto and order_creation_error_strategy=retry_without_replaces_cert_id will avoid this by leaving away replaces on retries.
-
If order_creation_error_strategy=fail, for the above reason, this option should only be set to a value different from never if the role/playbook using it keeps track of order data accross restarts, or if it takes care to deactivate orders whose processing is aborted. Orders can be deactivated with the community.crypto.acme_certificate_deactivate_authz module.
-
Choices:
-
-
"always":
-Will always send the certificate ID of the certificate to renew.
-
"never"(default):
-Never send the certificate ID of the certificate to renew.
-
"when_ari_supported":
-Only send the certificate ID if the ARI endpoint is found in the ACME directory.
-
-
-
-
-
modify_account
-
boolean
-
-
Boolean indicating whether the module should create the account if necessary, and update its contact data.
-
Set to false if you want to use the community.crypto.acme_account module to manage your account instead, and to avoid accidental creation of a new account using an old key if you changed the account key with community.crypto.acme_account.
"auto"(default):
-An unspecified algorithm that tries to be clever.
-
Right now identical to retry_without_replaces_cert_id.
-
-
"fail":
-Simply fail in case of errors. Do not attempt to retry.
-
This has been the default before community.crypto 2.24.0.
-
-
"retry_without_replaces_cert_id":
-If include_renewal_cert_id is present, creating the order will be tried again without replaces.
-
The only exception is an error of type urn:ietf:params:acme:error:alreadyReplaced, that indicates that the certificate was already replaced. This usually means something went wrong and the user should investigate.
-
-
-
-
-
-
order_creation_max_retries
-
integer
-
added in community.crypto 2.24.0
-
-
Depending on the strategy selected in order_creation_error_strategy, will retry creating new orders for at most the specified amount of times.
-
Default:3
-
-
-
-
profile
-
string
-
added in community.crypto 2.24.0
-
-
Chose a specific profile for certificate selection. The available profiles depend on the CA.
The number of days the certificate must have left being valid. If cert_days < remaining_days, then it will be renewed. If the certificate is not renewed, module return values will not include challenge_data.
-
To make sure that the certificate is renewed in any case, you can use the force option.
-
Default:10
-
-
-
-
request_timeout
-
integer
-
added in community.crypto 2.3.0
-
-
The time Ansible should wait for a response from the ACME API.
-
This timeout is applied to all HTTP(S) requests (HEAD, GET, POST).
-
Default:10
-
-
-
-
retrieve_all_alternates
-
boolean
-
-
When set to true, will retrieve all alternate trust chains offered by the ACME CA. These will not be written to disk, but will be returned together with the main chain as all_chains. See the documentation for the all_chains return value for details.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_chain
-
list / elements=dictionary
-
added in community.crypto 1.0.0
-
-
Allows to specify criteria by which an (alternate) trust chain can be selected.
-
The list of criteria will be processed one by one until a chain is found matching a criterium. If such a chain is found, it will be used by the module instead of the default chain.
-
If a criterium matches multiple chains, the first one matching will be returned. The order is determined by the ordering of the Link headers returned by the ACME server and might not be deterministic.
-
Every criterium can consist of multiple different conditions, like select_chain[].issuer and select_chain[].subject. For the criterium to match a chain, all conditions must apply to the same certificate in the chain.
-
This option can only be used with the cryptography backend.
-
-
-
-
authority_key_identifier
-
string
-
-
Checks for the AuthorityKeyIdentifier extension. This is an identifier based on the private key of the issuer of the intermediate certificate.
-
The identifier must be of the form C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10.
-
-
-
-
issuer
-
dictionary
-
-
Allows to specify parts of the issuer of a certificate in the chain must have to be selected.
This module includes basic account management functionality. If you want to have more control over your ACME account, use the community.crypto.acme_account module and disable account management for this module using the modify_account option.
-
This module was called letsencrypt before Ansible 2.6. The usage did not change.
-
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
-### Example with HTTP challenge ###
-
--name:Create a challenge for sample.com using a account key from a variable.
-community.crypto.acme_certificate:
-account_key_content:"{{account_private_key}}"
-csr:/etc/pki/cert/csr/sample.com.csr
-dest:/etc/httpd/ssl/sample.com.crt
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key from Hashi Vault.
-community.crypto.acme_certificate:
-account_key_content:>-
-{{lookup('community.hashi_vault.hashi_vault','secret=secret/account_private_key:value')}}
-csr:/etc/pki/cert/csr/sample.com.csr
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key file.
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-csr_content:"{{lookup('file','/etc/pki/cert/csr/sample.com.csr')}}"
-dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-register:sample_com_challenge
-
-# perform the necessary steps to fulfill the challenge
-# for example:
-#
-# - name: Copy http-01 challenge for sample.com
-# ansible.builtin.copy:
-# dest: /var/www/html/{{sample_com_challenge['challenge_data']['sample.com']['http-01']['resource']}}
-# content: "{{sample_com_challenge['challenge_data']['sample.com']['http-01']['resource_value']}}"
-# when: sample_com_challenge is changed and 'sample.com' in sample_com_challenge['challenge_data']
-#
-# Alternative way:
-#
-# - name: Copy http-01 challenges
-# ansible.builtin.copy:
-# dest: /var/www/{{item.key}}/{{item.value['http-01']['resource']}}
-# content: "{{item.value['http-01']['resource_value']}}"
-# loop: "{{sample_com_challenge.challenge_data|dict2items}}"
-# when: sample_com_challenge is changed
-
--name:Let the challenge be validated and retrieve the cert and intermediate certificate
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-data:"{{sample_com_challenge}}"
-
----
-### Example with DNS challenge against production ACME server ###
-
--name:Create a challenge for sample.com using a account key file.
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-account_email:myself@sample.com
-src:/etc/pki/cert/csr/sample.com.csr
-cert:/etc/httpd/ssl/sample.com.crt
-challenge:dns-01
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-# Renew if the certificate is at least 30 days old
-remaining_days:60
-register:sample_com_challenge
-
-# perform the necessary steps to fulfill the challenge
-# for example:
-#
-# - name: Create DNS record for sample.com dns-01 challenge
-# community.aws.route53:
-# zone: sample.com
-# record: "{{sample_com_challenge.challenge_data['sample.com']['dns-01'].record}}"
-# type: TXT
-# ttl: 60
-# state: present
-# wait: true
-# # Note: route53 requires TXT entries to be enclosed in quotes
-# value: "{{sample_com_challenge.challenge_data['sample.com']['dns-01'].resource_value|community.dns.quote_txt(always_quote=true)}}"
-# when: sample_com_challenge is changed and 'sample.com' in sample_com_challenge.challenge_data
-#
-# Alternative way:
-#
-# - name: Create DNS records for dns-01 challenges
-# community.aws.route53:
-# zone: sample.com
-# record: "{{item.key}}"
-# type: TXT
-# ttl: 60
-# state: present
-# wait: true
-# # Note: item.value is a list of TXT entries, and route53
-# # requires every entry to be enclosed in quotes
-# value: "{{item.value|map('community.dns.quote_txt',always_quote=true)|list}}"
-# loop: "{{sample_com_challenge.challenge_data_dns|dict2items}}"
-# when: sample_com_challenge is changed
-
--name:Let the challenge be validated and retrieve the cert and intermediate certificate
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-account_email:myself@sample.com
-src:/etc/pki/cert/csr/sample.com.csr
-cert:/etc/httpd/ssl/sample.com.crt
-fullchain:/etc/httpd/ssl/sample.com-fullchain.crt
-chain:/etc/httpd/ssl/sample.com-intermediate.crt
-challenge:dns-01
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-remaining_days:60
-data:"{{sample_com_challenge}}"
-when:sample_com_challenge is changed
-
-# Alternative second step:
--name:Let the challenge be validated and retrieve the cert and intermediate certificate
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-account_email:myself@sample.com
-src:/etc/pki/cert/csr/sample.com.csr
-cert:/etc/httpd/ssl/sample.com.crt
-fullchain:/etc/httpd/ssl/sample.com-fullchain.crt
-chain:/etc/httpd/ssl/sample.com-intermediate.crt
-challenge:tls-alpn-01
-remaining_days:60
-data:"{{sample_com_challenge}}"
-# We use Let's Encrypt's ACME v2 endpoint
-acme_directory:https://acme-v02.api.letsencrypt.org/directory
-acme_version:2
-# The following makes sure that if a chain with /CN=DST Root CA X3 in its issuer is provided
-# as an alternative, it will be selected. These are the roots cross-signed by IdenTrust.
-# As long as Let's Encrypt provides alternate chains with the cross-signed root(s) when
-# switching to their own ISRG Root X1 root, this will use the chain ending with a cross-signed
-# root. This chain is more compatible with older TLS clients.
-select_chain:
--test_certificates:last
-issuer:
-CN:DST Root CA X3
-O:Digital Signature Trust Co.
-when:sample_com_challenge is changed
-
Common return values are documented here, the following are the fields unique to this module:
-
-
-
Key
-
Description
-
-
-
-
-
account_uri
-
string
-
-
ACME account URI.
-
Returned: changed
-
-
-
-
all_chains
-
list / elements=dictionary
-
-
When retrieve_all_alternates is set to true, the module will query the ACME server for alternate chains. This return value will contain a list of all chains returned, the first entry being the main chain returned by the server.
Since Ansible 2.8.5, only challenges which are not yet valid are returned.
-
Returned: changed
-
-
-
-
identifier
-
dictionary
-
-
For every identifier, provides a dictionary of challenge types mapping to challenge data.
-
The keys in this dictionary are the identifiers. identifier is a placeholder used in the documentation.
-
Note that the keys are not valid Jinja2 identifiers.
-
Returned: changed
-
-
-
-
challenge-type
-
dictionary
-
-
Data for every challenge type.
-
The keys in this dictionary are the challenge types. challenge-type is a placeholder used in the documentation. Possible keys are http-01, dns-01, and tls-alpn-01.
-
Note that the keys are not valid Jinja2 identifiers.
-
Returned: changed
-
-
-
-
record
-
string
-
-
The full DNS record’s name for the challenge.
-
Returned: changed and challenge is dns-01
-
Sample:"_acme-challenge.example.com"
-
-
-
-
resource
-
string
-
-
The challenge resource that must be created for validation.
The value the resource has to produce for the validation.
-
For http-01 and dns-01 challenges, the value can be used as-is.
-
For tls-alpn-01 challenges, note that this return value contains a Base64 encoded version of the correct binary blob which has to be put into the acmeValidation x509 extension; see https://www.rfc-editor.org/rfc/rfc8737.html#section-3 for details. To do this, you might need the ansible.builtin.b64decode Jinja filter to extract the binary blob from this return value.
-
Returned: changed
-
Sample:"IlirfxKKXA...17Dt3juxGJ-PCt92wr-oA"
-
-
-
-
challenge_data_dns
-
dictionary
-
-
List of TXT values per DNS record, in case challenge is dns-01.
-
Since Ansible 2.8.5, only challenges which are not yet valid are returned.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_order_create.
Creates an ACME v2 order. This is the first step of obtaining a new certificate with the ACME protocol from a Certificate Authority such as Let’s Encrypt. This module does not support ACME v1, the original version of the ACME protocol before standardization.
-
The current implementation supports the http-01, dns-01 and tls-alpn-01 challenges.
To create or modify ACME accounts, use the community.crypto.acme_account module. This module will not create or update ACME accounts.
-
Between the call of this module and community.crypto.acme_certificate_order_finalize, you have to fulfill the required steps for the chosen challenge by whatever means necessary. For http-01 that means creating the necessary challenge file on the destination webserver. For dns-01 the necessary dns record has to be created. For tls-alpn-01 the necessary certificate has to be created and served. It is not the responsibility of this module to perform these steps.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
The CSR may contain multiple Subject Alternate Names, but each one will lead to an individual challenge that must be fulfilled for the CSR to be signed.
-
Note: the private key used to create the CSR must not be the account key. This is a bad idea from a security point of view, and the CA should not accept the CSR. The ACME server should return an error in this case.
The CSR may contain multiple Subject Alternate Names, but each one will lead to an individual challenge that must be fulfilled for the CSR to be signed.
-
Note: the private key used to create the CSR must not be the account key. This is a bad idea from a security point of view, and the CA should not accept the CSR. The ACME server should return an error in this case.
Deactivate authentication objects (authz) when issuing the certificate failed.
-
Authentication objects are bound to an account key and remain valid for a certain amount of time, and can be used to issue certificates without having to re-authenticate the domain. This can be a security concern.
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
order_creation_error_strategy
-
string
-
-
Selects the error handling strategy for ACME protocol errors if creating a new ACME order fails.
"auto"(default):
-An unspecified algorithm that tries to be clever.
-
Right now identical to retry_without_replaces_cert_id.
-
-
"fail":
-Simply fail in case of errors. Do not attempt to retry.
-
"retry_without_replaces_cert_id":
-If replaces_cert_id is present, creating the order will be tried again without replaces.
-
The only exception is an error of type urn:ietf:params:acme:error:alreadyReplaced, that indicates that the certificate was already replaced. This usually means something went wrong and the user should investigate.
-
-
-
-
-
-
order_creation_max_retries
-
integer
-
-
Depending on the strategy selected in order_creation_error_strategy, will retry creating new orders for at most the specified amount of times.
-
Default:3
-
-
-
-
profile
-
string
-
-
Chose a specific profile for certificate selection. The available profiles depend on the CA.
ACME servers might refuse to create new orders that indicate to replace a certificate for which an active replacement order already exists. This can happen if this module is used to create an order, and then the playbook/role fails in case the challenges cannot be set up. If the playbook/role does not record the order data to continue with the existing order, but tries to create a new one on the next run, creating the new order might fail. If order_creation_error_strategy=fail this will make the module fail. order_creation_error_strategy=auto and order_creation_error_strategy=retry_without_replaces_cert_id will avoid this by leaving away replaces on retries.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
-### Example with HTTP-01 challenge ###
-
--name:Create a challenge for sample.com using a account key from a variable
-community.crypto.acme_certificate_order_create:
-account_key_content:"{{account_private_key}}"
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key from Hashi Vault
-community.crypto.acme_certificate_order_create:
-account_key_content:>-
-{{lookup('community.hashi_vault.hashi_vault','secret=secret/account_private_key:value')}}
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key file
-community.crypto.acme_certificate_order_create:
-account_key_src:/etc/pki/cert/private/account.key
-csr_content:"{{lookup('file','/etc/pki/cert/csr/sample.com.csr')}}"
-register:sample_com_challenge
-
-# Perform the necessary steps to fulfill the challenge. For example:
-#
-# - name: Copy http-01 challenges
-# ansible.builtin.copy:
-# dest: /var/www/{{item.identifier}}/{{item.challenges['http-01'].resource}}
-# content: "{{item.challenges['http-01'].resource_value}}"
-# loop: "{{sample_com_challenge.challenge_data}}"
-# when: "'http-01' in item.challenges"
-
--name:Let the challenge be validated
-community.crypto.acme_certificate_order_validate:
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{sample_com_challenge.order_uri}}"
-challenge:http-01
-
--name:Retrieve the cert and intermediate certificate
-community.crypto.acme_certificate_order_finalize:
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-order_uri:"{{sample_com_challenge.order_uri}}"
-cert_dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-
----
-### Example with DNS challenge against production ACME server ###
-
--name:Create a challenge for sample.com using a account key file.
-community.crypto.acme_certificate_order_create:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Perform the necessary steps to fulfill the challenge. For example:
-#
-# - name: Create DNS records for dns-01 challenges
-# community.aws.route53:
-# zone: sample.com
-# record: "{{item.key}}"
-# type: TXT
-# ttl: 60
-# state: present
-# wait: true
-# # Note: item.value is a list of TXT entries, and route53
-# # requires every entry to be enclosed in quotes
-# value: "{{item.value|map('community.dns.quote_txt',always_quote=true)|list}}"
-# loop: "{{sample_com_challenge.challenge_data_dns|dict2items}}"
-
--name:Let the challenge be validated
-community.crypto.acme_certificate_order_validate:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{sample_com_challenge.order_uri}}"
-challenge:dns-01
-
--name:Retrieve the cert and intermediate certificate
-community.crypto.acme_certificate_order_finalize:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-order_uri:"{{sample_com_challenge.order_uri}}"
-cert_dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-
Returned: if the identifier supports tls-alpn-01 authorization
-
-
-
-
resource
-
string
-
-
The DNS name for DNS identifiers, and the reverse DNS mapping (RFC1034, RFC3596) for IP addresses.
-
Returned: success
-
Sample:"example.com"
-
-
-
-
resource_original
-
string
-
-
The original identifier including type identifier.
-
Returned: success
-
Sample:"dns:example.com"
-
-
-
-
resource_value
-
string
-
-
The value the resource has to produce for the validation.
-
Note: this return value contains a Base64 encoded version of the correct binary blob which has to be put into the acmeValidation X.509 extension; see https://www.rfc-editor.org/rfc/rfc8737.html#section-3 for details. To do this, you might need the ansible.builtin.b64decode Jinja filter to extract the binary blob from this return value.
-
Returned: success
-
Sample:"AAb="
-
-
-
-
identifier
-
string
-
-
The identifier for this challenge.
-
Returned: success
-
Sample:"example.com"
-
-
-
-
identifier_type
-
string
-
-
The identifier’s type.
-
dns for DNS names, and ip for IP addresses.
-
Returned: success
-
Can only return:
-
-
"dns"
-
"ip"
-
-
Sample:"dns"
-
-
-
-
challenge_data_dns
-
dictionary
-
-
List of TXT values per DNS record for dns-01 challenges.
-
Only challenges which are not yet valid are returned.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_order_finalize.
Finalizes an ACME v2 order and obtains the certificate and certificate chains. This is the final step of obtaining a new certificate with the ACME protocol from a Certificate Authority such as Let’s Encrypt. This module does not support ACME v1, the original version of the ACME protocol before standardization.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
The CSR may contain multiple Subject Alternate Names, but each one will lead to an individual challenge that must be fulfilled for the CSR to be signed.
-
Note: the private key used to create the CSR must not be the account key. This is a bad idea from a security point of view, and the CA should not accept the CSR. The ACME server should return an error in this case.
The CSR may contain multiple Subject Alternate Names, but each one will lead to an individual challenge that must be fulfilled for the CSR to be signed.
-
Note: the private key used to create the CSR must not be the account key. This is a bad idea from a security point of view, and the CA should not accept the CSR. The ACME server should return an error in this case.
Deactivate authentication objects (authz) after issuing a certificate, or when issuing the certificate failed.
-
never never deactivates them.
-
always always deactivates them in cases of errors or when the certificate was issued.
-
on_error only deactivates them in case of errors.
-
on_success only deactivates them in case the certificate was successfully issued.
-
Authentication objects are bound to an account key and remain valid for a certain amount of time, and can be used to issue certificates without having to re-authenticate the domain. This can be a security concern.
-
Choices:
-
-
"never"
-
"on_error"
-
"on_success"
-
"always"← (default)
-
-
-
-
-
fullchain_dest
-
path
-
-
The destination file for the full chain (that is, a certificate followed by chain of intermediate certificates).
The time Ansible should wait for a response from the ACME API.
-
This timeout is applied to all HTTP(S) requests (HEAD, GET, POST).
-
Default:10
-
-
-
-
retrieve_all_alternates
-
boolean
-
-
When set to true, will retrieve all alternate trust chains offered by the ACME CA. These will not be written to disk, but will be returned together with the main chain as all_chains. See the documentation for the all_chains return value for details.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_chain
-
list / elements=dictionary
-
-
Allows to specify criteria by which an (alternate) trust chain can be selected.
-
The list of criteria will be processed one by one until a chain is found matching a criterium. If such a chain is found, it will be used by the module instead of the default chain.
-
If a criterium matches multiple chains, the first one matching will be returned. The order is determined by the ordering of the Link headers returned by the ACME server and might not be deterministic.
-
Every criterium can consist of multiple different conditions, like select_chain[].issuer and select_chain[].subject. For the criterium to match a chain, all conditions must apply to the same certificate in the chain.
-
This option can only be used with the cryptography backend.
-
-
-
-
authority_key_identifier
-
string
-
-
Checks for the AuthorityKeyIdentifier extension. This is an identifier based on the private key of the issuer of the intermediate certificate.
-
The identifier must be of the form C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10.
-
-
-
-
issuer
-
dictionary
-
-
Allows to specify parts of the issuer of a certificate in the chain must have to be selected.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
-### Example with HTTP-01 challenge ###
-
--name:Create a challenge for sample.com using a account key from a variable
-community.crypto.acme_certificate_order_create:
-account_key_content:"{{account_private_key}}"
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key from Hashi Vault
-community.crypto.acme_certificate_order_create:
-account_key_content:>-
-{{lookup('community.hashi_vault.hashi_vault','secret=secret/account_private_key:value')}}
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key file
-community.crypto.acme_certificate_order_create:
-account_key_src:/etc/pki/cert/private/account.key
-csr_content:"{{lookup('file','/etc/pki/cert/csr/sample.com.csr')}}"
-register:sample_com_challenge
-
-# Perform the necessary steps to fulfill the challenge. For example:
-#
-# - name: Copy http-01 challenges
-# ansible.builtin.copy:
-# dest: /var/www/{{item.identifier}}/{{item.challenges['http-01'].resource}}
-# content: "{{item.challenges['http-01'].resource_value}}"
-# loop: "{{sample_com_challenge.challenge_data}}"
-# when: "'http-01' in item.challenges"
-
--name:Let the challenge be validated
-community.crypto.acme_certificate_order_validate:
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{sample_com_challenge.order_uri}}"
-challenge:http-01
-
--name:Retrieve the cert and intermediate certificate
-community.crypto.acme_certificate_order_finalize:
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-order_uri:"{{sample_com_challenge.order_uri}}"
-cert_dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-
----
-### Example with DNS challenge against production ACME server ###
-
--name:Create a challenge for sample.com using a account key file.
-community.crypto.acme_certificate_order_create:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Perform the necessary steps to fulfill the challenge. For example:
-#
-# - name: Create DNS records for dns-01 challenges
-# community.aws.route53:
-# zone: sample.com
-# record: "{{item.key}}"
-# type: TXT
-# ttl: 60
-# state: present
-# wait: true
-# # Note: item.value is a list of TXT entries, and route53
-# # requires every entry to be enclosed in quotes
-# value: "{{item.value|map('community.dns.quote_txt',always_quote=true)|list}}"
-# loop: "{{sample_com_challenge.challenge_data_dns|dict2items}}"
-
--name:Let the challenge be validated
-community.crypto.acme_certificate_order_validate:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{sample_com_challenge.order_uri}}"
-challenge:dns-01
-
--name:Retrieve the cert and intermediate certificate
-community.crypto.acme_certificate_order_finalize:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-order_uri:"{{sample_com_challenge.order_uri}}"
-cert_dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-
Common return values are documented here, the following are the fields unique to this module:
-
-
-
Key
-
Description
-
-
-
-
-
account_uri
-
string
-
-
ACME account URI.
-
Returned: success
-
-
-
-
all_chains
-
list / elements=dictionary
-
-
When retrieve_all_alternates=true, the module will query the ACME server for alternate chains. This return value will contain a list of all chains returned, the first entry being the main chain returned by the server.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_order_info.
Obtain information for an ACME v2 order. This can be used during the process of obtaining a new certificate with the ACME protocol from a Certificate Authority such as Let’s Encrypt. This module does not support ACME v1, the original version of the ACME protocol before standardization.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
--name:Create a challenge for sample.com using a account key from a variable
-community.crypto.acme_certificate_order_create:
-account_key_content:"{{account_private_key}}"
-csr:/etc/pki/cert/csr/sample.com.csr
-register:order
-
--name:Obtain information on the order
-community.crypto.acme_certificate_order_info:
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{order.order_uri}}"
-register:order_info
-
--name:Show information
-ansible.builtin.debug:
-var:order_info
-
For pending authorizations, the challenges that the client can fulfill in order to prove possession of the identifier.
-
For valid authorizations, the challenge that was validated.
-
For invalid authorizations, the challenge that was attempted and failed.
-
Each array entry is an object with parameters required to validate the challenge. A client should attempt to fulfill one of these challenges, and a server should consider any one of the challenges sufficient to make the authorization valid.
This field must be present and true for authorizations created as a result of a newOrder request containing a DNS identifier with a value that was a wildcard domain name. For other authorizations, it must be absent.
For pending orders, the authorizations that the client needs to complete before the requested certificate can be issued, including unexpired authorizations that the client has completed in the past for identifiers specified in the order.
-
The authorizations required are dictated by server policy; there may not be a 1:1 relationship between the order identifiers and the authorizations required.
-
For final orders (in the valid or invalid state), the authorizations that were completed. Each entry is a URL from which an authorization can be fetched with a POST-as-GET request.
Returned: if order.status is pending or valid, and sometimes in other situations
-
-
-
-
finalize
-
string
-
-
A URL that a CSR must be POSTed to once all of the order’s authorizations are satisfied to finalize the order. The result of a successful finalization will be the population of the certificate URL for the order.
-
Returned: always
-
-
-
-
identifiers
-
list / elements=dictionary
-
-
An array of identifier objects that the order pertains to.
-
Returned: always
-
-
-
-
type
-
string
-
-
The type of identifier.
-
So far dns and ip are defined values.
-
Returned: always
-
Can only return:
-
-
"dns"
-
"ip"
-
-
Sample:"dns"
-
-
-
-
value
-
string
-
-
The identifier itself.
-
Returned: always
-
Sample:"example.com"
-
-
-
-
notAfter
-
string
-
-
The requested value of the notAfter field in the certificate.
If the ACME CA supports profiles through the draft-aaron-acme-profiles mechanism and informs about the profile selected for this order, this field will contain the name of the profile used.
-
Returned: depending on the ACME CA
-
-
-
-
replaces
-
string
-
-
If the order was created to replace an existing certificate using the replaces mechanism from RFC 9773, this provides the certificate ID of the certificate that will be replaced by this order.
-
Returned: when the certificate order is replacing a certificate through RFC 9773
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_order_validate.
Validates pending authorizations of an ACME v2 order. This is the second to last step of obtaining a new certificate with the ACME protocol from a Certificate Authority such as Let’s Encrypt. This module does not support ACME v1, the original version of the ACME protocol before standardization.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
The notes for this module contain a list of ACME services this module has been tested against.
-
-
-
-
acme_version
-
integer / required
-
-
The ACME version of the endpoint.
-
Must be 1 for the classic Let’s Encrypt and Buypass ACME endpoints, or 2 for standardized ACME v2 endpoints.
-
The value 1 is deprecated since community.crypto 2.0.0 and will be removed from community.crypto 3.0.0.
-
Choices:
-
-
1
-
2
-
-
-
-
-
challenge
-
string
-
-
The challenge to be performed for every pending authorization.
-
Must be provided if there is at least one pending authorization.
-
In case of authorization reuse, or in case of CAs which use External Account Binding and other means of validating certificate assurance, it might not be necessary to provide this option.
-
Choices:
-
-
"http-01"
-
"dns-01"
-
"tls-alpn-01"
-
-
-
-
-
deactivate_authzs
-
boolean
-
-
Deactivate authentication objects (authz) in case an error happens.
-
Authentication objects are bound to an account key and remain valid for a certain amount of time, and can be used to issue certificates without having to re-authenticate the domain. This can be a security concern.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
---
-### Example with HTTP-01 challenge ###
-
--name:Create a challenge for sample.com using a account key from a variable
-community.crypto.acme_certificate_order_create:
-account_key_content:"{{account_private_key}}"
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key from Hashi Vault
-community.crypto.acme_certificate_order_create:
-account_key_content:>-
-{{lookup('community.hashi_vault.hashi_vault','secret=secret/account_private_key:value')}}
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Alternative first step:
--name:Create a challenge for sample.com using a account key file
-community.crypto.acme_certificate_order_create:
-account_key_src:/etc/pki/cert/private/account.key
-csr_content:"{{lookup('file','/etc/pki/cert/csr/sample.com.csr')}}"
-register:sample_com_challenge
-
-# Perform the necessary steps to fulfill the challenge. For example:
-#
-# - name: Copy http-01 challenges
-# ansible.builtin.copy:
-# dest: /var/www/{{item.identifier}}/{{item.challenges['http-01'].resource}}
-# content: "{{item.challenges['http-01'].resource_value}}"
-# loop: "{{sample_com_challenge.challenge_data}}"
-# when: "'http-01' in item.challenges"
-
--name:Let the challenge be validated
-community.crypto.acme_certificate_order_validate:
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{sample_com_challenge.order_uri}}"
-challenge:http-01
-
--name:Retrieve the cert and intermediate certificate
-community.crypto.acme_certificate_order_finalize:
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-order_uri:"{{sample_com_challenge.order_uri}}"
-cert_dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-
----
-### Example with DNS challenge against production ACME server ###
-
--name:Create a challenge for sample.com using a account key file.
-community.crypto.acme_certificate_order_create:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-register:sample_com_challenge
-
-# Perform the necessary steps to fulfill the challenge. For example:
-#
-# - name: Create DNS records for dns-01 challenges
-# community.aws.route53:
-# zone: sample.com
-# record: "{{item.key}}"
-# type: TXT
-# ttl: 60
-# state: present
-# wait: true
-# # Note: item.value is a list of TXT entries, and route53
-# # requires every entry to be enclosed in quotes
-# value: "{{item.value|map('community.dns.quote_txt',always_quote=true)|list}}"
-# loop: "{{sample_com_challenge.challenge_data_dns|dict2items}}"
-
--name:Let the challenge be validated
-community.crypto.acme_certificate_order_validate:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-order_uri:"{{sample_com_challenge.order_uri}}"
-challenge:dns-01
-
--name:Retrieve the cert and intermediate certificate
-community.crypto.acme_certificate_order_finalize:
-acme_directory:https://acme-v01.api.letsencrypt.org/directory
-acme_version:2
-account_key_src:/etc/pki/cert/private/account.key
-csr:/etc/pki/cert/csr/sample.com.csr
-order_uri:"{{sample_com_challenge.order_uri}}"
-cert_dest:/etc/httpd/ssl/sample.com.crt
-fullchain_dest:/etc/httpd/ssl/sample.com-fullchain.crt
-chain_dest:/etc/httpd/ssl/sample.com-intermediate.crt
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_renewal_info.
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
The percentage of the certificate’s validity period that should be left.
-
For example, if remaining_percentage=0.1, and the certificate’s validity period is 90 days, this check causes should_renew=true if the certificate is valid for less than 9 days.
-
Must be a value between 0 and 1.
-
-
-
-
request_timeout
-
integer
-
added in community.crypto 2.3.0
-
-
The time Ansible should wait for a response from the ACME API.
-
This timeout is applied to all HTTP(S) requests (HEAD, GET, POST).
-
Default:10
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available, and falls back to openssl.
-
If set to openssl, will try to use the openssl binary.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
"openssl"
-
-
-
-
-
treat_parsing_error_as_non_existing
-
boolean
-
added in community.crypto 2.24.0
-
-
Determines the behavior when the certificate file exists or its contents are provided, but the certificate cannot be parsed.
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower.
---
--name:Retrieve renewal information for a certificate
-community.crypto.acme_certificate_renewal_info:
-certificate_path:/etc/httpd/ssl/sample.com.crt
-register:cert_data
-
--name:Should the certificate be renewed?
-ansible.builtin.debug:
-var:cert_data.should_renew
-
Should be shown to the user, as in case of ARI triggered renewal it can contain important information, for example on forced revocations for misissued certificates.
-
Returned: success
-
Sample:"Thecertificatedoesnotexist."
-
-
-
-
parsable
-
boolean
-
added in community.crypto 2.24.0
-
-
Whether the certificate file exists, or certificate_content was provided, and the certificate can be parsed.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_certificate_revoke.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
RSA keys can be created with opensslrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
private_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the certificate’s private key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
Trying to revoke an already revoked certificate should result in an unchanged status, even if the revocation reason was different than the one specified here. Also, depending on the server, it can happen that some other error is returned if the certificate has already been revoked.
-
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_challenge_cert_helper.
Prepares certificates for ACME challenges such as tls-alpn-01.
-
The raw data is provided by the community.crypto.acme_certificate module, and needs to be converted to a certificate to be used for challenge validation. This module provides a simple way to generate the required certificates.
---
--name:Create challenges for a given CRT for sample.com
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-challenge:tls-alpn-01
-csr:/etc/pki/cert/csr/sample.com.csr
-dest:/etc/httpd/ssl/sample.com.crt
-register:sample_com_challenge
-
--name:Create certificates for challenges
-community.crypto.acme_challenge_cert_helper:
-challenge:tls-alpn-01
-challenge_data:"{{item.value['tls-alpn-01']}}"
-private_key_src:/etc/pki/cert/key/sample.com.key
-loop:"{{sample_com_challenge.challenge_data|dictsort}}"
-register:sample_com_challenge_certs
-
--name:Install challenge certificates
-# We need to set up HTTPS such that for the domain,
-# regular_certificate is delivered for regular connections,
-# except if ALPN selects the "acme-tls/1"; then, the
-# challenge_certificate must be delivered.
-# This can for example be achieved with very new versions
-# of NGINX; search for ssl_preread and
-# ssl_preread_alpn_protocols for information on how to
-# route by ALPN protocol.
-...:
-domain:"{{item.domain}}"
-challenge_certificate:"{{item.challenge_certificate}}"
-regular_certificate:"{{item.regular_certificate}}"
-private_key:/etc/pki/cert/key/sample.com.key
-loop:"{{sample_com_challenge_certs.results}}"
-
--name:Create certificate for a given CSR for sample.com
-community.crypto.acme_certificate:
-account_key_src:/etc/pki/cert/private/account.key
-challenge:tls-alpn-01
-csr:/etc/pki/cert/csr/sample.com.csr
-dest:/etc/httpd/ssl/sample.com.crt
-data:"{{sample_com_challenge}}"
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.acme_inspect.
Allows to send direct requests to an ACME server with the ACME protocol, which is supported by CAs such as Let’s Encrypt.
-
This module can be used to debug failed certificate request attempts, for example when community.crypto.acme_certificate fails or encounters a problem which you wish to investigate.
-
The module can also be used to directly access features of an ACME servers which are not yet supported by the Ansible ACME modules.
Warning: the content will be written into a temporary file, which will be deleted by Ansible when the module completes. Since this is an important private key — it can be used to change the account key, or to revoke your certificates without knowing their private keys —, this might not be acceptable.
-
In case cryptography is used, the content is not written into a temporary file. It can still happen that it is written to disk by Ansible in the process of moving the module with its argument to the node where it is executed.
-
-
-
-
account_key_passphrase
-
string
-
added in community.crypto 1.6.0
-
-
Phassphrase to use to decode the account key.
-
Note: this is not supported by the openssl backend, only by the cryptography backend.
-
-
-
-
-
account_key_src
-
aliases: account_key
-
path
-
-
Path to a file containing the ACME account RSA or Elliptic Curve key.
-
For Elliptic Curve keys only the following curves are supported: secp256r1, secp384r1, and secp521r1.
-
Private keys can be created with the community.crypto.openssl_privatekey or community.crypto.openssl_privatekey_pipe modules. If the requisite (cryptography) is not available, keys can also be created directly with the openssl command line tool: RSA keys can be created with opensslgenrsa.... Elliptic curve keys can be created with opensslecparam-genkey.... Any other tool creating private keys in PEM format can be used as well.
If specified, assumes that the account URI is as given. If the account key does not match this account, or an account with this URI does not exist, the module fails.
-
-
-
-
acme_directory
-
string / required
-
-
The ACME directory to use. This is the entry point URL to access the ACME CA server API.
-
For safety reasons the default is set to the Let’s Encrypt staging server (for the ACME v1 protocol). This will create technically correct, but untrusted certificates.
The account_uri option must be specified for properly authenticated ACME v2 requests (except a new-account request).
-
Using the ansible tool, community.crypto.acme_inspect can be used to directly execute ACME requests without the need of writing a playbook. For example, the following command retrieves the ACME account with ID 1 from Let’s Encrypt (assuming /path/to/key is the correct private account key): ansiblelocalhost-macme_inspect-a"account_key_src=/path/to/keyacme_directory=https://acme-v02.api.letsencrypt.org/directoryacme_version=2account_uri=https://acme-v02.api.letsencrypt.org/acme/acct/1method=geturl=https://acme-v02.api.letsencrypt.org/acme/acct/1".
-
Although the defaults are chosen so that the module can be used with the Let’s Encrypt CA, the module can in principle be used with any CA providing an ACME endpoint.
-
So far, the ACME modules have only been tested by the developers against Let’s Encrypt (staging and production), ZeroSSL (production), and Pebble testing server. We have got community feedback that they also work with Sectigo ACME Service for InCommon and with HARICA. If you experience problems with another ACME server, please create an issue to help us supporting it. Feedback that an ACME server not mentioned does work is also appreciated.
-
If a new enough version of the cryptography library is available (see Requirements for details), it will be used instead of the openssl binary. This can be explicitly disabled or enabled with the select_crypto_backend option. Note that using the openssl binary will be slower and less secure, as private key contents always have to be stored on disk (see account_key_content).
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.certificate_complete_chain.
This module completes a given chain of certificates in PEM format by finding intermediate certificates from a given set of certificates, until it finds a root certificate in another given set of certificates.
Note that this module does not check for validity of the chains. It only checks that issuer and subject match, and that the signature is correct. It ignores validity dates and key usage completely. If you need to verify that a generated chain is valid, please use opensslverify....
A concatenated set of certificates in PEM format forming a chain.
-
The module will try to complete this chain.
-
-
-
-
intermediate_certificates
-
list / elements=path
-
-
A list of filenames or directories.
-
A filename is assumed to point to a file containing one or more certificates in PEM format. All certificates in this file will be added to the set of root certificates.
-
If a directory name is given, all files in the directory and its subdirectories will be scanned and tried to be parsed as concatenated certificates in PEM format.
-
Symbolic links will be followed.
-
Default:[]
-
-
-
-
root_certificates
-
list / elements=path / required
-
-
A list of filenames or directories.
-
A filename is assumed to point to a file containing one or more certificates in PEM format. All certificates in this file will be added to the set of root certificates.
-
If a directory name is given, all files in the directory and its subdirectories will be scanned and tried to be parsed as concatenated certificates in PEM format.
---
-# Given a leaf certificate for www.ansible.com and one or more intermediate
-# certificates, finds the associated root certificate.
--name:Find root certificate
-community.crypto.certificate_complete_chain:
-input_chain:"{{lookup('ansible.builtin.file','/etc/ssl/csr/www.ansible.com-fullchain.pem')}}"
-root_certificates:
--/etc/ca-certificates/
-register:www_ansible_com
--name:Write root certificate to disk
-ansible.builtin.copy:
-dest:/etc/ssl/csr/www.ansible.com-root.pem
-content:"{{www_ansible_com.root}}"
-
-# Given a leaf certificate for www.ansible.com, and a list of intermediate
-# certificates, finds the associated root certificate.
--name:Find root certificate
-community.crypto.certificate_complete_chain:
-input_chain:"{{lookup('ansible.builtin.file','/etc/ssl/csr/www.ansible.com.pem')}}"
-intermediate_certificates:
--/etc/ssl/csr/www.ansible.com-chain.pem
-root_certificates:
--/etc/ca-certificates/
-register:www_ansible_com
--name:Write complete chain to disk
-ansible.builtin.copy:
-dest:/etc/ssl/csr/www.ansible.com-completechain.pem
-content:"{{''.join(www_ansible_com.complete_chain)}}"
--name:Write root chain (intermediates and root) to disk
-ansible.builtin.copy:
-dest:/etc/ssl/csr/www.ansible.com-rootchain.pem
-content:"{{''.join(www_ansible_com.chain)}}"
-
acme_certificate - add options order_creation_error_strategy and order_creation_max_retries which allow to configure the error handling behavior if creating a new ACME order fails. This is particularly important when using the include_renewal_cert_id option, and the default value auto for order_creation_error_strategy tries to gracefully handle related errors (https://github.com/ansible-collections/community.crypto/pull/842).
Support for ansible-core 2.11, 2.12, 2.13, 2.14, 2.15, and 2.16 is deprecated, and will be removed in the next major release (community.crypto 3.0.0). Some modules might still work with some of these versions afterwards, but we will no longer keep compatibility code that was needed to support them. Note that this means that support for all Python versions before 3.7 will be dropped, also on the target side (https://github.com/ansible-collections/community.crypto/issues/559, https://github.com/ansible-collections/community.crypto/pull/839).
crypto_info - when running the module on Fedora 41 with cryptography installed from the package repository, the module crashed apparently due to some elliptic curves being removed from libssl against which cryptography is running, which cryptography did not expect (https://github.com/ansible-collections/community.crypto/pull/834).
acme documentation fragment - the default community.crypto.acme[.documentation] docs fragment is deprecated and will be removed from community.crypto 3.0.0. Replace it with both the new community.crypto.acme.basic and community.crypto.acme.account fragments (https://github.com/ansible-collections/community.crypto/pull/735).
crypto.module_backends.common module utils - the crypto.module_backends.common module utils is deprecated and will be removed from community.crypto 3.0.0. Use the improved argspec module util instead (https://github.com/ansible-collections/community.crypto/pull/749).
x509_crl, x509_certificate, x509_certificate_info - when parsing absolute timestamps which omitted the second count, the first digit of the minutes was used as a one-digit minutes count, and the second digit of the minutes as a one-digit second count (https://github.com/ansible-collections/community.crypto/pull/745).
acme.backends module utils - from community.crypto on, all implementations of CryptoBackend must override get_ordered_csr_identifiers(). The current default implementation, which simply sorts the result of get_csr_identifiers(), will then be removed (https://github.com/ansible-collections/community.crypto/pull/725).
openssl_csr_pipe, openssl_privatekey_pipe, x509_certificate_pipe - the current behavior of check mode is deprecated and will change in community.crypto 3.0.0. The current behavior is similar to the modules without _pipe: if the object needs to be (re-)generated, only the changed status is set, but the object is not updated. From community.crypto 3.0.0 on, the modules will ignore check mode and always act as if check mode is not active. This behavior can already achieved now by adding check_mode:false to the task. If you think this breaks your use-case of this module, please create an issue in the community.crypto repository (https://github.com/ansible-collections/community.crypto/issues/712, https://github.com/ansible-collections/community.crypto/pull/714).
luks_device - fixed module falsely outputting changed=false when trying to add a new slot with a key that is already present in another slot. The module now rejects adding keys that are already present in another slot (https://github.com/ansible-collections/community.crypto/pull/710).
openssl_dhparam - was using an internal function instead of the public API to load DH param files when using the cryptography backend. The internal function was removed in cryptography 42.0.0. The module now uses the public API, which has been available since support for DH params was added to cryptography (https://github.com/ansible-collections/community.crypto/pull/698).
Bugfix and maintenance release with updated documentation.
-
From this version on, community.crypto is using the new Ansible semantic markup
-in its documentation. If you look at documentation with the ansible-doc CLI tool
-from ansible-core before 2.15, please note that it does not render the markup
-correctly. You should be still able to read it in most cases, but you need
-ansible-core 2.15 or later to see it as it is intended. Alternatively you can
-look at the devel docsite
-for the rendered HTML version of the documentation of the latest release.
Ansible markup will show up in raw form on ansible-doc text output for ansible-core before 2.15. If you have trouble deciphering the documentation markup, please upgrade to ansible-core 2.15 (or newer), or read the HTML documentation on https://docs.ansible.com/ansible/devel/collections/community/crypto/.
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 (https://github.com/ansible-collections/community.crypto/pull/598).
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 (https://github.com/ansible-collections/community.crypto/pull/523).
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 (https://github.com/ansible-collections/community.crypto/pull/491).
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 (https://github.com/ansible-collections/community.crypto/pull/460).
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.
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 (https://github.com/ansible-collections/community.crypto/issues/481).
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 (https://github.com/ansible-collections/community.crypto/pull/440).
-
Support automatic conversion for Internalionalized Domain Names (IDNs). When passing general names, for example Subject Alternative 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 (https://github.com/ansible-collections/community.crypto/issues/426, https://github.com/ansible-collections/community.crypto/pull/436).
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.
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 (https://github.com/ansible-collections/community.crypto/pull/331).
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.
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 (https://github.com/ansible-collections/community.crypto/pull/318).
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 (https://github.com/ansible-collections/community.crypto/pull/279).
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) (https://github.com/ansible-collections/community.crypto/pull/184).
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.
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, https://github.com/ansible-collections/community.crypto/pull/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, https://github.com/ansible-collections/community.crypto/pull/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, https://github.com/ansible-collections/community.crypto/pull/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, https://github.com/ansible-collections/community.crypto/pull/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, https://github.com/ansible-collections/community.crypto/pull/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, https://github.com/ansible-collections/community.crypto/pull/125).
openssl_certificate - the PyOpenSSL backend now uses 160 bits of randomness for serial numbers, instead of a random number between 1000 and 99999. Please note that this is not a high quality random number (https://github.com/ansible-collections/community.crypto/issues/76).
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 necessary.)
-
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 - 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.
Retrieve information on cryptographic capabilities.
-
The current version retrieves information on the Python cryptography library available to Ansible modules, and on the OpenSSL binary openssl found in the path.
The community.crypto collection offers multiple modules that create private keys, certificate signing requests, and certificates. This guide shows how to create your own small CA and how to use it to sign certificates.
-
In all examples, we assume that the CA’s private key is password protected, where the password is provided in the secret_ca_passphrase variable.
Any certificate can be used as a CA certificate. You can create a self-signed certificate (see How to create self-signed certificates), use another CA certificate to sign a new certificate (using the instructions below for signing a certificate), ask (and pay) a commercial CA to sign your CA certificate, etc.
-
The following instructions show how to set up a simple self-signed CA certificate.
-
-name:Create private key with password protection
-community.crypto.openssl_privatekey:
-path:/path/to/ca-certificate.key
-passphrase:"{{secret_ca_passphrase}}"
-
--name:Create certificate signing request (CSR) for CA certificate
-community.crypto.openssl_csr_pipe:
-privatekey_path:/path/to/ca-certificate.key
-privatekey_passphrase:"{{secret_ca_passphrase}}"
-common_name:Ansible CA
-use_common_name_for_san:false# since we do not specify SANs, don't use CN as a SAN
-basic_constraints:
--'CA:TRUE'
-basic_constraints_critical:true
-key_usage:
--keyCertSign
-key_usage_critical:true
-register:ca_csr
-
--name:Create self-signed CA certificate from CSR
-community.crypto.x509_certificate:
-path:/path/to/ca-certificate.pem
-csr_content:"{{ca_csr.csr}}"
-privatekey_path:/path/to/ca-certificate.key
-privatekey_passphrase:"{{secret_ca_passphrase}}"
-provider:selfsigned
-
In the following example, we assume that the certificate to sign (including its private key) are on server_1, while our CA certificate is on server_2. We do not want any key material to leave each respective server.
-
-name:Create private key for new certificate on server_1
-community.crypto.openssl_privatekey:
-path:/path/to/certificate.key
-delegate_to:server_1
-run_once:true
-
--name:Create certificate signing request (CSR) for new certificate
-community.crypto.openssl_csr_pipe:
-privatekey_path:/path/to/certificate.key
-subject_alt_name:
--"DNS:ansible.com"
--"DNS:www.ansible.com"
--"DNS:docs.ansible.com"
-delegate_to:server_1
-run_once:true
-register:csr
-
--name:Sign certificate with our CA
-community.crypto.x509_certificate_pipe:
-csr_content:"{{csr.csr}}"
-provider:ownca
-ownca_path:/path/to/ca-certificate.pem
-ownca_privatekey_path:/path/to/ca-certificate.key
-ownca_privatekey_passphrase:"{{secret_ca_passphrase}}"
-ownca_not_after:+365d# valid for one year
-ownca_not_before:"-1d"# valid since yesterday
-delegate_to:server_2
-run_once:true
-register:certificate
-
--name:Write certificate file on server_1
-copy:
-dest:/path/to/certificate.pem
-content:"{{certificate.certificate}}"
-delegate_to:server_1
-run_once:true
-
-
-
Please note that the above procedure is not idempotent. The following extended example reads the existing certificate from server_1 (if exists) and provides it to the community.crypto.x509_certificate_pipe module, and only writes the result back if it was changed:
-
-name:Create private key for new certificate on server_1
-community.crypto.openssl_privatekey:
-path:/path/to/certificate.key
-delegate_to:server_1
-run_once:true
-
--name:Create certificate signing request (CSR) for new certificate
-community.crypto.openssl_csr_pipe:
-privatekey_path:/path/to/certificate.key
-subject_alt_name:
--"DNS:ansible.com"
--"DNS:www.ansible.com"
--"DNS:docs.ansible.com"
-delegate_to:server_1
-run_once:true
-register:csr
-
--name:Check whether certificate exists
-stat:
-path:/path/to/certificate.pem
-delegate_to:server_1
-run_once:true
-register:certificate_exists
-
--name:Read existing certificate if exists
-slurp:
-src:/path/to/certificate.pem
-when:certificate_exists.stat.exists
-delegate_to:server_1
-run_once:true
-register:certificate
-
--name:Sign certificate with our CA
-community.crypto.x509_certificate_pipe:
-content:"{{(certificate.content|b64decode)ifcertificate_exists.stat.existselseomit}}"
-csr_content:"{{csr.csr}}"
-provider:ownca
-ownca_path:/path/to/ca-certificate.pem
-ownca_privatekey_path:/path/to/ca-certificate.key
-ownca_privatekey_passphrase:"{{secret_ca_passphrase}}"
-ownca_not_after:+365d# valid for one year
-ownca_not_before:"-1d"# valid since yesterday
-delegate_to:server_2
-run_once:true
-register:certificate
-
--name:Write certificate file on server_1
-copy:
-dest:/path/to/certificate.pem
-content:"{{certificate.certificate}}"
-delegate_to:server_1
-run_once:true
-when:certificate is changed
-
The community.crypto collection offers multiple modules that create private keys, certificate signing requests, and certificates. This guide shows how to create self-signed certificates.
-
For creating any kind of certificate, you always have to start with a private key. You can use the community.crypto.openssl_privatekey module to create a private key. If you only specify path, the default parameters will be used. This will result in a 4096 bit RSA private key:
You can specify type to select another key type, size to select a different key size (only available for RSA and DSA keys), or passphrase if you want to store the key password-protected:
You can use selfsigned_not_after to define when the certificate expires (default: in roughly 10 years), and selfsigned_not_before to define from when the certificate is valid (default: now).
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.ecs_certificate.
In order to request a certificate, the domain and organization used in the certificate signing request must be already validated in the ECS system. It is not the responsibility of this module to perform those steps.
A reissued certificate will always have the same expiry as the original certificate.
-
Note that only the date (day, month, year) is supported for specifying the expiry date. If you choose to specify an expiry time with the expiry date, the time will be adjusted to Eastern Standard Time (EST). This could have the unintended effect of moving your expiry date to the previous day.
-
Applies only to accounts with a pooling inventory model.
If a certificate is being reissued or renewed, this parameter is ignored, and the cert_type of the initial certificate is used.
-
Choices:
-
-
"STANDARD_SSL"
-
"ADVANTAGE_SSL"
-
"UC_SSL"
-
"EV_SSL"
-
"WILDCARD_SSL"
-
"PRIVATE_SSL"
-
"PD_SSL"
-
"CODE_SIGNING"
-
"EV_CODE_SIGNING"
-
"CDS_INDIVIDUAL"
-
"CDS_GROUP"
-
"CDS_ENT_LITE"
-
"CDS_ENT_PRO"
-
"SMIME_ENT"
-
-
-
-
-
client_id
-
integer
-
-
The client ID to submit the Certificate Signing Request under.
-
If no client ID is specified, the certificate will be submitted under the primary client with ID of 1.
-
When using a client other than the primary client, the org parameter cannot be specified.
-
The issued certificate will have an organization value in the subject distinguished name represented by the client.
-
Default:1
-
-
-
-
csr
-
string
-
-
Base-64 encoded Certificate Signing Request (CSR). csr is accepted with or without PEM formatting around the Base-64 string.
-
If no csr is provided when request_type=reissue or request_type=renew, the certificate will be generated with the same public key as the certificate being renewed or reissued.
-
If subject_alt_name is specified, it will override the subject alternate names in the CSR.
-
If eku is specified, it will override the extended key usage in the CSR.
-
If ou is specified, it will override the organizational units “ou=” present in the subject distinguished name of the CSR, if any.
-
The organization “O=” field from the CSR will not be used. It will be replaced in the issued certificate by org if present, and if not present, the organization tied to client_id.
-
-
-
-
ct_log
-
boolean
-
-
In compliance with browser requirements, this certificate may be posted to the Certificate Transparency (CT) logs. This is a best practice technique that helps domain owners monitor certificates issued to their domains. Note that not all certificates are eligible for CT logging.
-
If ct_log is not specified, the certificate uses the account default.
-
If ct_log is specified and the account settings allow it, ct_log overrides the account default.
-
If ct_log is set to false, but the account settings are set to “always log”, the certificate generation will fail.
-
Choices:
-
-
false
-
true
-
-
-
-
-
custom_fields
-
dictionary
-
-
Mapping of custom fields to associate with the certificate request and certificate.
-
Only supported if custom fields are enabled for your account.
-
Each custom field specified must be a custom field you have defined for your account.
The end user of the Code Signing certificate must generate and store the private key for this request on cryptographically secure hardware to be compliant with the Entrust CSP and Subscription agreement. If requesting a certificate of type CODE_SIGNING or EV_CODE_SIGNING, you must set end_user_key_storage_agreement to true if and only if you acknowledge that you will inform the user of this requirement.
-
Applicable only to cert_type of values CODE_SIGNING and EV_CODE_SIGNING.
-
Choices:
-
-
false
-
true
-
-
-
-
-
entrust_api_client_cert_key_path
-
path / required
-
-
The path to the key for the client certificate used to authenticate to the Entrust Certificate Services (ECS) API.
-
-
-
-
entrust_api_client_cert_path
-
path / required
-
-
The path to the client certificate used to authenticate to the Entrust Certificate Services (ECS) API.
-
-
-
-
entrust_api_key
-
string / required
-
-
The key (password) for authentication to the Entrust Certificate Services (ECS) API.
-
-
-
-
entrust_api_specification_path
-
path
-
-
The path to the specification file defining the Entrust Certificate Services (ECS) API configuration.
-
You can use this to keep a local copy of the specification to avoid downloading it every time the module is used.
The username for authentication to the Entrust Certificate Services (ECS) API.
-
-
-
-
force
-
boolean
-
-
If force is used, a certificate is requested regardless of whether path points to an existing valid certificate.
-
If request_type=renew, a forced renew will fail if the certificate being renewed has been issued within the past 30 days, regardless of the value of remaining_days or the return value of cert_days - the ECS API does not support the “renew” operation for certificates that are not at least 30 days old.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
full_chain_path
-
path
-
-
The destination path for the full certificate chain of the certificate, intermediates, and roots.
-
-
-
-
org
-
string
-
-
Organization “O=” to include in the certificate.
-
If org is not specified, the organization from the client represented by client_id is used.
-
Unless the cert_type is PD_SSL, this field may not be specified if the value of client_id is not “1” (the primary client). non-primary clients, certificates may only be issued with the organization of that client.
-
-
-
-
ou
-
list / elements=string
-
-
Organizational unit “OU=” to include in the certificate.
-
ou behavior is dependent on whether organizational units are enabled for your account. If organizational unit support is disabled for your account, organizational units from the csr and the ou parameter are ignored.
-
If both csr and ou are specified, the value in ou will override the OU fields present in the subject distinguished name in the csr.
-
If neither csr nor ou are specified for a renew or reissue operation, the OU fields in the initial certificate are reused.
-
An invalid OU from csr is ignored, but any invalid organizational units in ou will result in an error indicating “Unapproved OU”. The ou parameter can be used to force failure if an unapproved organizational unit is provided.
-
A maximum of one OU may be specified for current products. Multiple OUs are reserved for future products.
-
-
-
-
path
-
path / required
-
-
The destination path for the generated certificate as a PEM encoded cert.
-
If the certificate at this location is not an Entrust issued certificate, a new certificate will always be requested even if the current certificate is technically valid.
-
If there is already an Entrust certificate at this location, whether it is replaced is depends on the remaining_days calculation.
-
If an existing certificate is being replaced (see remaining_days, force, and tracking_id), whether a new certificate is requested or the existing certificate is renewed or reissued is based on request_type.
-
-
-
-
remaining_days
-
integer
-
-
The number of days the certificate must have left being valid. If cert_days < remaining_days then a new certificate will be obtained using request_type.
-
If request_type=renew, a renewal will fail if the certificate being renewed has been issued within the past 30 days, so do not set a remaining_days value that is within 30 days of the full lifetime of the certificate being acted upon.
-
For example, if you are requesting Certificates with a 90 day lifetime, do not set remaining_days to a value 60 or higher).
-
The force option may be used to ensure that a new certificate is always obtained.
-
Default:30
-
-
-
-
request_type
-
string
-
-
The operation performed if tracking_id references a valid certificate to reissue, or there is already a certificate present in path but either force is specified or cert_days < remaining_days.
-
Specifying request_type=validate_only means the request will be validated against the ECS API, but no certificate will be issued.
-
Specifying request_type=new means a certificate request will always be submitted and a new certificate issued.
-
Specifying request_type=renew means that an existing certificate (specified by tracking_id if present, otherwise path) will be renewed. If there is no certificate to renew, a new certificate is requested.
-
Specifying request_type=reissue means that an existing certificate (specified by tracking_id if present, otherwise path) will be reissued. If there is no certificate to reissue, a new certificate is requested.
-
If a certificate was issued within the past 30 days, the renew operation is not a valid operation and will fail.
-
Note that reissue is an operation that will result in the revocation of the certificate that is reissued, be cautious with its use.
For example, setting request_type=renew and remaining_days=30 and pointing to the same certificate on multiple playbook runs means that on the first run new certificate will be requested. It will then be left along on future runs until it is within 30 days of expiry, then the ECS “renew” operation will be performed.
-
Choices:
-
-
"new"← (default)
-
"renew"
-
"reissue"
-
"validate_only"
-
-
-
-
-
requester_email
-
string / required
-
-
The requester email to associate with certificate tracking information and receive delivery and expiry notices for the certificate.
-
-
-
-
requester_name
-
string / required
-
-
The requester name to associate with certificate tracking information.
-
-
-
-
requester_phone
-
string / required
-
-
The requester phone number to associate with certificate tracking information.
-
-
-
-
subject_alt_name
-
list / elements=string
-
-
The subject alternative name identifiers, as an array of values (applies to cert_type with a value of STANDARD_SSL, ADVANTAGE_SSL, UC_SSL, EV_SSL, WILDCARD_SSL, PRIVATE_SSL, and PD_SSL).
-
If you are requesting a new SSL certificate, and you pass a subject_alt_name parameter, any SAN names in the CSR are ignored. If no subjectAltName parameter is passed, the SAN names in the CSR are used.
-
See request_type to understand more about SANs during reissues and renewals.
-
In the case of certificates of type STANDARD_SSL certificates, if the CN of the certificate is <domain>.<tld> only the www.<domain>.<tld> value is accepted. If the CN of the certificate is www.<domain>.<tld> only the <domain>.<tld> value is accepted.
-
-
-
-
tracking_id
-
integer
-
-
The tracking ID of the certificate to reissue or renew.
If there is a certificate present in path and it is an ECS certificate, tracking_id will be ignored.
-
If there is no certificate present in path or there is but it is from another provider, the certificate represented by tracking_id will be renewed or reissued and saved to path.
-
If there is no certificate present in path and the force and remaining_days parameters do not indicate a new certificate is needed, the certificate referenced by tracking_id certificate will be saved to path.
-
This can be used when a known certificate is not currently present on a server, but you want to renew or reissue it to be managed by an ansible playbook. For example, if you specify request_type=renew, tracking_id of an issued certificate, and path to a file that does not exist, the first run of a task will download the certificate specified by tracking_id (assuming it is still valid). Future runs of the task will (if applicable - see force and remaining_days) renew the certificate now present in path.
-
-
-
-
tracking_info
-
string
-
-
Free form tracking information to attach to the record for the certificate.
Under which conditions the module is idempotent still needs to be determined. If you are using this module and have more information, please contribute to the documentation!
-
-
When run twice in a row outside check mode, with the same arguments, the second invocation indicates no change.
-
This assumes that the system controlled/queried by the module has not changed in a relevant way.
-
-
-
-
safe_file_operations
-
-
Support: full
-
-
Uses Ansible’s strict file operation functions to ensure proper permissions and avoid data corruption.
---
--name:Request a new certificate from Entrust with bare minimum parameters. Will request a new certificate if current one
-is valid but within 30 days of expiry. If replacing an existing file in path, will back it up.
-community.crypto.ecs_certificate:
-backup:true
-path:/etc/ssl/crt/ansible.com.crt
-full_chain_path:/etc/ssl/crt/ansible.com.chain.crt
-csr:/etc/ssl/csr/ansible.com.csr
-cert_type:EV_SSL
-requester_name:Jo Doe
-requester_email:jdoe@ansible.com
-requester_phone:555-555-5555
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:If there is no certificate present in path, request a new certificate of type EV_SSL. Otherwise, if there is an
-Entrust managed certificate in path and it is within 63 days of expiration, request a renew of that certificate.
-community.crypto.ecs_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr:/etc/ssl/csr/ansible.com.csr
-cert_type:EV_SSL
-cert_expiry:'2020-08-20'
-request_type:renew
-remaining_days:63
-requester_name:Jo Doe
-requester_email:jdoe@ansible.com
-requester_phone:555-555-5555
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:If there is no certificate present in path, download certificate specified by tracking_id if it is still valid.
-Otherwise, if the certificate is within 79 days of expiration, request a renew of that certificate and save it in path.
-This can be used to "migrate" a certificate to be Ansible managed.
-community.crypto.ecs_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr:/etc/ssl/csr/ansible.com.csr
-tracking_id:2378915
-request_type:renew
-remaining_days:79
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:Force a reissue of the certificate specified by tracking_id.
-community.crypto.ecs_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-force:true
-tracking_id:2378915
-request_type:reissue
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:Request a new certificate with an alternative client. Note that the issued certificate will have its Subject Distinguished
-Name use the organization details associated with that client, rather than what is in the CSR.
-community.crypto.ecs_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr:/etc/ssl/csr/ansible.com.csr
-client_id:2
-requester_name:Jo Doe
-requester_email:jdoe@ansible.com
-requester_phone:555-555-5555
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:Request a new certificate with a number of CSR parameters overridden and tracking information
-community.crypto.ecs_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-full_chain_path:/etc/ssl/crt/ansible.com.chain.crt
-csr:/etc/ssl/csr/ansible.com.csr
-subject_alt_name:
--ansible.testcertificates.com
--www.testcertificates.com
-eku:SERVER_AND_CLIENT_AUTH
-ct_log:true
-org:Test Organization Inc.
-ou:
--Administration
-tracking_info:"SubmittedviaAnsible"
-additional_emails:
--itsupport@testcertificates.com
--jsmith@ansible.com
-custom_fields:
-text1:Admin
-text2:Invoice 25
-number1:342
-date1:'2018-01-01'
-email1:sales@ansible.testcertificates.com
-dropdown1:red
-cert_expiry:'2020-08-15'
-requester_name:Jo Doe
-requester_email:jdoe@ansible.com
-requester_phone:555-555-5555
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
The full response JSON from the Get Certificate call of the ECS API.
-
While the response contents are guaranteed to be forwards compatible with new ECS API releases, Entrust recommends that you do not make any playbooks take actions based on the content of this field. However it may be useful for debugging, logging, or auditing purposes.
-
Returned: success
-
-
-
-
cert_status
-
string
-
-
The certificate status in ECS.
-
Current possible values (which may be expanded in the future) are: ACTIVE, APPROVED, DEACTIVATED, DECLINED, EXPIRED, NA, PENDING, PENDING_QUORUM, READY, REISSUED, REISSUING, RENEWED, RENEWING, REVOKED, SUSPENDED.
-
Returned: success
-
Sample:"ACTIVE"
-
-
-
-
filename
-
string
-
-
The destination path for the generated certificate.
-
Returned: changed or success
-
Sample:"/etc/ssl/crt/www.ansible.com.crt"
-
-
-
-
serial_number
-
integer
-
-
The serial number of the issued certificate.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:1235262234164342
-
-
-
-
tracking_id
-
integer
-
-
The tracking ID to reference and track the certificate in ECS.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.ecs_domain.
If the domain is already in the validation process, no new validation will be requested, but the validation data (if applicable) will be returned.
-
If the domain is already in the validation process but the verification_method specified is different than the current verification_method, the verification_method will be updated and validation data (if applicable) will be returned.
-
If the domain is an active, validated domain, the return value of changed will be false, unless domain_status=EXPIRED, in which case a re-validation will be performed.
If verification_method=email, the email address(es) that the validation email(s) were sent to will be in the return parameter emails. This is purely informational. For domains requested using this module, this will always be a list of size 1.
Note that if domain_name includes subdomains, the top level domain should be used. For example, if requesting validation of example1.ansible.com, or test.example2.ansible.com, and you want to use the “admin” preconstructed name, the email address should be admin@ansible.com.
-
If using the email values from the WHOIS data for the domain or its top level namespace, they must be exact matches.
The verification method to be used to prove control of the domain.
-
If verification_method=email and the value verification_email is specified, that value is used for the email validation. If verification_email is not provided, the first value present in WHOIS data will be used. An email will be sent to the address in verification_email with instructions on how to verify control of the domain.
Can run in check_mode and return changed status prediction without modifying target.
-
-
-
-
diff_mode
-
-
Support: none
-
-
Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode.
-
-
-
-
idempotent
-
-
Support: partial
-
Under which conditions the module is idempotent still needs to be determined. If you are using this module and have more information, please contribute to the documentation!
-
-
When run twice in a row outside check mode, with the same arguments, the second invocation indicates no change.
-
This assumes that the system controlled/queried by the module has not changed in a relevant way.
There is a small delay (typically about 5 seconds, but can be as long as 60 seconds) before obtaining the random values when requesting a validation while verification_method=dns or verification_method=web_server. Be aware of that if doing many domain validation requests.
---
--name:Request domain validation using email validation for client ID of 2.
-community.crypto.ecs_domain:
-domain_name:ansible.com
-client_id:2
-verification_method:email
-verification_email:admin@ansible.com
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:Request domain validation using DNS. If domain is already valid, request revalidation if expires within 90 days
-community.crypto.ecs_domain:
-domain_name:ansible.com
-verification_method:dns
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:Request domain validation using web server validation, and revalidate if fewer than 60 days remaining of EV eligibility.
-community.crypto.ecs_domain:
-domain_name:ansible.com
-verification_method:web_server
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
--name:Request domain validation using manual validation.
-community.crypto.ecs_domain:
-domain_name:ansible.com
-verification_method:manual
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-client.key
-
Status of the current domain. Will be one of APPROVED, DECLINED, CANCELLED, INITIAL_VERIFICATION, DECLINED, CANCELLED, RE_VERIFICATION, EXPIRED, EXPIRING.
-
Returned: changed or success
-
Sample:"APPROVED"
-
-
-
-
emails
-
list / elements=string
-
-
The list of emails used to request validation of this domain.
-
Domains requested using this module will only have a list of size 1.
The following index documents all environment variables declared by plugins in collections.
-Environment variables used by the ansible-core configuration are documented in Ansible Configuration Settings.
-
No environment variables have been defined.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pr/965/get_certificate_module.html b/pr/965/get_certificate_module.html
deleted file mode 100644
index 9f555be2..00000000
--- a/pr/965/get_certificate_module.html
+++ /dev/null
@@ -1,667 +0,0 @@
-
-
-
-
-
-
-
-
-
- community.crypto.get_certificate module – Get a certificate from a host:port — Community.Crypto Collection documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.get_certificate.
The available ciphers is dependent on the Python and OpenSSL/LibreSSL versions.
-
-
-
-
get_certificate_chain
-
boolean
-
added in community.crypto 2.21.0
-
-
If set to true, will obtain the certificate chain next to the certificate itself.
-
The chain as returned by the server can be found in unverified_chain, and the chain that passed validation in verified_chain.
-
Note that this needs Python 3.10 or newer. Also note that only Python 3.13 or newer officially supports this. The module uses internal APIs of Python 3.10, 3.11, and 3.12 to achieve the same. It can be that future versions of Python 3.10, 3.11, or 3.12 break this.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
host
-
string / required
-
-
The host to get the cert for (IP is fine).
-
-
-
-
port
-
integer / required
-
-
The port to connect to.
-
-
-
-
proxy_host
-
string
-
-
Proxy host used when get a certificate.
-
-
-
-
proxy_port
-
integer
-
-
Proxy port used when get a certificate.
-
Default:8080
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
server_name
-
string
-
added in community.crypto 1.4.0
-
-
Server name used for SNI (Server Name Indication) when hostname is an IP or is different from server name.
-
-
-
-
starttls
-
string
-
added in community.crypto 1.9.0
-
-
Requests a secure connection for protocols which require clients to initiate encryption.
-
Only available for mysql currently.
-
Choices:
-
-
"mysql"
-
-
-
-
-
timeout
-
integer
-
-
The timeout in seconds.
-
Default:10
-
-
-
-
tls_ctx_options
-
list / elements=any
-
added in community.crypto 2.21.0
-
-
TLS context options (TLS/SSL OP flags) to use for the request.
---
--name:Get the cert from an RDP port
-community.crypto.get_certificate:
-host:"1.2.3.4"
-port:3389
-delegate_to:localhost
-run_once:true
-register:cert
-
--name:Get a cert from an https port
-community.crypto.get_certificate:
-host:"www.google.com"
-port:443
-delegate_to:localhost
-run_once:true
-register:cert
-
--name:How many days until cert expires
-ansible.builtin.debug:
-msg:"certexpiresin:{{expire_days}}days."
-vars:
-expire_days:>-
-{{(
- (cert.not_after|ansible.builtin.to_datetime('%Y%m%d%H%M%SZ'))-
- (ansible_date_time.iso8601|ansible.builtin.to_datetime('%Y-%m-%dT%H:%M:%SZ'))
- ).days}}
-
--name:Allow legacy insecure renegotiation to get a cert from a legacy device
-community.crypto.get_certificate:
-host:"legacy-device.domain.com"
-port:443
-ciphers:
--HIGH
-tls_ctx_options:
--OP_ALL
--OP_NO_SSLv3
--OP_CIPHER_SERVER_PREFERENCE
--OP_ENABLE_MIDDLEBOX_COMPAT
--OP_NO_COMPRESSION
--4# OP_LEGACY_SERVER_CONNECT
-delegate_to:localhost
-run_once:true
-register:legacy_cert
-
Common return values are documented here, the following are the fields unique to this module:
-
-
-
Key
-
Description
-
-
-
-
-
cert
-
string
-
-
The certificate retrieved from the port.
-
Returned: success
-
-
-
-
expired
-
boolean
-
-
Boolean indicating if the cert is expired.
-
Returned: success
-
-
-
-
extensions
-
list / elements=dictionary
-
-
Extensions applied to the cert.
-
Returned: success
-
-
-
-
asn1_data
-
string
-
-
The ASN.1 content of the extension.
-
If asn1_base64=true this will be Base64 encoded, otherwise the raw binary value will be returned.
-
Please note that the raw binary value might not survive JSON serialization to the Ansible controller, and also might cause failures when displaying it. See https://github.com/ansible/ansible/issues/80258 for more information.
-
Note that depending on the cryptography version used, it is not possible to extract the ASN.1 content of the extension, but only to provide the re-encoded content of the extension in case it was parsed by cryptography. This should usually result in exactly the same value, except if the original extension value was malformed.
-
Returned: success
-
-
-
-
critical
-
boolean
-
-
Whether the extension is critical.
-
Returned: success
-
-
-
-
name
-
string
-
-
The extension’s name.
-
Returned: success
-
-
-
-
issuer
-
dictionary
-
-
Information about the issuer of the cert.
-
Returned: success
-
-
-
-
not_after
-
string
-
-
Expiration date of the cert.
-
Returned: success
-
-
-
-
not_before
-
string
-
-
Issue date of the cert.
-
Returned: success
-
-
-
-
serial_number
-
integer
-
-
The serial number of the cert.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
-
-
-
signature_algorithm
-
string
-
-
The algorithm used to sign the cert.
-
Returned: success
-
-
-
-
subject
-
dictionary
-
-
Information about the subject of the cert (OU, CN, and so on).
The last certificate the root certificate the chain is traced to. If ca_cert is provided this certificate is part of that store; otherwise it is part of the store used by default by Python.
-
Note that unverified_chain generally does not contain the root certificate, and might contain other certificates that are not part of the validated chain.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this filter plugin,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.gpg_fingerprint.
---
--name:Show fingerprint of GPG public key
-ansible.builtin.debug:
-msg:"{{lookup('file','/path/to/public_key.gpg')|community.crypto.gpg_fingerprint}}"
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this lookup plugin,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.gpg_fingerprint.
---
--name:Show fingerprint of GPG public key
-ansible.builtin.debug:
-msg:"{{lookup('community.crypto.gpg_fingerprint','/path/to/public_key.gpg')}}"
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.luks_device.
Module manages LUKS on given device. Supports creating, destroying, opening and closing of LUKS container and adding or removing new keys and passphrases.
Allow discards (also known as TRIM) requests for device.
-
Will only be used when opening containers.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
cipher
-
string
-
added in community.crypto 1.1.0
-
-
This option allows the user to define the cipher specification string for the LUKS container.
-
Will only be used on container creation.
-
For pre-2.6.10 kernels, use aes-plain as they do not understand the new cipher spec strings. To use ESSIV, use aes-cbc-essiv:sha256.
-
-
-
-
device
-
string
-
-
Device to work with (for example /dev/sda1). Needed in most cases. Can be omitted only when state=closed together with name is provided.
-
-
-
-
force_remove_last_key
-
boolean
-
-
If set to true, allows removing the last key from a container.
-
BEWARE that when the last key has been removed from a container, the container can no longer be opened!
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
hash
-
string
-
added in community.crypto 1.1.0
-
-
This option allows the user to specify the hash function used in LUKS key setup scheme and volume key digest.
-
Will only be used on container creation.
-
-
-
-
keyfile
-
path
-
-
Used to unlock the container. Either a keyfile or a passphrase is needed for most of the operations. Parameter value is the path to the keyfile with the passphrase.
-
BEWARE that working with keyfiles in plaintext is dangerous. Make sure that they are protected.
-
-
-
-
keysize
-
integer
-
added in community.crypto 1.0.0
-
-
Sets the key size only if LUKS container does not exist.
-
-
-
-
keyslot
-
integer
-
added in community.crypto 2.16.0
-
-
Adds the keyfile or passphrase to a specific keyslot when creating a new container on device. Parameter value is the number of the keyslot.
-
Note that a device of type=luks1 supports the keyslot numbers 0-7 and a device of type=luks2 supports the keyslot numbers 0-31. In order to use the keyslots 8-31 when creating a new container, setting type to luks2 is required.
-
-
-
-
label
-
string
-
added in community.crypto 1.0.0
-
-
This option allow the user to create a LUKS2 format container with label support, respectively to identify the container by label on later usages.
-
Will only be used on container creation, or when device is not specified.
Sets container name when state=opened. Can be used instead of device when closing the existing container (that is, when state=closed).
-
-
-
-
new_keyfile
-
path
-
-
Adds additional key to given container on device. Needs keyfile or passphrase option for authorization. LUKS container supports up to 8 keyslots. Parameter value is the path to the keyfile with the passphrase.
-
NOTE that adding additional keys is idempotent only since community.crypto 1.4.0. For older versions, a new keyslot will be used even if another keyslot already exists for this keyfile.
-
BEWARE that working with keyfiles in plaintext is dangerous. Make sure that they are protected.
-
-
-
-
new_keyslot
-
integer
-
added in community.crypto 2.16.0
-
-
Adds the additional new_keyfile or new_passphrase to a specific keyslot on the given device. Parameter value is the number of the keyslot.
-
Note that a device of type=luks1 supports the keyslot numbers 0-7 and a device of type=luks2 supports the keyslot numbers 0-31.
-
-
-
-
new_passphrase
-
string
-
added in community.crypto 1.0.0
-
-
Adds additional passphrase to given container on device. Needs keyfile or passphrase option for authorization. LUKS container supports up to 8 keyslots. Parameter value is a string with the new passphrase.
-
NOTE that adding additional passphrase is idempotent only since community.crypto 1.4.0. For older versions, a new keyslot will be used even if another keyslot already exists for this passphrase.
-
Note that the passphrase must be UTF-8 encoded text. If you want to use arbitrary binary data, or text using another encoding, use the passphrase_encoding option and provide the passphrase Base64 encoded.
-
-
-
-
passphrase
-
string
-
added in community.crypto 1.0.0
-
-
Used to unlock the container. Either a passphrase or a keyfile is needed for most of the operations. Parameter value is a string with the passphrase.
-
Note that the passphrase must be UTF-8 encoded text. If you want to use arbitrary binary data, or text using another encoding, use the passphrase_encoding option and provide the passphrase Base64 encoded.
This is not used for PBKDF2, but only for the Argon PBKDFs.
-
-
-
-
parallel
-
integer
-
-
The parallel cost for the PBKDF. This is the number of threads that run in parallel.
-
This is not used for PBKDF2, but only for the Argon PBKDFs.
-
-
-
-
perf_no_read_workqueue
-
boolean
-
added in community.crypto 2.3.0
-
-
Allows the user to bypass dm-crypt internal workqueue and process read requests synchronously.
-
Will only be used when opening containers.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
perf_no_write_workqueue
-
boolean
-
added in community.crypto 2.3.0
-
-
Allows the user to bypass dm-crypt internal workqueue and process write requests synchronously.
-
Will only be used when opening containers.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
perf_same_cpu_crypt
-
boolean
-
added in community.crypto 2.3.0
-
-
Allows the user to perform encryption using the same CPU that IO was submitted on.
-
The default is to use an unbound workqueue so that encryption work is automatically balanced between available CPUs.
-
Will only be used when opening containers.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
perf_submit_from_crypt_cpus
-
boolean
-
added in community.crypto 2.3.0
-
-
Allows the user to disable offloading writes to a separate thread after encryption.
-
There are some situations where offloading block write IO operations from the encryption threads to a single thread degrades performance significantly.
-
The default is to offload block write IO operations to the same thread.
Removes given key from the container on device. Does not remove the keyfile from filesystem. Parameter value is the path to the keyfile with the passphrase.
-
NOTE that removing keys is idempotent only since community.crypto 1.4.0. For older versions, trying to remove a key which no longer exists results in an error.
-
NOTE that to remove the last key from a LUKS container, the force_remove_last_key option must be set to true.
-
BEWARE that working with keyfiles in plaintext is dangerous. Make sure that they are protected.
Note that a device of type=luks1 supports the keyslot numbers 0-7 and a device of type=luks2 supports the keyslot numbers 0-31.
-
Note that the given keyfile or passphrase must not be in the slot to be removed.
-
-
-
-
remove_passphrase
-
string
-
added in community.crypto 1.0.0
-
-
Removes given passphrase from the container on device. Parameter value is a string with the passphrase to remove.
-
NOTE that removing passphrases is idempotent only since community.crypto 1.4.0. For older versions, trying to remove a passphrase which no longer exists results in an error.
-
NOTE that to remove the last keyslot from a LUKS container, the force_remove_last_key option must be set to true.
-
Note that the passphrase must be UTF-8 encoded text. If you want to use arbitrary binary data, or text using another encoding, use the passphrase_encoding option and provide the passphrase Base64 encoded.
-
-
-
-
sector_size
-
integer
-
added in community.crypto 1.5.0
-
-
This option allows the user to specify the sector size (in bytes) used for LUKS2 containers.
-
Will only be used on container creation.
-
-
-
-
state
-
string
-
-
Desired state of the LUKS container. Based on its value creates, destroys, opens or closes the LUKS container on a given device.
-
present will create LUKS container unless already present. Requires device and either keyfile or passphrase options to be provided.
-
absent will remove existing LUKS container if it exists. Requires device or name to be specified.
-
opened will unlock the LUKS container. If it does not exist it will be created first. Requires device and either keyfile or passphrase to be specified. Use the name option to set the name of the opened container. Otherwise the name will be generated automatically and returned as a part of the result.
-
closed will lock the LUKS container. However if the container does not exist it will be created. Requires device and either keyfile or passphrase options to be provided. If container does already exist device or name will suffice.
-
Choices:
-
-
"present"← (default)
-
"absent"
-
"opened"
-
"closed"
-
-
-
-
-
type
-
string
-
added in community.crypto 1.0.0
-
-
This option allow the user explicit define the format of LUKS container that wants to work with. Options are luks1 or luks2.
-
Choices:
-
-
"luks1"
-
"luks2"
-
-
-
-
-
uuid
-
string
-
added in community.crypto 1.0.0
-
-
With this option user can identify the LUKS container by UUID.
-
Will only be used when device and label are not specified.
---
--name:Create LUKS container (remains unchanged if it already exists)
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-keyfile:"/vault/keyfile"
-
--name:Create LUKS container with a passphrase
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-passphrase:"foo"
-
--name:Create LUKS container with specific encryption
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-cipher:"aes"
-hash:"sha256"
-
--name:(Create and) open the LUKS container; name it "mycrypt"
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"opened"
-name:"mycrypt"
-keyfile:"/vault/keyfile"
-
--name:Close the existing LUKS container "mycrypt"
-community.crypto.luks_device:
-state:"closed"
-name:"mycrypt"
-
--name:Make sure LUKS container exists and is closed
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"closed"
-keyfile:"/vault/keyfile"
-
--name:Create container if it does not exist and add new key to it
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-keyfile:"/vault/keyfile"
-new_keyfile:"/vault/keyfile2"
-
--name:Add new key to the LUKS container (container has to exist)
-community.crypto.luks_device:
-device:"/dev/loop0"
-keyfile:"/vault/keyfile"
-new_keyfile:"/vault/keyfile2"
-
--name:Add new passphrase to the LUKS container
-community.crypto.luks_device:
-device:"/dev/loop0"
-keyfile:"/vault/keyfile"
-new_passphrase:"foo"
-
--name:Remove existing keyfile from the LUKS container
-community.crypto.luks_device:
-device:"/dev/loop0"
-remove_keyfile:"/vault/keyfile2"
-
--name:Remove existing passphrase from the LUKS container
-community.crypto.luks_device:
-device:"/dev/loop0"
-remove_passphrase:"foo"
-
--name:Completely remove the LUKS container and its contents
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"absent"
-
--name:Create a container with label
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-keyfile:"/vault/keyfile"
-label:personalLabelName
-
--name:Open the LUKS container based on label without device; name it "mycrypt"
-community.crypto.luks_device:
-label:"personalLabelName"
-state:"opened"
-name:"mycrypt"
-keyfile:"/vault/keyfile"
-
--name:Close container based on UUID
-community.crypto.luks_device:
-uuid:03ecd578-fad4-4e6c-9348-842e3e8fa340
-state:"closed"
-name:"mycrypt"
-
--name:Create a container using luks2 format
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-keyfile:"/vault/keyfile"
-type:luks2
-
--name:Create a container with key in slot 4
-community.crypto.luks_device:
-device:"/dev/loop0"
-state:"present"
-keyfile:"/vault/keyfile"
-keyslot:4
-
--name:Add a new key in slot 5
-community.crypto.luks_device:
-device:"/dev/loop0"
-keyfile:"/vault/keyfile"
-new_keyfile:"/vault/keyfile"
-new_keyslot:5
-
--name:Remove the key from slot 4 (given keyfile must not be slot 4)
-community.crypto.luks_device:
-device:"/dev/loop0"
-keyfile:"/vault/keyfile"
-remove_keyslot:4
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssh_cert.
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
identifier
-
string
-
-
Specify the key identity when signing a public key. The identifier that is logged by the server when the certificate is used for authentication.
-
-
-
-
ignore_timestamps
-
boolean
-
added in community.crypto 2.2.0
-
-
Whether the valid_from and valid_to timestamps should be ignored for idempotency checks.
-
However, the values will still be applied to a new certificate if it meets any other necessary conditions for generation/regeneration.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
options
-
list / elements=string
-
-
Specify certificate options when signing a key. The option that are valid for user certificates are:
-
clear: Clear all enabled permissions. This is useful for clearing the default set of permissions so permissions may be added individually.
-
force-command=command: Forces the execution of command instead of any shell or command specified by the user when the certificate is used for authentication.
-
no-agent-forwarding: Disable ssh-agent forwarding (permitted by default).
-
no-port-forwarding: Disable port forwarding (permitted by default).
-
no-pty: Disable PTY allocation (permitted by default).
-
no-user-rc: Disable execution of ~/.ssh/rc by sshd (permitted by default).
-
no-x11-forwarding: Disable X11 forwarding (permitted by default).
permit-user-rc: Allows execution of ~/.ssh/rc by sshd.
-
permit-x11-forwarding: Allows X11 forwarding.
-
source-address=address_list: Restrict the source addresses from which the certificate is considered valid. The address_list is a comma-separated list of one or more address/netmask pairs in CIDR format.
-
At present, no options are valid for host keys.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
path
-
path / required
-
-
Path of the file containing the certificate.
-
-
-
-
pkcs11_provider
-
string
-
added in community.crypto 1.1.0
-
-
To use a signing key that resides on a PKCS#11 token, set this to the name (or full path) of the shared library to use with the token. Usually libpkcs11.so.
-
If this is set, signing_key needs to point to a file containing the public key of the CA.
-
-
-
-
principals
-
list / elements=string
-
-
Certificates may be limited to be valid for a set of principal (user/host) names. By default, generated certificates are valid for all users or hosts.
-
-
-
-
public_key
-
path
-
-
The path to the public key that will be signed with the signing key in order to generate the certificate.
When never the task will fail if a certificate already exists at path and is unreadable otherwise a new certificate will only be generated if there is no existing certificate.
-
When fail the task will fail if a certificate already exists at path and does not match the module’s options.
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serial_number
-
integer
-
-
Specify the certificate serial number. The serial number is logged by the server when the certificate is used for authentication. The certificate serial number may be used in a KeyRevocationList. The serial number may be omitted for checks, but must be specified again for a new certificate. Note: The default value set by ssh-keygen is 0.
-
This option accepts an integer. If you want to provide serial numbers as colon-separated hex strings, such as 11:22:33, you need to convert them to an integer with community.crypto.parse_serial.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
signature_algorithm
-
string
-
added in community.crypto 1.10.0
-
-
As of OpenSSH 8.2 the SHA-1 signature algorithm for RSA keys has been disabled and ssh will refuse host certificates signed with the SHA-1 algorithm. OpenSSH 8.1 made rsa-sha2-512 the default algorithm when acting as a CA and signing certificates with a RSA key. However, for OpenSSH versions less than 8.1 the SHA-2 signature algorithms, rsa-sha2-256 or rsa-sha2-512, must be specified using this option if compatibility with newer ssh clients is required. Conversely if hosts using OpenSSH version 8.2 or greater must remain compatible with ssh clients using OpenSSH less than 7.2, then ssh-rsa can be used when generating host certificates (a corresponding change to the sshd_config to add ssh-rsa to the CASignatureAlgorithms keyword is also required).
-
Using any value for this option with a non-RSA signing_key will cause this module to fail.
-
Note: OpenSSH versions prior to 7.2 do not support SHA-2 signature algorithms for RSA keys and OpenSSH versions prior to 7.3 do not support SHA-2 signature algorithms for certificates.
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
use_agent
-
boolean
-
added in community.crypto 1.3.0
-
-
Should the ssh-keygen use a CA key residing in a ssh-agent.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
valid_at
-
string
-
-
Check if the certificate is valid at a certain point in time. If it is not the certificate will be regenerated. Time will always be interpreted as UTC. Mainly to be used with relative timespec for valid_from and / or valid_to. Note that if using relative time this module is NOT idempotent.
-
-
-
-
valid_from
-
string
-
-
The point in time the certificate is valid from. Time can be specified either as relative time or as absolute timestamp. Time will always be interpreted as UTC. Valid formats are: [+-]timespec|YYYY-MM-DD|YYYY-MM-DDTHH:MM:SS|YYYY-MM-DDHH:MM:SS|always where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h). Note that if using relative time this module is NOT idempotent.
-
The value always is only supported for OpenSSH 7.7 and greater, however, the value 1970-01-01T00:00:01 can be used with earlier versions as an equivalent expression.
-
To ignore this value during comparison with an existing certificate set ignore_timestamps=true.
The point in time the certificate is valid to. Time can be specified either as relative time or as absolute timestamp. Time will always be interpreted as UTC. Valid formats are: [+-]timespec|YYYY-MM-DD|YYYY-MM-DDTHH:MM:SS|YYYY-MM-DDHH:MM:SS|forever where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h). Note that if using relative time this module is NOT idempotent.
-
To ignore this value during comparison with an existing certificate set ignore_timestamps=true.
---
--name:Generate an OpenSSH user certificate that is valid forever and for all users
-community.crypto.openssh_cert:
-type:user
-signing_key:/path/to/private_key
-public_key:/path/to/public_key.pub
-path:/path/to/certificate
-valid_from:always
-valid_to:forever
-
-# Generate an OpenSSH host certificate that is valid for 32 weeks from now and will be regenerated
-# if it is valid for less than 2 weeks from the time the module is being run
--name:Generate an OpenSSH host certificate with valid_from, valid_to and valid_at parameters
-community.crypto.openssh_cert:
-type:host
-signing_key:/path/to/private_key
-public_key:/path/to/public_key.pub
-path:/path/to/certificate
-valid_from:+0s
-valid_to:+32w
-valid_at:+2w
-ignore_timestamps:true
-
--name:Generate an OpenSSH host certificate that is valid forever and only for example.com and examplehost
-community.crypto.openssh_cert:
-type:host
-signing_key:/path/to/private_key
-public_key:/path/to/public_key.pub
-path:/path/to/certificate
-valid_from:always
-valid_to:forever
-principals:
--example.com
--examplehost
-
--name:Generate an OpenSSH host Certificate that is valid from 21.1.2001 to 21.1.2019
-community.crypto.openssh_cert:
-type:host
-signing_key:/path/to/private_key
-public_key:/path/to/public_key.pub
-path:/path/to/certificate
-valid_from:"2001-01-21"
-valid_to:"2019-01-21"
-
--name:Generate an OpenSSH user Certificate with clear and force-command option
-community.crypto.openssh_cert:
-type:user
-signing_key:/path/to/private_key
-public_key:/path/to/public_key.pub
-path:/path/to/certificate
-valid_from:always
-valid_to:forever
-options:
--"clear"
--"force-command=/tmp/bla/foo"
-
--name:Generate an OpenSSH user certificate using a PKCS#11 token
-community.crypto.openssh_cert:
-type:user
-signing_key:/path/to/ca_public_key.pub
-pkcs11_provider:libpkcs11.so
-public_key:/path/to/public_key.pub
-path:/path/to/certificate
-valid_from:always
-valid_to:forever
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssh_keypair.
This module allows one to (re)generate OpenSSH private and public keys. It uses ssh-keygen to generate keys. One can generate rsa, dsa, rsa1, ed25519 or ecdsa private keys.
The attributes the resulting filesystem object should have.
-
To get supported flags look at the man page for chattr on the target system.
-
This string should contain the attributes in the same order as the one displayed by lsattr.
-
The = operator is assumed as default, otherwise + or - operators need to be included in the string.
-
-
-
-
backend
-
string
-
added in community.crypto 1.7.0
-
-
Selects between the cryptography library or the OpenSSH binary opensshbin.
-
auto will default to opensshbin unless the OpenSSH binary is not installed or when using passphrase.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
"opensshbin"
-
-
-
-
-
comment
-
string
-
-
Provides a new comment to the public key.
-
-
-
-
force
-
boolean
-
-
Should the key be regenerated even if it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
passphrase
-
string
-
added in community.crypto 1.7.0
-
-
Passphrase used to decrypt an existing private key or encrypt a newly generated private key.
Allows to configure in which situations the module is allowed to regenerate private keys. The module will always generate a new key if the destination file does not exist.
-
By default, the key will be regenerated when it does not match the module’s options, except when the key cannot be read or the passphrase does not match. Please note that this changed for Ansible 2.10. For Ansible 2.9, the behavior was as if full_idempotence is specified.
-
If set to never, the module will fail if the key cannot be read or the passphrase is not matching, and will never regenerate an existing key.
-
If set to fail, the module will fail if the key does not correspond to the module’s options.
-
If set to partial_idempotence, the key will be regenerated if it does not conform to the module’s options. The key is not regenerated if it cannot be read (broken file), the key is protected by an unknown passphrase, or when they key is not protected by a passphrase, but a passphrase is specified.
-
If set to full_idempotence, the key will be regenerated if it does not conform to the module’s options. This is also the case if the key cannot be read (broken file), the key is protected by an unknown passphrase, or when they key is not protected by a passphrase, but a passphrase is specified. Make sure you have a backup when using this option!
-
If set to always, the module will always regenerate the key. This is equivalent to setting force to true.
-
Note that adjusting the comment and the permissions can be changed without regeneration. Therefore, even for never, the task can result in changed.
-
Choices:
-
-
"never"
-
"fail"
-
"partial_idempotence"← (default)
-
"full_idempotence"
-
"always"
-
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
size
-
integer
-
-
Specifies the number of bits in the private key to create. For RSA keys, the minimum size is 1024 bits and the default is 4096 bits. Generally, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2. For ECDSA keys, size determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. Attempting to use bit lengths other than these three values for ECDSA keys will cause this module to fail. Ed25519 keys have a fixed length and the size will be ignored.
-
-
-
-
state
-
string
-
-
Whether the private and public keys should exist or not, taking action if the state is different from what is stated.
-
Choices:
-
-
"present"← (default)
-
"absent"
-
-
-
-
-
type
-
string
-
-
The algorithm used to generate the SSH private key. rsa1 is for protocol version 1. rsa1 is deprecated and may not be supported by every version of ssh-keygen.
-
Choices:
-
-
"rsa"← (default)
-
"dsa"
-
"rsa1"
-
"ecdsa"
-
"ed25519"
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
---
--name:Generate an OpenSSH keypair with the default values (4096 bits, rsa)
-community.crypto.openssh_keypair:
-path:/tmp/id_ssh_rsa
-
--name:Generate an OpenSSH keypair with the default values (4096 bits, rsa) and encrypted private key
-community.crypto.openssh_keypair:
-path:/tmp/id_ssh_rsa
-passphrase:super_secret_password
-
--name:Generate an OpenSSH rsa keypair with a different size (2048 bits)
-community.crypto.openssh_keypair:
-path:/tmp/id_ssh_rsa
-size:2048
-
--name:Force regenerate an OpenSSH keypair if it already exists
-community.crypto.openssh_keypair:
-path:/tmp/id_ssh_rsa
-force:true
-
--name:Regenerate SSH keypair only if format or options mismatch
-community.crypto.openssh_keypair:
-path:/home/devops/.ssh/id_ed25519
-type:ed25519
-regenerate:full_idempotence
-private_key_format:ssh
-
--name:Generate an OpenSSH keypair with a different algorithm (dsa)
-community.crypto.openssh_keypair:
-path:/tmp/id_ssh_dsa
-type:dsa
-
This module has been removed
-in version 2.0.0 of community.crypto.
-The ‘community.crypto.openssl_certificate_info’ module has been renamed to ‘community.crypto.x509_certificate_info’
This module has been removed
-in version 2.0.0 of community.crypto.
-The ‘community.crypto.openssl_certificate’ module has been renamed to ‘community.crypto.x509_certificate’
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this filter plugin,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_csr_info.
This describes keyword parameters of the filter. These are the values key1=value1, key2=value2 and so on in the following
-example: input|community.crypto.openssl_csr_info(key1=value1,key2=value2,...)
-
-
-
Parameter
-
Comments
-
-
-
-
-
name_encoding
-
string
-
-
How to encode names (DNS names, URIs, email addresses) in return values.
-
ignore will use the encoding returned by the backend.
-
idna will convert all labels of domain names to IDNA encoding. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 encoding fails.
-
unicode will convert all labels of domain names to Unicode. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 decoding fails.
Is none if the AuthorityKeyIdentifier extension is not present.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:12345
-
-
-
-
authority_key_identifier
-
string
-
-
The CSR’s authority key identifier.
-
The identifier is returned in hexadecimal, with : used to separate bytes.
-
Is none if the AuthorityKeyIdentifier extension is not present.
The Base64 encoded value (in DER format) of the extension.
-
Note that depending on the cryptography version used, it is not possible to extract the ASN.1 content of the extension, but only to provide the re-encoded content of the extension in case it was parsed by cryptography. This should usually result in exactly the same value, except if the original extension value was malformed.
-
Returned: success
-
Sample:"MAMCAQU="
-
-
-
-
key_usage
-
string
-
-
Entries in the key_usage extension, or none if extension is not present.
-
Returned: success
-
Sample:"['KeyAgreement','DataEncipherment']"
-
-
-
-
key_usage_critical
-
boolean
-
-
Whether the key_usage extension is critical.
-
Returned: success
-
-
-
-
name_constraints_critical
-
boolean
-
-
Whether the name_constraints extension is critical.
-
Is none if extension is not present.
-
Returned: success
-
-
-
-
name_constraints_excluded
-
list / elements=string
-
-
List of excluded subtrees the CA cannot sign certificates for.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_csr_info.
Is none if the AuthorityKeyIdentifier extension is not present.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:12345
-
-
-
-
authority_key_identifier
-
string
-
-
The CSR’s authority key identifier.
-
The identifier is returned in hexadecimal, with : used to separate bytes.
-
Is none if the AuthorityKeyIdentifier extension is not present.
The Base64 encoded value (in DER format) of the extension.
-
Note that depending on the cryptography version used, it is not possible to extract the ASN.1 content of the extension, but only to provide the re-encoded content of the extension in case it was parsed by cryptography. This should usually result in exactly the same value, except if the original extension value was malformed.
-
Returned: success
-
Sample:"MAMCAQU="
-
-
-
-
key_usage
-
string
-
-
Entries in the key_usage extension, or none if extension is not present.
-
Returned: success
-
Sample:"['KeyAgreement','DataEncipherment']"
-
-
-
-
key_usage_critical
-
boolean
-
-
Whether the key_usage extension is critical.
-
Returned: success
-
-
-
-
name_constraints_critical
-
boolean
-
added in community.crypto 1.1.0
-
-
Whether the name_constraints extension is critical.
-
Is none if extension is not present.
-
Returned: success
-
-
-
-
name_constraints_excluded
-
list / elements=string
-
added in community.crypto 1.1.0
-
-
List of excluded subtrees the CA cannot sign certificates for.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_csr.
Please note that the module regenerates an existing CSR if it does not match the module’s options, or if it seems to be corrupt. If you are concerned that this could overwrite your existing CSR, consider using the backup option.
-
This module allows one to (re)generate OpenSSL certificate signing requests.
-
This module supports the subjectAltName, keyUsage, extendedKeyUsage, basicConstraints and OCSP Must Staple extensions.
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
-
Note that this is only supported if the cryptography backend is used!
Note that this is only supported if the cryptography backend is used!
-
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
This option accepts an integer. If you want to provide serial numbers as colon-separated hex strings, such as 11:22:33, you need to convert them to an integer with community.crypto.parse_serial.
-
-
-
-
authority_key_identifier
-
string
-
-
The authority key identifier as a hex string, where two bytes are separated by colons.
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
-
Note that this is only supported if the cryptography backend is used!
Create a backup file including a timestamp so you can get the original CSR back if you overwrote it with a new one by accident.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
basic_constraints
-
aliases: basicConstraints
-
list / elements=string
-
-
Indicates basic constraints, such as if the certificate is a CA.
-
-
-
-
-
basic_constraints_critical
-
aliases: basicConstraints_critical
-
boolean
-
-
Should the basicConstraints extension be considered as critical.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
-
common_name
-
aliases: CN, commonName
-
string
-
-
The commonName field of the certificate signing request subject.
-
-
-
-
-
-
country_name
-
aliases: C, countryName
-
string
-
-
The countryName field of the certificate signing request subject.
-
-
-
-
create_subject_key_identifier
-
boolean
-
-
Create the Subject Key Identifier from the public key.
-
Please note that commercial CAs can ignore the value, respectively use a value of their own choice instead. Specifying this option is mostly useful for self-signed certificates or for own CAs.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
crl_distribution_points
-
list / elements=dictionary
-
added in community.crypto 1.4.0
-
-
Allows to specify one or multiple CRL distribution points.
Should the extkeyUsage extension be considered as critical.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
force
-
boolean
-
-
Should the certificate signing request be forced regenerated by this ansible module.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
-
key_usage
-
aliases: keyUsage
-
list / elements=string
-
-
This defines the purpose (for example encipherment, signature, certificate signing) of the key contained in the certificate.
-
-
-
-
-
key_usage_critical
-
aliases: keyUsage_critical
-
boolean
-
-
Should the keyUsage extension be considered as critical.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
-
locality_name
-
aliases: L, localityName
-
string
-
-
The localityName field of the certificate signing request subject.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
name_constraints_critical
-
boolean
-
added in community.crypto 1.1.0
-
-
Should the Name Constraints extension be considered as critical.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
name_constraints_excluded
-
list / elements=string
-
added in community.crypto 1.1.0
-
-
For CA certificates, this specifies a list of identifiers which describe subtrees of names that this CA is not allowed to issue certificates for.
-
Values must be prefixed by their options. (That is, email, URI, DNS, RID, IP, dirName, otherName, and the ones specific to your CA).
-
-
-
-
name_constraints_permitted
-
list / elements=string
-
added in community.crypto 1.1.0
-
-
For CA certificates, this specifies a list of identifiers which describe subtrees of names that this CA is allowed to issue certificates for.
-
Values must be prefixed by their options. (That is, email, URI, DNS, RID, IP, dirName, otherName, and the ones specific to your CA).
Should the OCSP Must Staple extension be considered as critical.
-
Note that according to the RFC, this extension should not be marked as critical, as old clients not knowing about OCSP Must Staple are required to reject such certificates (see https://tools.ietf.org/html/rfc7633#section-4).
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
-
organization_name
-
aliases: O, organizationName
-
string
-
-
The organizationName field of the certificate signing request subject.
-
-
-
-
-
-
organizational_unit_name
-
aliases: OU, organizationalUnitName
-
string
-
-
The organizationalUnitName field of the certificate signing request subject.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
path
-
path / required
-
-
The name of the file into which the generated OpenSSL certificate signing request will be written.
-
-
-
-
privatekey_content
-
string
-
added in community.crypto 1.0.0
-
-
The content of the private key to use when signing the certificate signing request.
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
Note that this is only supported if the cryptography backend is used!
-
-
-
-
subject_ordered
-
list / elements=dictionary
-
added in community.crypto 2.0.0
-
-
A list of dictionaries, where every dictionary must contain one key/value pair. This key/value pair will be present in the subject name field of the certificate signing request.
-
If you want to specify more than one value with the same key in a row, you can use a list as value.
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
use_common_name_for_san
-
aliases: useCommonNameForSAN
-
boolean
-
-
If set to true, the module will fill the common name in for subject_alt_name with DNS: prefix if no SAN is specified.
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
version
-
integer
-
-
The version of the certificate signing request.
-
The only allowed value according to RFC 2986 is 1.
-
This option no longer accepts unsupported values since community.crypto 2.0.0.
If the certificate signing request already exists it will be checked whether subjectAltName, keyUsage, extendedKeyUsage and basicConstraints only contain the requested values, whether OCSP Must Staple is as requested, and if the request was signed by the given private key.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_csr_pipe.
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
-
Note that this is only supported if the cryptography backend is used!
Note that this is only supported if the cryptography backend is used!
-
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
This option accepts an integer. If you want to provide serial numbers as colon-separated hex strings, such as 11:22:33, you need to convert them to an integer with community.crypto.parse_serial.
-
-
-
-
authority_key_identifier
-
string
-
-
The authority key identifier as a hex string, where two bytes are separated by colons.
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
-
Note that this is only supported if the cryptography backend is used!
Indicates basic constraints, such as if the certificate is a CA.
-
-
-
-
-
basic_constraints_critical
-
aliases: basicConstraints_critical
-
boolean
-
-
Should the basicConstraints extension be considered as critical.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
-
common_name
-
aliases: CN, commonName
-
string
-
-
The commonName field of the certificate signing request subject.
-
-
-
-
content
-
string
-
-
The existing CSR.
-
-
-
-
-
-
country_name
-
aliases: C, countryName
-
string
-
-
The countryName field of the certificate signing request subject.
-
-
-
-
create_subject_key_identifier
-
boolean
-
-
Create the Subject Key Identifier from the public key.
-
Please note that commercial CAs can ignore the value, respectively use a value of their own choice instead. Specifying this option is mostly useful for self-signed certificates or for own CAs.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
crl_distribution_points
-
list / elements=dictionary
-
added in community.crypto 1.4.0
-
-
Allows to specify one or multiple CRL distribution points.
Should the OCSP Must Staple extension be considered as critical.
-
Note that according to the RFC, this extension should not be marked as critical, as old clients not knowing about OCSP Must Staple are required to reject such certificates (see https://tools.ietf.org/html/rfc7633#section-4).
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
-
organization_name
-
aliases: O, organizationName
-
string
-
-
The organizationName field of the certificate signing request subject.
-
-
-
-
-
-
organizational_unit_name
-
aliases: OU, organizationalUnitName
-
string
-
-
The organizationalUnitName field of the certificate signing request subject.
-
-
-
-
privatekey_content
-
string
-
-
The content of the private key to use when signing the certificate signing request.
Please note that commercial CAs ignore this value, respectively use a value of their own choice. Specifying this option is mostly useful for self-signed certificates or for own CAs.
Note that this is only supported if the cryptography backend is used!
-
-
-
-
subject_ordered
-
list / elements=dictionary
-
added in community.crypto 2.0.0
-
-
A list of dictionaries, where every dictionary must contain one key/value pair. This key/value pair will be present in the subject name field of the certificate signing request.
-
If you want to specify more than one value with the same key in a row, you can use a list as value.
Currently in check mode, private keys will not be (re-)generated, only the changed status is set. This will change in community.crypto 3.0.0.
-
From community.crypto 3.0.0 on, the module will ignore check mode and always behave as if check mode is not active. If you think this breaks your use-case of this module, please create an issue in the community.crypto repository.
-
-
Can run in check_mode and return changed status prediction without modifying target.
-
-
-
-
diff_mode
-
-
Support: full
-
-
Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode.
-
-
-
-
idempotent
-
-
Support: full
-
-
When run twice in a row outside check mode, with the same arguments, the second invocation indicates no change.
-
This assumes that the system controlled/queried by the module has not changed in a relevant way.
If the certificate signing request already exists it will be checked whether subjectAltName, keyUsage, extendedKeyUsage and basicConstraints only contain the requested values, whether OCSP Must Staple is as requested, and if the request was signed by the given private key.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_dhparam.
This module allows one to (re)generate OpenSSL DH-params.
-
This module uses file common arguments to specify generated file permissions.
-
Please note that the module regenerates existing DH params if they do not match the module’s options. If you are concerned that this could overwrite your existing DH params, consider using the backup option.
-
The module can use the cryptography Python library, or the openssl executable. By default, it tries to detect which one is available. This can be overridden with the select_crypto_backend option.
The attributes the resulting filesystem object should have.
-
To get supported flags look at the man page for chattr on the target system.
-
This string should contain the attributes in the same order as the one displayed by lsattr.
-
The = operator is assumed as default, otherwise + or - operators need to be included in the string.
-
-
-
-
backup
-
boolean
-
-
Create a backup file including a timestamp so you can get the original DH params back if you overwrote them with new ones by accident.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
force
-
boolean
-
-
Should the parameters be regenerated even it it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
path
-
path / required
-
-
Name of the file in which the generated parameters will be saved.
-
-
-
-
return_content
-
boolean
-
added in community.crypto 1.0.0
-
-
If set to true, will return the (current or generated) DH parameter’s content as dhparams.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_crypto_backend
-
string
-
added in community.crypto 1.0.0
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available, and falls back to openssl.
-
If set to openssl, will try to use the OpenSSL openssl executable.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
"openssl"
-
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
size
-
integer
-
-
Size (in bits) of the generated DH-params.
-
Default:4096
-
-
-
-
state
-
string
-
-
Whether the parameters should exist or not, taking action if the state is different from what is stated.
-
Choices:
-
-
"absent"
-
"present"← (default)
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
---
--name:Generate Diffie-Hellman parameters with the default size (4096 bits)
-community.crypto.openssl_dhparam:
-path:/etc/ssl/dhparams.pem
-
--name:Generate DH Parameters with a different size (2048 bits)
-community.crypto.openssl_dhparam:
-path:/etc/ssl/dhparams.pem
-size:2048
-
--name:Force regenerate an DH parameters if they already exist
-community.crypto.openssl_dhparam:
-path:/etc/ssl/dhparams.pem
-force:true
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_pkcs12.
The module can use the cryptography Python library, or the pyOpenSSL Python library. By default, it tries to detect which one is available, assuming none of the iter_size and maciter_size options are used. This can be overridden with the select_crypto_backend option.
auto uses the default of the selected backend. For cryptography, this is what the cryptography library’s specific version considers the best available encryption.
-
compatibility2022 uses compatibility settings for older software in 2022. This is only supported by the cryptography backend if cryptography >= 38.0.0 is available.
-
Note that this option is not used for idempotency.
-
Choices:
-
-
"auto"← (default)
-
"compatibility2022"
-
-
-
-
-
force
-
boolean
-
-
Should the file be regenerated even if it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
-
friendly_name
-
aliases: name
-
string
-
-
Specifies the friendly name for the certificate and private key.
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
When using it, the default is 2048 for pyopenssl and 50000 for cryptography.
-
-
-
-
maciter_size
-
integer
-
-
Number of times to repeat the MAC step.
-
This is not considered during idempotency checks.
-
This is only used by the pyopenssl backend. When using it, the default is 1.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
-
other_certificates
-
aliases: ca_certificates
-
list / elements=path
-
-
List of other certificates to include. Pre Ansible 2.8 this parameter was called ca_certificates.
-
Assumes there is one PEM-encoded certificate per file. If a file contains multiple PEM certificates, set other_certificates_parse_all to true.
If set to true, assumes that the files mentioned in other_certificates/other_certificates_content can contain more than one certificate per file/item (or even none per file/item).
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
passphrase
-
string
-
-
The PKCS#12 password.
-
Note: PKCS12 encryption is typically not secure and should not be used as a security mechanism. If you need to store or send a PKCS12 file safely, you should additionally encrypt it with something else. (Source).
If set to true, will return the (current or generated) PKCS#12’s content as pkcs12.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_crypto_backend
-
string
-
added in community.crypto 1.7.0
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available, and falls back to pyopenssl. If iter_size is used together with encryption_level is not compatibility2022, or if maciter_size is used, auto will always result in pyopenssl to be chosen for backwards compatibility.
-
If set to pyopenssl, will try to use the pyOpenSSL library.
-
If set to cryptography, will try to use the cryptography library.
-
Note that the pyopenssl backend is deprecated and will be removed from community.crypto 3.0.0.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
"pyopenssl"
-
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
src
-
path
-
-
PKCS#12 file path to parse.
-
-
-
-
state
-
string
-
-
Whether the file should exist or not. All parameters except path are ignored when state is absent.
-
Choices:
-
-
"absent"
-
"present"← (default)
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
---
--name:Generate PKCS#12 file
-community.crypto.openssl_pkcs12:
-action:export
-path:/opt/certs/ansible.p12
-friendly_name:raclette
-privatekey_path:/opt/certs/keys/key.pem
-certificate_path:/opt/certs/cert.pem
-other_certificates:/opt/certs/ca.pem
-# Note that if /opt/certs/ca.pem contains multiple certificates,
-# only the first one will be used. See the other_certificates_parse_all
-# option for changing this behavior.
-state:present
-
--name:Generate PKCS#12 file
-community.crypto.openssl_pkcs12:
-action:export
-path:/opt/certs/ansible.p12
-friendly_name:raclette
-privatekey_content:'{{private_key_contents}}'
-certificate_path:/opt/certs/cert.pem
-other_certificates_parse_all:true
-other_certificates:
--/opt/certs/ca_bundle.pem
-# Since we set other_certificates_parse_all to true, all
-# certificates in the CA bundle are included and not just
-# the first one.
--/opt/certs/intermediate.pem
-# In case this file has multiple certificates in it,
-# all will be included as well.
-state:present
-
--name:Change PKCS#12 file permission
-community.crypto.openssl_pkcs12:
-action:export
-path:/opt/certs/ansible.p12
-friendly_name:raclette
-privatekey_path:/opt/certs/keys/key.pem
-certificate_path:/opt/certs/cert.pem
-other_certificates:/opt/certs/ca.pem
-state:present
-mode:'0600'
-
--name:Regen PKCS#12 file
-community.crypto.openssl_pkcs12:
-action:export
-src:/opt/certs/ansible.p12
-path:/opt/certs/ansible.p12
-friendly_name:raclette
-privatekey_path:/opt/certs/keys/key.pem
-certificate_path:/opt/certs/cert.pem
-other_certificates:/opt/certs/ca.pem
-state:present
-mode:'0600'
-force:true
-
--name:Dump/Parse PKCS#12 file
-community.crypto.openssl_pkcs12:
-action:parse
-src:/opt/certs/ansible.p12
-path:/opt/certs/ansible.pem
-state:present
-
--name:Remove PKCS#12 file
-community.crypto.openssl_pkcs12:
-path:/opt/certs/ansible.p12
-state:absent
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_privatekey_convert.
The attributes the resulting filesystem object should have.
-
To get supported flags look at the man page for chattr on the target system.
-
This string should contain the attributes in the same order as the one displayed by lsattr.
-
The = operator is assumed as default, otherwise + or - operators need to be included in the string.
-
-
-
-
backup
-
boolean
-
-
Create a backup file including a timestamp so you can get the original private key back if you overwrote it with a new one by accident.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
dest_passphrase
-
string
-
-
The passphrase for the private key to store.
-
-
-
-
dest_path
-
path / required
-
-
Name of the file in which the generated TLS/SSL private key will be written. It will have 0600 mode if mode is not explicitly set.
-
-
-
-
format
-
string / required
-
-
Determines which format the destination private key should be written in.
-
Please note that not every key can be exported in any format, and that not every format supports encryption.
-
Choices:
-
-
"pkcs1"
-
"pkcs8"
-
"raw"
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
src_content
-
string
-
-
The content of the file containing the OpenSSL private key to convert.
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
---
--name:Convert private key to PKCS8 format with passphrase
-community.crypto.openssl_privatekey_convert:
-src_path:/etc/ssl/private/ansible.com.pem
-dest_path:/etc/ssl/private/ansible.com.key
-dest_passphrase:'{{private_key_passphrase}}'
-format:pkcs8
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this filter plugin,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_privatekey_info.
This describes keyword parameters of the filter. These are the values key1=value1, key2=value2 and so on in the following
-example: input|community.crypto.openssl_privatekey_info(key1=value1,key2=value2,...)
-
-
-
Parameter
-
Comments
-
-
-
-
-
name_encoding
-
string
-
-
How to encode names (DNS names, URIs, email addresses) in return values.
-
ignore will use the encoding returned by the backend.
-
idna will convert all labels of domain names to IDNA encoding. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 encoding fails.
-
unicode will convert all labels of domain names to Unicode. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 decoding fails.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_privatekey_info.
This module allows one to query information on OpenSSL private keys.
-
In case the key consistency checks fail, the module will fail as this indicates a faked private key. In this case, all return variables are still returned. Note that key consistency checks are not available all key types; if none is available, none is returned for key_is_consistent.
-
It uses the cryptography python library to interact with OpenSSL.
In community.crypto < 2.0.0, consistency was always checked.
-
Since community.crypto 2.0.0, the consistency check has been disabled by default to avoid private key material to be transported around and computed with, and only do so when requested explicitly. This can potentially prevent side-channel attacks.
-
Note that consistency checks only work for certain key types, and might depend on the version of the cryptography library. For example, with cryptography 42.0.0 and newer consistency of RSA keys can no longer be checked.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
content
-
string
-
added in community.crypto 1.0.0
-
-
Content of the private key file.
-
Either path or content must be specified, but not both.
-
-
-
-
passphrase
-
string
-
-
The passphrase for the private key.
-
-
-
-
path
-
path
-
-
Remote absolute path where the private key file is loaded from.
-
-
-
-
return_private_key_data
-
boolean
-
-
Whether to return private key data.
-
Only set this to true when you want private information about this key to leave the remote machine.
-
WARNING: you have to make sure that private key data is not accidentally logged!
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
---
--name:Generate an OpenSSL private key with the default values (4096 bits, RSA)
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-
--name:Get information on generated key
-community.crypto.openssl_privatekey_info:
-path:/etc/ssl/private/ansible.com.pem
-register:result
-
--name:Dump information
-ansible.builtin.debug:
-var:result
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_privatekey.
Please note that the module regenerates private keys if they do not match the module’s options. In particular, if you provide another passphrase (or specify none), change the keysize, and so on, the private key will be regenerated. If you are concerned that this could overwrite your private key, consider using the backup option.
-
The default mode for the private key file will be 0600 if mode is not explicitly set.
-
This module allows one to (re)generate OpenSSL private keys.
Please note that all curves except secp224r1, secp256k1, secp256r1, secp384r1, and secp521r1 are discouraged for new private keys.
-
Choices:
-
-
"secp224r1"
-
"secp256k1"
-
"secp256r1"
-
"secp384r1"
-
"secp521r1"
-
"secp192r1"
-
"brainpoolP256r1"
-
"brainpoolP384r1"
-
"brainpoolP512r1"
-
"sect163k1"
-
"sect163r2"
-
"sect233k1"
-
"sect233r1"
-
"sect283k1"
-
"sect283r1"
-
"sect409k1"
-
"sect409r1"
-
"sect571k1"
-
"sect571r1"
-
-
-
-
-
force
-
boolean
-
-
Should the key be regenerated even if it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
format
-
string
-
added in community.crypto 1.0.0
-
-
Determines which format the private key is written in. By default, PKCS1 (traditional OpenSSL format) is used for all keys which support it. Please note that not every key can be exported in any format.
-
The value auto selects a format based on the key format. The value auto_ignore does the same, but for existing private key files, it will not force a regenerate when its format is not the automatically selected one for generation.
-
Note that if the format for an existing private key mismatches, the key is regenerated by default. To change this behavior, use the format_mismatch option.
-
Choices:
-
-
"pkcs1"
-
"pkcs8"
-
"raw"
-
"auto"
-
"auto_ignore"← (default)
-
-
-
-
-
format_mismatch
-
string
-
added in community.crypto 1.0.0
-
-
Determines behavior of the module if the format of a private key does not match the expected format, but all other parameters are as expected.
-
If set to regenerate (default), generates a new private key.
-
If set to convert, the key will be converted to the new format instead.
-
Only supported by the cryptography backend.
-
Choices:
-
-
"regenerate"← (default)
-
"convert"
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
passphrase
-
string
-
-
The passphrase for the private key.
-
-
-
-
path
-
path / required
-
-
Name of the file in which the generated TLS/SSL private key will be written. It will have 0600 mode if mode is not explicitly set.
-
-
-
-
regenerate
-
string
-
added in community.crypto 1.0.0
-
-
Allows to configure in which situations the module is allowed to regenerate private keys. The module will always generate a new key if the destination file does not exist.
-
By default, the key will be regenerated when it does not match the module’s options, except when the key cannot be read or the passphrase does not match. Please note that this changed for Ansible 2.10. For Ansible 2.9, the behavior was as if full_idempotence is specified.
-
If set to never, the module will fail if the key cannot be read or the passphrase is not matching, and will never regenerate an existing key.
-
If set to fail, the module will fail if the key does not correspond to the module’s options.
-
If set to partial_idempotence, the key will be regenerated if it does not conform to the module’s options. The key is not regenerated if it cannot be read (broken file), the key is protected by an unknown passphrase, or when they key is not protected by a passphrase, but a passphrase is specified.
-
If set to full_idempotence, the key will be regenerated if it does not conform to the module’s options. This is also the case if the key cannot be read (broken file), the key is protected by an unknown passphrase, or when they key is not protected by a passphrase, but a passphrase is specified. Make sure you have a backup when using this option!
-
If set to always, the module will always regenerate the key. This is equivalent to setting force to true.
-
Note that if format_mismatch is set to convert and everything matches except the format, the key will always be converted, except if regenerate is set to always.
-
Choices:
-
-
"never"
-
"fail"
-
"partial_idempotence"
-
"full_idempotence"← (default)
-
"always"
-
-
-
-
-
return_content
-
boolean
-
added in community.crypto 1.0.0
-
-
If set to true, will return the (current or generated) private key’s content as privatekey.
-
Note that especially if the private key is not encrypted, you have to make sure that the returned value is treated appropriately and not accidentally written to logs, and so on! Use with care!
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
size
-
integer
-
-
Size (in bits) of the TLS/SSL key to generate.
-
Default:4096
-
-
-
-
state
-
string
-
-
Whether the private key should exist or not, taking action if the state is different from what is stated.
-
Choices:
-
-
"absent"
-
"present"← (default)
-
-
-
-
-
type
-
string
-
-
The algorithm used to generate the TLS/SSL private key.
-
Note that ECC, X25519, X448, Ed25519, and Ed448 require the cryptography backend. X25519 needs cryptography 2.5 or newer, while X448, Ed25519, and Ed448 require cryptography 2.6 or newer. For ECC, the minimal cryptography version required depends on the curve option.
-
Choices:
-
-
"DSA"
-
"ECC"
-
"Ed25519"
-
"Ed448"
-
"RSA"← (default)
-
"X25519"
-
"X448"
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
---
--name:Generate an OpenSSL private key with the default values (4096 bits, RSA)
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-
--name:Generate an OpenSSL private key with the default values (4096 bits, RSA) and a passphrase
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-passphrase:ansible
-cipher:auto
-
--name:Generate an OpenSSL private key with a different size (2048 bits)
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-size:2048
-
--name:Force regenerate an OpenSSL private key if it already exists
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-force:true
-
--name:Generate an OpenSSL private key with a different algorithm (DSA)
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-type:DSA
-
--name:Generate an OpenSSL private key with elliptic curve cryptography (ECC)
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-type:ECC
-curve:secp256r1
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_privatekey_pipe.
Please note that all curves except secp224r1, secp256k1, secp256r1, secp384r1, and secp521r1 are discouraged for new private keys.
-
Choices:
-
-
"secp224r1"
-
"secp256k1"
-
"secp256r1"
-
"secp384r1"
-
"secp521r1"
-
"secp192r1"
-
"brainpoolP256r1"
-
"brainpoolP384r1"
-
"brainpoolP512r1"
-
"sect163k1"
-
"sect163r2"
-
"sect233k1"
-
"sect233r1"
-
"sect283k1"
-
"sect283r1"
-
"sect409k1"
-
"sect409r1"
-
"sect571k1"
-
"sect571r1"
-
-
-
-
-
format
-
string
-
-
Determines which format the private key is written in. By default, PKCS1 (traditional OpenSSL format) is used for all keys which support it. Please note that not every key can be exported in any format.
-
The value auto selects a format based on the key format. The value auto_ignore does the same, but for existing private key files, it will not force a regenerate when its format is not the automatically selected one for generation.
-
Note that if the format for an existing private key mismatches, the key is regenerated by default. To change this behavior, use the format_mismatch option.
-
Choices:
-
-
"pkcs1"
-
"pkcs8"
-
"raw"
-
"auto"
-
"auto_ignore"← (default)
-
-
-
-
-
format_mismatch
-
string
-
-
Determines behavior of the module if the format of a private key does not match the expected format, but all other parameters are as expected.
-
If set to regenerate (default), generates a new private key.
-
If set to convert, the key will be converted to the new format instead.
-
Only supported by the cryptography backend.
-
Choices:
-
-
"regenerate"← (default)
-
"convert"
-
-
-
-
-
passphrase
-
string
-
-
The passphrase for the private key.
-
-
-
-
regenerate
-
string
-
-
Allows to configure in which situations the module is allowed to regenerate private keys. The module will always generate a new key if the destination file does not exist.
-
By default, the key will be regenerated when it does not match the module’s options, except when the key cannot be read or the passphrase does not match. Please note that this changed for Ansible 2.10. For Ansible 2.9, the behavior was as if full_idempotence is specified.
-
If set to never, the module will fail if the key cannot be read or the passphrase is not matching, and will never regenerate an existing key.
-
If set to fail, the module will fail if the key does not correspond to the module’s options.
-
If set to partial_idempotence, the key will be regenerated if it does not conform to the module’s options. The key is not regenerated if it cannot be read (broken file), the key is protected by an unknown passphrase, or when they key is not protected by a passphrase, but a passphrase is specified.
-
If set to full_idempotence, the key will be regenerated if it does not conform to the module’s options. This is also the case if the key cannot be read (broken file), the key is protected by an unknown passphrase, or when they key is not protected by a passphrase, but a passphrase is specified. Make sure you have a backup when using this option!
-
If set to always, the module will always regenerate the key.
-
Note that if format_mismatch is set to convert and everything matches except the format, the key will always be converted, except if regenerate is set to always.
-
Choices:
-
-
"never"
-
"fail"
-
"partial_idempotence"
-
"full_idempotence"← (default)
-
"always"
-
-
-
-
-
return_current_key
-
boolean
-
-
Set to true to return the current private key when the module did not generate a new one.
-
Note that in case of check mode, when this option is not set to true, the module always returns the current key (if it was provided) and Ansible will replace it by VALUE_SPECIFIED_IN_NO_LOG_PARAMETER.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
size
-
integer
-
-
Size (in bits) of the TLS/SSL key to generate.
-
Default:4096
-
-
-
-
type
-
string
-
-
The algorithm used to generate the TLS/SSL private key.
-
Note that ECC, X25519, X448, Ed25519, and Ed448 require the cryptography backend. X25519 needs cryptography 2.5 or newer, while X448, Ed25519, and Ed448 require cryptography 2.6 or newer. For ECC, the minimal cryptography version required depends on the curve option.
Indicates this has a corresponding action plugin so some parts of the options can be executed on the controller.
-
-
-
-
async
-
-
Support: none
-
This action runs completely on the controller.
-
-
Supports being used with the async keyword.
-
-
-
-
check_mode
-
-
Support: full
-
Currently in check mode, private keys will not be (re-)generated, only the changed status is set. This will change in community.crypto 3.0.0.
-
From community.crypto 3.0.0 on, the module will ignore check mode and always behave as if check mode is not active. If you think this breaks your use-case of this module, please create an issue in the community.crypto repository.
-
-
Can run in check_mode and return changed status prediction without modifying target.
-
-
-
-
diff_mode
-
-
Support: full
-
-
Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode.
---
--name:Generate an OpenSSL private key with the default values (4096 bits, RSA)
-community.crypto.openssl_privatekey_pipe:
-register:output
-no_log:true# make sure that private key data is not accidentally revealed in logs!
--name:Show generated key
-ansible.builtin.debug:
-msg:"{{output.privatekey}}"
-# DO NOT OUTPUT KEY MATERIAL TO CONSOLE OR LOGS IN PRODUCTION!
-
-
-# The following example needs CNCF SOPS (https://github.com/getsops/sops) set up and
-# the community.sops collection installed. See also
-# https://docs.ansible.com/ansible/latest/collections/community/sops/docsite/guide.html
-
--name:Generate or update a CNCF SOPS encrypted key
-block:
--name:Update SOPS-encrypted key with the community.sops collection
-community.crypto.openssl_privatekey_pipe:
-content:"{{lookup('community.sops.sops','private_key.pem.sops')}}"
-size:2048
-register:output
-no_log:true# make sure that private key data is not accidentally revealed in logs!
-
--name:Update encrypted key when openssl_privatekey_pipe reported a change
-community.sops.sops_encrypt:
-path:private_key.pem.sops
-content_text:"{{output.privatekey}}"
-when:output is changed
-always:
--name:Make sure that output (which contains the private key) is overwritten
-ansible.builtin.set_fact:
-output:''
-
---
--name:Show the type of a public key
-ansible.builtin.debug:
-msg:>-
-{{
- (
- lookup('ansible.builtin.file','/path/to/public-key.pem')
- |community.crypto.openssl_publickey_info
- ).type
- }}
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_publickey_info.
---
--name:Generate an OpenSSL private key with the default values (4096 bits, RSA)
-community.crypto.openssl_privatekey:
-path:/etc/ssl/private/ansible.com.pem
-
--name:Create public key from private key
-community.crypto.openssl_publickey:
-privatekey_path:/etc/ssl/private/ansible.com.pem
-path:/etc/ssl/ansible.com.pub
-
--name:Get information on public key
-community.crypto.openssl_publickey_info:
-path:/etc/ssl/ansible.com.pub
-register:result
-
--name:Dump information
-ansible.builtin.debug:
-var:result
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_publickey.
This module allows one to (re)generate public keys from their private keys.
-
Public keys are generated in PEM or OpenSSH format. Private keys must be OpenSSL PEM keys. OpenSSH private keys are not supported, use the community.crypto.openssh_keypair module to manage these.
The attributes the resulting filesystem object should have.
-
To get supported flags look at the man page for chattr on the target system.
-
This string should contain the attributes in the same order as the one displayed by lsattr.
-
The = operator is assumed as default, otherwise + or - operators need to be included in the string.
-
-
-
-
backup
-
boolean
-
-
Create a backup file including a timestamp so you can get the original public key back if you overwrote it with a different one by accident.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
force
-
boolean
-
-
Should the key be regenerated even it it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
format
-
string
-
-
The format of the public key.
-
Choices:
-
-
"OpenSSH"
-
"PEM"← (default)
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
path
-
path / required
-
-
Name of the file in which the generated TLS/SSL public key will be written.
-
-
-
-
privatekey_content
-
string
-
added in community.crypto 1.0.0
-
-
The content of the TLS/SSL private key from which to generate the public key.
If set to true, will return the (current or generated) public key’s content as publickey.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
state
-
string
-
-
Whether the public key should exist or not, taking action if the state is different from what is stated.
-
Choices:
-
-
"absent"
-
"present"← (default)
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
---
--name:Generate an OpenSSL public key in PEM format
-community.crypto.openssl_publickey:
-path:/etc/ssl/public/ansible.com.pem
-privatekey_path:/etc/ssl/private/ansible.com.pem
-
--name:Generate an OpenSSL public key in PEM format from an inline key
-community.crypto.openssl_publickey:
-path:/etc/ssl/public/ansible.com.pem
-privatekey_content:"{{private_key_content}}"
-
--name:Generate an OpenSSL public key in OpenSSH v2 format
-community.crypto.openssl_publickey:
-path:/etc/ssl/public/ansible.com.pem
-privatekey_path:/etc/ssl/private/ansible.com.pem
-format:OpenSSH
-
--name:Generate an OpenSSL public key with a passphrase protected private key
-community.crypto.openssl_publickey:
-path:/etc/ssl/public/ansible.com.pem
-privatekey_path:/etc/ssl/private/ansible.com.pem
-privatekey_passphrase:ansible
-
--name:Force regenerate an OpenSSL public key if it already exists
-community.crypto.openssl_publickey:
-path:/etc/ssl/public/ansible.com.pem
-privatekey_path:/etc/ssl/private/ansible.com.pem
-force:true
-
--name:Remove an OpenSSL public key
-community.crypto.openssl_publickey:
-path:/etc/ssl/public/ansible.com.pem
-state:absent
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_signature_info.
When using the cryptography backend, the following key types require at least the following cryptography version:
-RSA keys: cryptography >= 1.4
-DSA and ECDSA keys: cryptography >= 1.5
-ed448 and ed25519 keys: cryptography >= 2.6.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.openssl_signature.
When using the cryptography backend, the following key types require at least the following cryptography version:
-RSA keys: cryptography >= 1.4
-DSA and ECDSA keys: cryptography >= 1.5
-ed448 and ed25519 keys: cryptography >= 2.6.
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pr/965/searchindex.js b/pr/965/searchindex.js
deleted file mode 100644
index 36338973..00000000
--- a/pr/965/searchindex.js
+++ /dev/null
@@ -1 +0,0 @@
-Search.setIndex({"alltitles":{"Attributes":[[1,"attributes"],[2,"attributes"],[3,"attributes"],[4,"attributes"],[5,"attributes"],[6,"attributes"],[7,"attributes"],[8,"attributes"],[9,"attributes"],[10,"attributes"],[11,"attributes"],[12,"attributes"],[13,"attributes"],[14,"attributes"],[16,"attributes"],[19,"attributes"],[20,"attributes"],[22,"attributes"],[26,"attributes"],[27,"attributes"],[28,"attributes"],[32,"attributes"],[33,"attributes"],[34,"attributes"],[35,"attributes"],[36,"attributes"],[37,"attributes"],[39,"attributes"],[40,"attributes"],[41,"attributes"],[43,"attributes"],[44,"attributes"],[45,"attributes"],[46,"attributes"],[50,"attributes"],[52,"attributes"],[53,"attributes"],[54,"attributes"],[56,"attributes"],[57,"attributes"]],"Authors":[[1,"authors"],[2,"authors"],[3,"authors"],[4,"authors"],[5,"authors"],[6,"authors"],[7,"authors"],[8,"authors"],[9,"authors"],[10,"authors"],[11,"authors"],[12,"authors"],[13,"authors"],[14,"authors"],[16,"authors"],[19,"authors"],[20,"authors"],[22,"authors"],[23,"authors"],[24,"authors"],[26,"authors"],[27,"authors"],[28,"authors"],[31,"authors"],[32,"authors"],[33,"authors"],[34,"authors"],[35,"authors"],[36,"authors"],[37,"authors"],[38,"authors"],[39,"authors"],[40,"authors"],[41,"authors"],[42,"authors"],[43,"authors"],[44,"authors"],[45,"authors"],[46,"authors"],[47,"authors"],[48,"authors"],[49,"authors"],[50,"authors"],[51,"authors"],[52,"authors"],[53,"authors"],[54,"authors"],[55,"authors"],[56,"authors"],[57,"authors"]],"Breaking Changes / Porting Guide":[[15,"breaking-changes-porting-guide"]],"Bugfixes":[[15,"bugfixes"],[15,"id2"],[15,"id4"],[15,"id7"],[15,"id14"],[15,"id19"],[15,"id21"],[15,"id23"],[15,"id27"],[15,"id33"],[15,"id36"],[15,"id40"],[15,"id45"],[15,"id47"],[15,"id51"],[15,"id53"],[15,"id56"],[15,"id58"],[15,"id62"],[15,"id66"],[15,"id70"],[15,"id74"],[15,"id80"],[15,"id82"],[15,"id91"],[15,"id94"],[15,"id101"],[15,"id104"],[15,"id106"],[15,"id108"],[15,"id111"],[15,"id113"],[15,"id115"],[15,"id117"],[15,"id119"],[15,"id122"],[15,"id125"],[15,"id130"],[15,"id134"],[15,"id136"],[15,"id138"],[15,"id143"],[15,"id146"],[15,"id148"],[15,"id151"],[15,"id154"],[15,"id156"],[15,"id160"],[15,"id164"],[15,"id167"],[15,"id170"],[15,"id174"],[15,"id176"],[15,"id179"],[15,"id185"]],"Changelog":[[25,"changelog"]],"Collection links":[[1,"collection-links"],[2,"collection-links"],[3,"collection-links"],[4,"collection-links"],[5,"collection-links"],[6,"collection-links"],[7,"collection-links"],[8,"collection-links"],[9,"collection-links"],[10,"collection-links"],[11,"collection-links"],[12,"collection-links"],[13,"collection-links"],[14,"collection-links"],[16,"collection-links"],[19,"collection-links"],[20,"collection-links"],[22,"collection-links"],[23,"collection-links"],[24,"collection-links"],[26,"collection-links"],[27,"collection-links"],[28,"collection-links"],[31,"collection-links"],[32,"collection-links"],[33,"collection-links"],[34,"collection-links"],[35,"collection-links"],[36,"collection-links"],[37,"collection-links"],[38,"collection-links"],[39,"collection-links"],[40,"collection-links"],[41,"collection-links"],[42,"collection-links"],[43,"collection-links"],[44,"collection-links"],[45,"collection-links"],[46,"collection-links"],[47,"collection-links"],[48,"collection-links"],[49,"collection-links"],[50,"collection-links"],[51,"collection-links"],[52,"collection-links"],[53,"collection-links"],[54,"collection-links"],[55,"collection-links"],[56,"collection-links"],[57,"collection-links"]],"Communication":[[25,"communication"]],"Community.Crypto":[[25,null]],"Community.Crypto Release Notes":[[15,null]],"Deprecated Features":[[15,"deprecated-features"],[15,"id13"],[15,"id17"],[15,"id32"],[15,"id39"],[15,"id44"],[15,"id61"],[15,"id73"],[15,"id100"],[15,"id133"],[15,"id159"],[15,"id163"],[15,"id183"]],"Description":[[25,"description"]],"Examples":[[1,"examples"],[2,"examples"],[3,"examples"],[4,"examples"],[5,"examples"],[6,"examples"],[7,"examples"],[8,"examples"],[9,"examples"],[10,"examples"],[11,"examples"],[12,"examples"],[13,"examples"],[14,"examples"],[16,"examples"],[19,"examples"],[20,"examples"],[22,"examples"],[23,"examples"],[24,"examples"],[26,"examples"],[27,"examples"],[28,"examples"],[31,"examples"],[32,"examples"],[33,"examples"],[34,"examples"],[35,"examples"],[36,"examples"],[37,"examples"],[38,"examples"],[39,"examples"],[40,"examples"],[41,"examples"],[42,"examples"],[43,"examples"],[44,"examples"],[45,"examples"],[46,"examples"],[47,"examples"],[48,"examples"],[49,"examples"],[50,"examples"],[51,"examples"],[52,"examples"],[53,"examples"],[54,"examples"],[55,"examples"],[56,"examples"],[57,"examples"]],"Filter":[[15,"filter"],[15,"id64"],[15,"id84"]],"Filter Plugins":[[25,"filter-plugins"]],"How to create a small CA":[[17,null]],"How to create self-signed certificates":[[18,null]],"Index of all Collection Environment Variables":[[21,null]],"Input":[[23,"input"],[31,"input"],[38,"input"],[42,"input"],[47,"input"],[48,"input"],[49,"input"],[51,"input"],[55,"input"]],"Keyword parameters":[[31,"keyword-parameters"],[38,"keyword-parameters"],[51,"keyword-parameters"],[55,"keyword-parameters"]],"Known Issues":[[15,"known-issues"]],"Lookup":[[15,"lookup"]],"Lookup Plugins":[[25,"lookup-plugins"]],"Minor Changes":[[15,"minor-changes"],[15,"id10"],[15,"id12"],[15,"id16"],[15,"id25"],[15,"id29"],[15,"id31"],[15,"id38"],[15,"id43"],[15,"id49"],[15,"id55"],[15,"id60"],[15,"id68"],[15,"id72"],[15,"id76"],[15,"id79"],[15,"id86"],[15,"id89"],[15,"id93"],[15,"id96"],[15,"id98"],[15,"id110"],[15,"id121"],[15,"id124"],[15,"id129"],[15,"id132"],[15,"id142"],[15,"id145"],[15,"id150"],[15,"id158"],[15,"id162"],[15,"id166"],[15,"id169"],[15,"id173"],[15,"id178"],[15,"id182"]],"Modules":[[25,"modules"]],"New Modules":[[15,"new-modules"],[15,"id34"],[15,"id41"],[15,"id126"],[15,"id152"],[15,"id171"],[15,"id180"],[15,"id186"]],"New Plugins":[[15,"new-plugins"],[15,"id63"],[15,"id83"]],"Notes":[[1,"notes"],[2,"notes"],[3,"notes"],[4,"notes"],[5,"notes"],[6,"notes"],[7,"notes"],[8,"notes"],[9,"notes"],[10,"notes"],[11,"notes"],[13,"notes"],[19,"notes"],[20,"notes"],[22,"notes"],[28,"notes"],[33,"notes"],[34,"notes"],[45,"notes"],[46,"notes"],[52,"notes"],[53,"notes"],[54,"notes"],[56,"notes"],[57,"notes"]],"Parameters":[[1,"parameters"],[2,"parameters"],[3,"parameters"],[4,"parameters"],[5,"parameters"],[6,"parameters"],[7,"parameters"],[8,"parameters"],[9,"parameters"],[10,"parameters"],[11,"parameters"],[12,"parameters"],[13,"parameters"],[14,"parameters"],[19,"parameters"],[20,"parameters"],[22,"parameters"],[26,"parameters"],[27,"parameters"],[28,"parameters"],[32,"parameters"],[33,"parameters"],[34,"parameters"],[35,"parameters"],[36,"parameters"],[37,"parameters"],[39,"parameters"],[40,"parameters"],[41,"parameters"],[43,"parameters"],[44,"parameters"],[45,"parameters"],[46,"parameters"],[50,"parameters"],[52,"parameters"],[53,"parameters"],[54,"parameters"],[56,"parameters"],[57,"parameters"]],"Plugin Index":[[25,"plugin-index"]],"Release Summary":[[15,"release-summary"],[15,"id1"],[15,"id3"],[15,"id5"],[15,"id6"],[15,"id8"],[15,"id9"],[15,"id11"],[15,"id15"],[15,"id18"],[15,"id20"],[15,"id22"],[15,"id24"],[15,"id26"],[15,"id28"],[15,"id30"],[15,"id35"],[15,"id37"],[15,"id42"],[15,"id46"],[15,"id48"],[15,"id50"],[15,"id52"],[15,"id54"],[15,"id57"],[15,"id59"],[15,"id65"],[15,"id67"],[15,"id69"],[15,"id71"],[15,"id75"],[15,"id77"],[15,"id78"],[15,"id81"],[15,"id85"],[15,"id87"],[15,"id88"],[15,"id90"],[15,"id92"],[15,"id95"],[15,"id97"],[15,"id99"],[15,"id102"],[15,"id103"],[15,"id105"],[15,"id107"],[15,"id109"],[15,"id112"],[15,"id114"],[15,"id116"],[15,"id118"],[15,"id120"],[15,"id123"],[15,"id127"],[15,"id128"],[15,"id131"],[15,"id135"],[15,"id137"],[15,"id139"],[15,"id140"],[15,"id141"],[15,"id144"],[15,"id147"],[15,"id149"],[15,"id153"],[15,"id155"],[15,"id157"],[15,"id161"],[15,"id165"],[15,"id168"],[15,"id172"],[15,"id175"],[15,"id177"],[15,"id181"]],"Removed Features (previously deprecated)":[[15,"removed-features-previously-deprecated"],[15,"id184"]],"Requirements":[[1,"requirements"],[2,"requirements"],[3,"requirements"],[4,"requirements"],[5,"requirements"],[6,"requirements"],[7,"requirements"],[8,"requirements"],[9,"requirements"],[10,"requirements"],[11,"requirements"],[12,"requirements"],[13,"requirements"],[14,"requirements"],[19,"requirements"],[20,"requirements"],[22,"requirements"],[23,"requirements"],[24,"requirements"],[26,"requirements"],[27,"requirements"],[28,"requirements"],[31,"requirements"],[32,"requirements"],[33,"requirements"],[34,"requirements"],[35,"requirements"],[36,"requirements"],[37,"requirements"],[38,"requirements"],[39,"requirements"],[40,"requirements"],[41,"requirements"],[43,"requirements"],[44,"requirements"],[45,"requirements"],[46,"requirements"],[50,"requirements"],[51,"requirements"],[52,"requirements"],[53,"requirements"],[54,"requirements"],[55,"requirements"],[56,"requirements"],[57,"requirements"]],"Return Value":[[23,"return-value"],[24,"return-value"],[31,"return-value"],[38,"return-value"],[42,"return-value"],[47,"return-value"],[48,"return-value"],[49,"return-value"],[51,"return-value"],[55,"return-value"]],"Return Values":[[1,"return-values"],[2,"return-values"],[3,"return-values"],[5,"return-values"],[6,"return-values"],[7,"return-values"],[8,"return-values"],[9,"return-values"],[10,"return-values"],[12,"return-values"],[13,"return-values"],[14,"return-values"],[16,"return-values"],[19,"return-values"],[20,"return-values"],[22,"return-values"],[26,"return-values"],[27,"return-values"],[28,"return-values"],[32,"return-values"],[33,"return-values"],[34,"return-values"],[35,"return-values"],[36,"return-values"],[37,"return-values"],[39,"return-values"],[40,"return-values"],[41,"return-values"],[43,"return-values"],[44,"return-values"],[45,"return-values"],[46,"return-values"],[50,"return-values"],[52,"return-values"],[53,"return-values"],[54,"return-values"],[56,"return-values"],[57,"return-values"]],"Scenario Guides":[[25,"scenario-guides"]],"Security Fixes":[[15,"security-fixes"]],"See Also":[[1,"see-also"],[2,"see-also"],[3,"see-also"],[4,"see-also"],[5,"see-also"],[6,"see-also"],[7,"see-also"],[8,"see-also"],[9,"see-also"],[10,"see-also"],[11,"see-also"],[12,"see-also"],[13,"see-also"],[19,"see-also"],[20,"see-also"],[22,"see-also"],[23,"see-also"],[24,"see-also"],[27,"see-also"],[31,"see-also"],[32,"see-also"],[33,"see-also"],[34,"see-also"],[35,"see-also"],[36,"see-also"],[37,"see-also"],[38,"see-also"],[39,"see-also"],[40,"see-also"],[41,"see-also"],[42,"see-also"],[43,"see-also"],[44,"see-also"],[45,"see-also"],[46,"see-also"],[47,"see-also"],[49,"see-also"],[50,"see-also"],[51,"see-also"],[52,"see-also"],[53,"see-also"],[54,"see-also"],[55,"see-also"],[56,"see-also"],[57,"see-also"]],"Set up the CA":[[17,"set-up-the-ca"]],"Synopsis":[[1,"synopsis"],[2,"synopsis"],[3,"synopsis"],[4,"synopsis"],[5,"synopsis"],[6,"synopsis"],[7,"synopsis"],[8,"synopsis"],[9,"synopsis"],[10,"synopsis"],[11,"synopsis"],[12,"synopsis"],[13,"synopsis"],[14,"synopsis"],[16,"synopsis"],[19,"synopsis"],[20,"synopsis"],[22,"synopsis"],[23,"synopsis"],[24,"synopsis"],[26,"synopsis"],[27,"synopsis"],[28,"synopsis"],[31,"synopsis"],[32,"synopsis"],[33,"synopsis"],[34,"synopsis"],[35,"synopsis"],[36,"synopsis"],[37,"synopsis"],[38,"synopsis"],[39,"synopsis"],[40,"synopsis"],[41,"synopsis"],[42,"synopsis"],[43,"synopsis"],[44,"synopsis"],[45,"synopsis"],[46,"synopsis"],[47,"synopsis"],[48,"synopsis"],[49,"synopsis"],[50,"synopsis"],[51,"synopsis"],[52,"synopsis"],[53,"synopsis"],[54,"synopsis"],[55,"synopsis"],[56,"synopsis"],[57,"synopsis"]],"Terms":[[24,"terms"]],"Topics":[[15,"topics"]],"Use the CA to sign a certificate":[[17,"use-the-ca-to-sign-a-certificate"]],"community.crypto.acme_account module \u2013 Create, modify or delete ACME accounts":[[2,null]],"community.crypto.acme_account_facts":[[0,null]],"community.crypto.acme_account_info module \u2013 Retrieves information on ACME accounts":[[1,null]],"community.crypto.acme_ari_info module \u2013 Retrieves ACME Renewal Information (ARI) for a certificate":[[3,null]],"community.crypto.acme_certificate module \u2013 Create SSL/TLS certificates with the ACME protocol":[[5,null]],"community.crypto.acme_certificate_deactivate_authz module \u2013 Deactivate all authz for an ACME v2 order":[[4,null]],"community.crypto.acme_certificate_order_create module \u2013 Create an ACME v2 order":[[6,null]],"community.crypto.acme_certificate_order_finalize module \u2013 Finalize an ACME v2 order":[[7,null]],"community.crypto.acme_certificate_order_info module \u2013 Obtain information for an ACME v2 order":[[8,null]],"community.crypto.acme_certificate_order_validate module \u2013 Validate authorizations of an ACME v2 order":[[9,null]],"community.crypto.acme_certificate_renewal_info module \u2013 Determine whether a certificate should be renewed or not":[[10,null]],"community.crypto.acme_certificate_revoke module \u2013 Revoke certificates with the ACME protocol":[[11,null]],"community.crypto.acme_challenge_cert_helper module \u2013 Prepare certificates required for ACME challenges such as tls-alpn-01":[[12,null]],"community.crypto.acme_inspect module \u2013 Send direct requests to an ACME server":[[13,null]],"community.crypto.certificate_complete_chain module \u2013 Complete certificate chain given a set of untrusted and root certificates":[[14,null]],"community.crypto.crypto_info module \u2013 Retrieve cryptographic capabilities":[[16,null]],"community.crypto.ecs_certificate module \u2013 Request SSL/TLS certificates with the Entrust Certificate Services (ECS) API":[[19,null]],"community.crypto.ecs_domain module \u2013 Request validation of a domain with the Entrust Certificate Services (ECS) API":[[20,null]],"community.crypto.get_certificate module \u2013 Get a certificate from a host:port":[[22,null]],"community.crypto.gpg_fingerprint filter \u2013 Retrieve a GPG fingerprint from a GPG public or private key":[[23,null]],"community.crypto.gpg_fingerprint lookup \u2013 Retrieve a GPG fingerprint from a GPG public or private key file":[[24,null]],"community.crypto.luks_device module \u2013 Manage encrypted (LUKS) devices":[[26,null]],"community.crypto.openssh_cert module \u2013 Generate OpenSSH host or user certificates":[[27,null]],"community.crypto.openssh_keypair module \u2013 Generate OpenSSH private and public keys":[[28,null]],"community.crypto.openssl_certificate":[[30,null]],"community.crypto.openssl_certificate_info":[[29,null]],"community.crypto.openssl_csr module \u2013 Generate OpenSSL Certificate Signing Request (CSR)":[[33,null]],"community.crypto.openssl_csr_info filter \u2013 Retrieve information from OpenSSL Certificate Signing Requests (CSR)":[[31,null]],"community.crypto.openssl_csr_info module \u2013 Provide information of OpenSSL Certificate Signing Requests (CSR)":[[32,null]],"community.crypto.openssl_csr_pipe module \u2013 Generate OpenSSL Certificate Signing Request (CSR)":[[34,null]],"community.crypto.openssl_dhparam module \u2013 Generate OpenSSL Diffie-Hellman Parameters":[[35,null]],"community.crypto.openssl_pkcs12 module \u2013 Generate OpenSSL PKCS#12 archive":[[36,null]],"community.crypto.openssl_privatekey module \u2013 Generate OpenSSL private keys":[[40,null]],"community.crypto.openssl_privatekey_convert module \u2013 Convert OpenSSL private keys":[[37,null]],"community.crypto.openssl_privatekey_info filter \u2013 Retrieve information from OpenSSL private keys":[[38,null]],"community.crypto.openssl_privatekey_info module \u2013 Provide information for OpenSSL private keys":[[39,null]],"community.crypto.openssl_privatekey_pipe module \u2013 Generate OpenSSL private keys without disk access":[[41,null]],"community.crypto.openssl_publickey module \u2013 Generate an OpenSSL public key from its private key":[[44,null]],"community.crypto.openssl_publickey_info filter \u2013 Retrieve information from OpenSSL public keys in PEM format":[[42,null]],"community.crypto.openssl_publickey_info module \u2013 Provide information for OpenSSL public keys":[[43,null]],"community.crypto.openssl_signature module \u2013 Sign data with openssl":[[46,null]],"community.crypto.openssl_signature_info module \u2013 Verify signatures with openssl":[[45,null]],"community.crypto.parse_serial filter \u2013 Convert a serial number as a colon-separated list of hex numbers to an integer":[[47,null]],"community.crypto.split_pem filter \u2013 Split PEM file contents into multiple objects":[[48,null]],"community.crypto.to_serial filter \u2013 Convert an integer to a colon-separated list of hex numbers":[[49,null]],"community.crypto.x509_certificate module \u2013 Generate and/or check OpenSSL certificates":[[53,null]],"community.crypto.x509_certificate_convert module \u2013 Convert X.509 certificates":[[50,null]],"community.crypto.x509_certificate_info filter \u2013 Retrieve information from X.509 certificates in PEM format":[[51,null]],"community.crypto.x509_certificate_info module \u2013 Provide information of OpenSSL X.509 certificates":[[52,null]],"community.crypto.x509_certificate_pipe module \u2013 Generate and/or check OpenSSL certificates":[[54,null]],"community.crypto.x509_crl module \u2013 Generate Certificate Revocation Lists (CRLs)":[[57,null]],"community.crypto.x509_crl_info filter \u2013 Retrieve information from X.509 CRLs in PEM format":[[55,null]],"community.crypto.x509_crl_info module \u2013 Retrieve information on Certificate Revocation Lists (CRLs)":[[56,null]],"v1.0.0":[[15,"v1-0-0"]],"v1.1.0":[[15,"v1-1-0"]],"v1.1.1":[[15,"v1-1-1"]],"v1.2.0":[[15,"v1-2-0"]],"v1.3.0":[[15,"v1-3-0"]],"v1.4.0":[[15,"v1-4-0"]],"v1.5.0":[[15,"v1-5-0"]],"v1.6.0":[[15,"v1-6-0"]],"v1.6.1":[[15,"v1-6-1"]],"v1.6.2":[[15,"v1-6-2"]],"v1.7.0":[[15,"v1-7-0"]],"v1.7.1":[[15,"v1-7-1"]],"v1.8.0":[[15,"v1-8-0"]],"v1.9.0":[[15,"v1-9-0"]],"v1.9.1":[[15,"v1-9-1"]],"v1.9.2":[[15,"v1-9-2"]],"v1.9.3":[[15,"v1-9-3"]],"v1.9.4":[[15,"v1-9-4"]],"v2.0.0":[[15,"v2-0-0"]],"v2.0.1":[[15,"v2-0-1"]],"v2.0.2":[[15,"v2-0-2"]],"v2.1.0":[[15,"v2-1-0"]],"v2.10.0":[[15,"v2-10-0"]],"v2.11.0":[[15,"v2-11-0"]],"v2.11.1":[[15,"v2-11-1"]],"v2.12.0":[[15,"v2-12-0"]],"v2.13.0":[[15,"v2-13-0"]],"v2.13.1":[[15,"v2-13-1"]],"v2.14.0":[[15,"v2-14-0"]],"v2.14.1":[[15,"v2-14-1"]],"v2.15.0":[[15,"v2-15-0"]],"v2.15.1":[[15,"v2-15-1"]],"v2.16.0":[[15,"v2-16-0"]],"v2.16.1":[[15,"v2-16-1"]],"v2.16.2":[[15,"v2-16-2"]],"v2.17.0":[[15,"v2-17-0"]],"v2.17.1":[[15,"v2-17-1"]],"v2.18.0":[[15,"v2-18-0"]],"v2.19.0":[[15,"v2-19-0"]],"v2.19.1":[[15,"v2-19-1"]],"v2.2.0":[[15,"v2-2-0"]],"v2.2.1":[[15,"v2-2-1"]],"v2.2.2":[[15,"v2-2-2"]],"v2.2.3":[[15,"v2-2-3"]],"v2.2.4":[[15,"v2-2-4"]],"v2.20.0":[[15,"v2-20-0"]],"v2.21.0":[[15,"v2-21-0"]],"v2.21.1":[[15,"v2-21-1"]],"v2.22.0":[[15,"v2-22-0"]],"v2.22.1":[[15,"v2-22-1"]],"v2.22.2":[[15,"v2-22-2"]],"v2.22.3":[[15,"v2-22-3"]],"v2.23.0":[[15,"v2-23-0"]],"v2.24.0":[[15,"v2-24-0"]],"v2.25.0":[[15,"v2-25-0"]],"v2.26.0":[[15,"v2-26-0"]],"v2.26.1":[[15,"v2-26-1"]],"v2.26.2":[[15,"v2-26-2"]],"v2.26.3":[[15,"v2-26-3"]],"v2.26.4":[[15,"v2-26-4"]],"v2.26.5":[[15,"v2-26-5"]],"v2.3.0":[[15,"v2-3-0"]],"v2.3.1":[[15,"v2-3-1"]],"v2.3.2":[[15,"v2-3-2"]],"v2.3.3":[[15,"v2-3-3"]],"v2.3.4":[[15,"v2-3-4"]],"v2.4.0":[[15,"v2-4-0"]],"v2.5.0":[[15,"v2-5-0"]],"v2.6.0":[[15,"v2-6-0"]],"v2.7.0":[[15,"v2-7-0"]],"v2.7.1":[[15,"v2-7-1"]],"v2.8.0":[[15,"v2-8-0"]],"v2.8.1":[[15,"v2-8-1"]],"v2.9.0":[[15,"v2-9-0"]]},"docnames":["acme_account_facts_module","acme_account_info_module","acme_account_module","acme_ari_info_module","acme_certificate_deactivate_authz_module","acme_certificate_module","acme_certificate_order_create_module","acme_certificate_order_finalize_module","acme_certificate_order_info_module","acme_certificate_order_validate_module","acme_certificate_renewal_info_module","acme_certificate_revoke_module","acme_challenge_cert_helper_module","acme_inspect_module","certificate_complete_chain_module","changelog","crypto_info_module","docsite/guide_ownca","docsite/guide_selfsigned","ecs_certificate_module","ecs_domain_module","environment_variables","get_certificate_module","gpg_fingerprint_filter","gpg_fingerprint_lookup","index","luks_device_module","openssh_cert_module","openssh_keypair_module","openssl_certificate_info_module","openssl_certificate_module","openssl_csr_info_filter","openssl_csr_info_module","openssl_csr_module","openssl_csr_pipe_module","openssl_dhparam_module","openssl_pkcs12_module","openssl_privatekey_convert_module","openssl_privatekey_info_filter","openssl_privatekey_info_module","openssl_privatekey_module","openssl_privatekey_pipe_module","openssl_publickey_info_filter","openssl_publickey_info_module","openssl_publickey_module","openssl_signature_info_module","openssl_signature_module","parse_serial_filter","split_pem_filter","to_serial_filter","x509_certificate_convert_module","x509_certificate_info_filter","x509_certificate_info_module","x509_certificate_module","x509_certificate_pipe_module","x509_crl_info_filter","x509_crl_info_module","x509_crl_module"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1},"filenames":["acme_account_facts_module.rst","acme_account_info_module.rst","acme_account_module.rst","acme_ari_info_module.rst","acme_certificate_deactivate_authz_module.rst","acme_certificate_module.rst","acme_certificate_order_create_module.rst","acme_certificate_order_finalize_module.rst","acme_certificate_order_info_module.rst","acme_certificate_order_validate_module.rst","acme_certificate_renewal_info_module.rst","acme_certificate_revoke_module.rst","acme_challenge_cert_helper_module.rst","acme_inspect_module.rst","certificate_complete_chain_module.rst","changelog.rst","crypto_info_module.rst","docsite/guide_ownca.rst","docsite/guide_selfsigned.rst","ecs_certificate_module.rst","ecs_domain_module.rst","environment_variables.rst","get_certificate_module.rst","gpg_fingerprint_filter.rst","gpg_fingerprint_lookup.rst","index.rst","luks_device_module.rst","openssh_cert_module.rst","openssh_keypair_module.rst","openssl_certificate_info_module.rst","openssl_certificate_module.rst","openssl_csr_info_filter.rst","openssl_csr_info_module.rst","openssl_csr_module.rst","openssl_csr_pipe_module.rst","openssl_dhparam_module.rst","openssl_pkcs12_module.rst","openssl_privatekey_convert_module.rst","openssl_privatekey_info_filter.rst","openssl_privatekey_info_module.rst","openssl_privatekey_module.rst","openssl_privatekey_pipe_module.rst","openssl_publickey_info_filter.rst","openssl_publickey_info_module.rst","openssl_publickey_module.rst","openssl_signature_info_module.rst","openssl_signature_module.rst","parse_serial_filter.rst","split_pem_filter.rst","to_serial_filter.rst","x509_certificate_convert_module.rst","x509_certificate_info_filter.rst","x509_certificate_info_module.rst","x509_certificate_module.rst","x509_certificate_pipe_module.rst","x509_crl_info_filter.rst","x509_crl_info_module.rst","x509_crl_module.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,17,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,50,51,52,53,54,55,56,57],"0":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,16,19,20,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"00":[3,5,6,15,19,27,31,32,33,34,40,41,44,47,49,51,52,53,54],"00123456789":1,"00z":3,"01":[3,5,6,7,8,9,13,19,25,27,40,41,44,47,57],"01t00":27,"01t01":5,"02":[5,19,57],"03":[5,19,33,35,36,37,40,44,50,53,57],"03ecd578":26,"03t00":3,"04":[3,5,7,31,32,38,39,40,41,42,43,44,51,52],"04t01":5,"05z":19,"06":[40,41,44,53,54],"0600":[36,37,40],"07":[13,31,32,38,39,42,43,51,52],"0755":[27,28,33,35,36,37,40,44,50,53],"08":[5,19,40,41,44],"09":[19,31,32,33,35,36,37,38,39,40,41,42,43,44,50,51,52,53,57],"0a":[31,32,38,39,42,43,51,52],"0b":[40,41,44],"0b3":15,"0c":[40,41,44],"0f":[31,32,38,39,40,41,42,43,44,51,52],"1":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,55,56,57],"10":[1,2,3,4,5,6,7,8,9,10,11,13,18,22,25,26,27,28,31,38,40,41,42,44,48,51,52,53,54,55],"1000":15,"102":15,"1024":28,"103":15,"105":15,"108":15,"11":[19,20,22,27,31,32,33,34,35,36,37,38,39,40,42,43,44,47,49,50,51,52,53,55,56,57],"113":15,"115":15,"116":15,"119":15,"12":[13,22,25,33,34,35,40,41,44,53,54],"121":15,"123":15,"1234":[51,52,55,56,57],"12345":[5,13,31,32,51,52],"1234567":49,"1234567890abcdefghijklmnopqrstuvwxyzabcdefgh":13,"1235262234164342":19,"125":15,"129":[15,20],"13":[22,40,41,44,57],"132":15,"135":15,"138":15,"139":15,"14":[16,40,41,44],"143":15,"147":15,"149":15,"15":[5,7,13,19,23,24,36,53,54],"150":15,"16":26,"160":15,"163":15,"165":15,"166":15,"167":15,"168":15,"17":[3,26],"171":15,"173":15,"1736":[27,28,33,35,36,37,40,44,50,53],"1777":[27,28,33,35,36,37,40,44,50,53],"178":15,"179":15,"17dt3juxgj":[5,6],"18":[40,41,44,47,49,53,54,57],"180":15,"184":15,"186":28,"19":[40,41,44,50],"193":15,"197":15,"1970":27,"1a":[40,41,44],"1c":[40,41,44],"1d":[17,40,41,44,52],"1d10h":53,"1e":[40,41,44],"1f":[40,41,44],"1m":16,"2":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"20":[3,4,5,10,19,33],"200":13,"2001":27,"2017":13,"2018":[13,19],"2019":[19,27,33,35,36,37,40,44,50,53,54,57],"20190331202428z":[51,52,53,57],"20190413202428z":[51,52,53,55,56,57],"20191001000000z":57,"20191010010203z":57,"20191013152910z":57,"202":15,"2020":[15,19,27,28,33,35,36,37,40,44,50,53],"20200331202428z":53,"2021":[3,16],"2022":[5,36],"2024":3,"203":15,"204":15,"2048":[28,35,36,40,41],"205":15,"206":15,"207":15,"21":[22,27],"213":15,"216":15,"217":15,"22":[19,22,27,31,32,33,34,35,36,37,40,41,44,47,49,50,51,52,53,55,56,57],"220":15,"221":15,"224":15,"225":15,"23":[19,26,36,50],"230":15,"232":15,"233":15,"234":15,"2345":57,"236":15,"236921":3,"2378915":19,"23t15":19,"24":[5,6,7,8,9,10,31,32,40,41,44,51,52],"240":15,"241":15,"242":15,"243":15,"246":15,"247":15,"248":15,"25":[19,40,41,44],"253":[15,19],"255":[15,47],"256":[1,15,27,28,47],"25646":15,"257":15,"26":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"260":15,"263":15,"264":15,"270":15,"271":15,"273":15,"274":15,"279":15,"28":[40,41,44],"281":15,"287":15,"288":15,"289":15,"29":[31,32,38,39,40,41,42,43,44,51,52],"290":15,"291":15,"294":15,"295":15,"296":15,"2986":[33,34],"29t01":3,"2c":[5,7,40,41,44],"2e":[40,41,44],"2f":[31,32,38,39,40,41,42,43,44,51,52],"2fde":26,"2w":27,"3":[1,2,3,4,5,6,7,8,9,10,11,12,13,19,20,22,26,27,28,31,32,33,34,36,37,39,40,41,43,44,51,52,53,54,57],"30":[5,19,40,41,44],"302":15,"309":15,"31":26,"311":33,"313":15,"316":15,"317":15,"318":15,"32":[15,19,20,27,31,32,38,39,40,41,42,43,44,51,52,53],"324":15,"326":15,"327":15,"32w":27,"32w1d2h":[10,27,52,53,54,57],"33":[19,22,27,31,32,33,34,38,39,40,41,42,43,44,47,49,51,52,55,56,57],"331":15,"3339":[3,8],"33417":13,"3389":22,"339":15,"34":[13,31,32,38,39,42,43,51,52],"342":19,"34z":5,"35":[15,40,41,44],"353":15,"355":15,"36":15,"360":15,"365":[53,54],"3650d":[53,54],"365d":[17,53,54],"37":[15,40,41,44],"374":15,"379":15,"38":[15,36,40,41,44],"380079":19,"384":28,"385":15,"388":15,"39":[5,7,15,40,41,44],"395":15,"396":15,"399":15,"3a":[40,41,44],"3d":[40,41,44],"3f":[40,41,44],"3w":52,"4":[3,5,6,7,8,10,11,16,22,26,31,32,33,34,36,44,45,46,51,52,53],"40":[40,41,44],"400":15,"402":15,"403":15,"404":15,"40697":15,"407":15,"408":15,"409":15,"4096":[18,28,35,39,40,41,43],"41":[15,40,41,44],"410":15,"417":15,"42":[15,39],"4256":26,"426":15,"427":15,"429":15,"43":[15,31,32,38,39,40,41,42,43,44,51,52],"434":15,"436":15,"44":[13,31,32,33,34,51,52],"440":15,"441":15,"443":[6,22],"445":15,"447":15,"448":15,"45":[5,7],"4514":15,"452":15,"457":15,"45z":5,"46":[15,40,41,44],"460":15,"46161":13,"473":15,"474":15,"48":[40,41,44],"481":15,"486":15,"487":15,"491":15,"4a":[5,7,31,32,38,39,42,43,51,52],"4b":[5,7],"4c":[40,41,44],"4d":[31,32,38,39,40,41,42,43,44,51,52],"4e":[31,32,38,39,40,41,42,43,44,51,52],"4e6c":26,"4etl6srw2yilurn5vfvvhuhp7x8pxltmwwlbbm4ifym":1,"4f":[40,41,44],"5":[1,2,3,4,5,6,7,8,9,10,11,13,14,16,20,26,31,32,40,41,45,46,51,52,53,54],"50":[40,41,44],"500":19,"50000":36,"502":15,"503":15,"504":15,"508":15,"509":[3,6,10,15,25,56],"51":[31,32,38,39,40,41,42,43,44,51,52],"511":15,"512":27,"513":15,"515":15,"518":15,"519":15,"52":[40,41,44],"521":28,"523":15,"524":15,"525":15,"53":[40,41,44],"530":15,"55":[31,32,33,34,51,52],"551":15,"555":[19,53],"5555":[19,53],"559":15,"56":[13,40,41,44],"560":15,"568":15,"569":15,"57":[40,41,44],"571":15,"572":15,"575":15,"59":[40,41,44],"59039":15,"592":15,"596":15,"598":15,"5c":[40,41,44],"5d":[40,41,44],"5e":[40,41,44],"5f":[31,32,38,39,40,41,42,43,44,51,52],"6":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"60":[5,6,7,9,19,20,40,41,44],"600":15,"603":15,"604800":13,"606":15,"61":[31,32,38,39,42,43,51,52],"613":15,"615":15,"617":15,"627":15,"628":15,"63":[5,7,19,31,32,38,39,42,43,51,52],"63984":15,"64":19,"644":[27,28,33,35,36,37,40,44,50,53],"645":15,"646":15,"64776":15,"64969":15,"65":[5,7],"651":15,"652":15,"66":[31,32,33,34,40,41,44,51,52],"66223":57,"664":15,"666":15,"667":15,"67035":15,"67213":15,"67900":15,"68":[31,32,38,39,40,41,42,43,44,51,52],"680":15,"681":15,"682":15,"684":15,"685":15,"687":15,"69":[15,40,41,44],"693":15,"698":15,"6a":[5,7,40,41,44],"6ab008b4dd1b":26,"6c":[40,41,44],"6d":[31,32,38,39,40,41,42,43,44,51,52],"6e":[40,41,44],"7":[2,5,7,8,13,22,26,27,28,31,32,36,43,51,52,55,56],"70":[40,41,44],"701":15,"705":15,"71":[5,7,40,41,44],"710":15,"712":15,"714":15,"715":15,"72":[40,41,44],"723":15,"725":15,"726":15,"727":15,"730":15,"733":15,"735":15,"736":15,"739":15,"740":15,"745":15,"749":15,"75":[5,7,40,41,44],"753":15,"754":15,"76":[15,40,41,44],"77":[31,32,33,34,40,41,44,51,52],"777":15,"779":15,"7807":8,"784":15,"79":[19,40,41,44],"793":15,"794":15,"799":15,"7b":[5,7],"7c":[40,41,44],"7d":[5,7,57],"7e":[40,41,44],"7f":[40,41,44],"8":[1,5,8,11,26,27,28,33,35,36,37,40,44,50,53],"80":53,"801":15,"802":15,"80258":22,"803":15,"808":15,"8080":22,"809":15,"810":15,"811":15,"82":[40,41,44],"824":15,"825":[53,54],"827":15,"829":15,"83":[40,41,44],"830":15,"831":15,"832":15,"834":15,"835":15,"838":15,"839":15,"83950":15,"84":[15,40,41,44],"842":15,"842e3e8fa340":26,"844":15,"847":15,"848":15,"85":[5,7,40,41,44],"8555":[2,5,6,7,8,9,11,12,13,25],"86":[15,40,41,44],"864":15,"867":15,"868":15,"87":[40,41,44],"8737":[5,6,8,9,12,13],"8738":[5,6],"88":[31,32,33,34,40,41,44,51,52],"89":[5,7,15],"895":15,"8b":[31,32,38,39,42,43,51,52],"8c":[40,41,44],"8d":[40,41,44],"9":[10,11,22,25,28,40,41,52,53],"90":[5,7,10,19,20,53,54],"901":15,"904":13,"91":[40,41,44],"918":15,"919":15,"92":[15,31,32,38,39,42,43,51,52],"9348":26,"936":15,"939":15,"94":[20,31,32,38,39,40,41,42,43,44,51,52],"945":15,"947":15,"949":15,"95":[15,31,32,38,39,42,43,51,52],"97":[15,40,41,44],"9773":[3,5,6,8,10],"99":[31,32,33,34,40,41,44,51,52],"99999":15,"9a":[40,41,44],"9b":[40,41,44],"9d9f":26,"9e":[40,41,44],"9f":[40,41,44],"A":[1,2,3,6,8,10,12,14,15,16,19,22,24,32,33,34,39,43,45,47,48,49,52,53,54,56,57],"As":[5,27,28,33,35,36,37,40,44,50,53],"At":[5,27],"Be":20,"By":[27,28,33,35,36,37,40,41,44,50,53,57],"For":[1,2,3,4,5,6,7,8,9,10,11,13,15,18,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,50,51,52,53,54],"IN":41,"If":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"In":[1,2,4,5,6,7,8,9,10,11,13,15,17,19,26,28,31,32,36,39,40,54],"It":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"Its":[5,7],"NOT":[27,41,53,54,57],"No":[15,21],"Not":12,"OR":41,"On":[53,54],"One":[11,27,28,31,32,33,35,36,37,38,39,40,41,42,43,44,50,51,52,53,57],"Or":35,"TO":41,"TOS":2,"That":[33,34,47],"The":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"There":[15,20,26],"These":[5,7,25,31,33,34,38,47,51,55],"To":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"Will":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,56,57],"With":26,"_acm":[5,6],"_default":[27,28,33,35,36,37,40,44,50,53,57],"_obj2txt":15,"_objects_data":15,"_pipe":15,"_pki":20,"_valu":[31,38,42,51],"_version":15,"a1":[5,7,40,41,44],"a2":[40,41,44],"a3":[31,32,38,39,42,43,51,52],"a4":[5,7],"a5":[40,41,44],"a5b1c3d2e9f8g7h6":5,"a6":[5,7,40,41,44],"a7":[5,7],"a8":[5,7],"a85k3x9f91a4":13,"aa":[31,32,33,34,38,39,42,43,51,52],"aa_compromis":[33,34,55,56,57],"aaaab3nza":28,"aab":6,"aacompromis":11,"aaron":[5,6,8,15],"ab":[40,41,44],"ab23cd41432522ff2526920393982fab":20,"abcd":20,"abil":15,"abl":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"abort":[5,6],"about":[1,2,8,19,20,22,25,27,33,34,38,39],"abov":[5,6,17],"absent":[2,8,15,26,27,28,33,35,36,40,44,53,57],"absolut":[10,15,27,32,39,43,52,53,54,56,57],"ac":[40,41,44],"accept":[1,2,4,5,6,7,8,9,11,13,15,19,27,33,34,57],"access":[1,2,3,4,5,6,7,8,9,10,11,13,15,20,25,33,34,37,39,40,44,53,54,57],"accid":[33,35,36,37,40,44,50,53,57],"accident":[5,15,38,39,40,41],"accomod":15,"accord":[5,6,8,10,15,33,34],"account":[3,4,5,6,7,8,9,10,11,12,13,15,16,19,25],"account_cr":13,"account_data":1,"account_email":5,"account_info":13,"account_kei":[1,2,4,5,6,7,8,9,11,13],"account_key_cont":[1,2,4,5,6,7,8,9,11,13],"account_key_passphras":[1,2,4,5,6,7,8,9,11,13],"account_key_src":[1,2,4,5,6,7,8,9,11,12,13,16],"account_private_kei":[4,5,6,7,8,9],"account_uri":[1,2,4,5,6,7,8,9,11,13],"accountkei":53,"accross":[5,6],"acct":13,"achiev":[12,15,22],"acknowledg":19,"acm":[10,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"acme_":15,"acme_account":[1,5,6,15,25],"acme_account_fact":[1,15],"acme_account_info":[0,2,15,25],"acme_account_kei":1,"acme_account_uri":1,"acme_accountkey_path":53,"acme_ari_info":[10,15,25],"acme_certif":[2,3,4,10,12,13,14,15,25],"acme_certificate_deactivate_authz":[5,6,7,8,9,15,25],"acme_certificate_order_cr":[7,8,9,15,25],"acme_certificate_order_fin":[6,8,9,15,25],"acme_certificate_order_info":[6,7,9,15,25],"acme_certificate_order_valid":[6,7,8,15,25],"acme_certificate_renewal_info":[6,15,25],"acme_certificate_revok":[3,5,7,15,25],"acme_chain":53,"acme_challenge_cert_help":[5,6,9,15,25],"acme_challenge_path":53,"acme_directori":[1,2,3,4,5,6,7,8,9,10,11,13,15,53],"acme_inspect":[2,5,6,7,8,9,11,15,25],"acme_vers":[1,2,3,4,5,6,7,8,9,10,11,13,15],"acmeprotocolexcept":15,"acmevalid":[5,6],"act":[15,19,27],"action":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,22,27,28,32,33,35,36,39,40,41,43,44,45,46,52,53,56,57],"action_group":[1,2,4,5,6,7,8,9,11,13],"action_modul":15,"activ":[5,6,13,15,19,20,34,41,54],"actual":[1,12,15,27,28,33,35,36,37,40,44,50,53],"ad":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,22,26,27,28,32,33,34,35,36,37,39,40,44,50,52,53,54,55,56,57],"add":[15,26,27],"addit":[5,15,19,26,33,34],"addition":36,"additional_email":19,"address":[1,2,5,6,12,15,19,20,27,31,32,38,51,52,55,56,57],"address_list":27,"adjust":[15,19,28,53,54],"admin":[19,20],"administr":[19,20],"advantage_ssl":[19,53,54],"ae":[26,40,41,44],"af":[40,41,44,57],"affect":3,"affiliation_chang":[33,34,55,56,57],"affiliationchang":11,"after":[5,6,7,8,9,12,15,26,53,54],"afterward":15,"ag":13,"again":[5,6,27,55,56],"against":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,22,27],"agent":[15,27],"agre":[2,5],"agreement":[5,19,31,32,51,52],"aidlqy":10,"alg":2,"algorithm":[2,5,6,10,15,22,26,27,28,31,32,38,39,40,41,42,43,44,46,51,52,53,54,55,56,57],"alias":[1,2,4,5,6,7,8,9,11,13,27,28,33,34,35,36,37,40,44,50,53,54,57],"aliv":15,"all":[1,2,3,5,6,7,8,9,10,11,13,14,15,16,17,19,22,25,27,28,31,32,36,38,39,40,41,48,49,51,52,53,54,55,56,57],"all_chain":[5,7],"alloc":27,"allow":[1,2,3,5,6,7,8,9,10,11,13,15,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"allow_cr":2,"allow_discard":26,"almost":[15,53,54],"along":19,"alpin":15,"alpn":[5,6,8,9,13,25],"alreadi":[5,6,11,15,19,20,26,27,28,33,34,35,36,40,44,53,54,56,57],"alreadyreplac":[5,6],"also":[15,26,28],"alt":[31,38,51],"altern":[5,6,7,9,15,18,19,33,34,53,54],"although":[1,2,3,4,5,6,7,8,9,10,11,13],"alwai":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,18,19,20,22,27,28,34,36,39,40,41,52,53,54,57],"always_cr":[53,54],"always_quot":[5,6,7,9],"amount":[4,5,6,7,9,15],"an":[1,2,3,5,10,11,12,15,19,20,22,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,50,51,52,53,54,55,56,57],"ani":[1,2,3,4,5,6,7,8,9,10,11,13,15,17,18,19,22,27,28,33,34,35,36,37,40,41,44,50,53,54,57],"announc":15,"anoth":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,17,18,19,26,31,32,38,40,51,52,54,55,56,57],"ansibl":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"ansible_ca":53,"ansible_collect":15,"ansible_date_tim":22,"ansiblemodul":15,"anymor":15,"anywai":[5,15],"apach":15,"api":[1,2,3,4,5,6,7,8,9,10,11,13,15,22,25,53,54],"apiusernam":[19,20,53],"appar":15,"appear":15,"append":15,"appl":[53,54],"appli":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,22,27,28],"applic":[6,13,15,19,20,27,28,33,35,36,37,40,44,50,53,57],"appreci":[1,2,3,4,5,6,7,8,9,10,11,13],"appropri":40,"approv":[19,20],"ar":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"arbitrari":[15,26],"archiv":[25,33,34,35,40,41,44,53,54],"archlinux":15,"argon":26,"argon2i":26,"argon2id":26,"argspec":15,"argument":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"ari":[5,10,15,25],"ari_algorithm":10,"arithmet":[31,32,38,39,42,43,51,52],"around":[19,39],"arrai":[8,19],"ascii":15,"ask":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"asn":[10,15,22,31,32,51,52,53,54,55,56,57],"asn1_base64":[15,22],"asn1_data":22,"assert":[1,45,46,52,53],"assertonli":[15,53],"associ":[5,14,19,20],"assum":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"assur":[5,9],"asymmetr":15,"async":41,"atom":[27,28,33,35,36,37,40,44,50,53,57],"atomic_mov":15,"attach":[19,33,34],"attack":39,"attempt":[5,6,8,13,28],"attr":[27,28,33,35,36,37,40,44,50,53,57],"attribut":15,"audit":19,"auth":33,"authent":[4,5,6,7,9,13,19,20,27,33,34,53,54],"author":[15,25],"authority_cert_issu":[31,32,33,34,51,52],"authority_cert_serial_numb":[31,32,33,34,51,52],"authority_key_identifi":[5,7,31,32,33,34,51,52],"authoritykeyidentifi":[5,7,31,32,33,34,51,52],"authorizations_by_identifi":8,"authorizations_by_statu":8,"authz":[5,6,7,9,13,15,25],"authz_url":9,"auto":[1,2,3,4,5,6,7,8,9,10,11,13,15,22,28,32,33,34,35,36,39,40,41,43,44,45,46,52,53,54],"auto_ignor":[40,41],"autodetect":15,"automat":[2,5,6,7,8,9,11,12,13,15,26,40,41,53],"avail":[1,2,3,4,5,6,7,8,9,10,11,13,15,16,18,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,57],"aveexi":[45,46],"avoid":[5,6,7,9,15,19,20,27,28,33,35,36,37,39,40,44,50,52,53,54,57],"aw":[5,6,7,9],"awai":[5,6,7],"awar":[15,20],"ayhba4dgqehhs3uee6culn4bynq":10,"b0":[31,32,38,39,42,43,51,52],"b1":[5,7,40,41,44],"b2":[40,41,44],"b3":[31,32,38,39,40,41,42,43,44,51,52],"b5":[40,41,44],"b64decod":[5,6,17,54],"b64encod":[26,50],"b7":[5,7],"ba":[5,7,31,32,38,39,42,43,51,52],"back":[1,2,3,4,5,6,7,8,9,10,11,13,15,17,19,27,28,33,35,36,37,40,44,50,53,57],"backend":[1,2,3,4,5,6,7,8,9,10,11,13,15,22,28,31,32,33,34,35,36,38,39,40,41,43,44,45,46,51,52,53,54,55,56,57],"backport":15,"backup":[19,28,33,35,36,37,40,41,44,50,53,57],"backup_fil":[19,33,35,36,37,40,44,50,53,57],"backup_full_chain_fil":19,"backward":[15,36],"bad":[5,6,7,15],"balanc":[3,26],"bare":19,"base":[5,7,15,19,26,27,40,41],"base64":[2,5,6,15,22,26,31,32,36,40,41,45,46,50,51,52,56,57],"basic":[2,5,15,31,32,33,34,38,39,42,43,51,52],"basic_constraint":[15,17,31,32,33,34,51,52],"basic_constraints_crit":[17,31,32,33,34,51,52],"basicconstraint":[33,34],"basicconstraints_crit":[33,34],"bb":[31,32,33,34,51,52],"bd":[31,32,38,39,42,43,51,52],"becam":[55,56,57],"been":[0,1,2,3,4,5,6,7,8,9,10,11,13,15,19,21,22,26,27,29,30,33,34,39,44,54,57],"befor":[1,3,5,6,7,8,9,12,15,20,23,31,38,42,47,48,49,51,53,54,55,57],"begin":[15,31,32,38,39,51,52],"behav":[15,34,41,54],"behavior":[10,15,19,28,36,40,41,53],"being":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,27,40,41,52,53,54],"belong":[15,20,33,34],"below":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"best":[19,27,28,33,35,36,37,40,44,50,53],"beta":15,"better":[53,54],"between":[5,6,8,10,15,26,28,47,50],"bewar":26,"bf":[31,32,38,39,42,43,51,52],"bin":[16,27,28,33,35,36,37,40,44,50,53],"binari":[1,2,3,4,5,6,7,8,9,10,11,13,15,16,22,26,28,35],"bind":[2,5,9,15],"bindep":15,"biometr":[31,32,51,52],"bit":[15,18,28,31,32,35,38,39,40,41,42,43,51,52],"bla":27,"blkid":26,"blob":[5,6],"block":[26,41],"blog":[5,6],"boolean":[1,2,3,4,5,6,7,8,9,10,11,13,16,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,44,45,50,51,52,53,54,55,56,57],"both":[2,5,6,15,19,28,32,33,34,39,43,44,45,46,52,54,56,57],"boulder":13,"bound":[4,5,6,7,9],"brainpoolp256r1":[40,41],"brainpoolp384r1":[40,41],"brainpoolp512r1":[40,41],"branch":15,"break":[22,34,41,54],"brief":15,"broken":[15,27,28,33,35,36,37,40,41,44,50,53,57],"browser":19,"bsd":15,"bug":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"buggi":15,"built":15,"builtin":[1,3,5,6,7,8,9,10,14,16,22,23,24,26,31,32,34,38,39,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56],"bullsey":15,"bump":15,"bundl":[15,36,48],"busi":15,"buypass":[1,2,3,4,5,6,7,8,9,10,11,13,15],"bypass":26,"byte":[13,26,31,32,33,34,47,51,52],"c":[15,33,34],"c0":[40,41,44],"c1da9a58":26,"c2":[31,32,38,39,42,43,51,52],"c3":[40,41,44],"c4":[5,7],"c7":[40,41,44],"c8":[31,32,38,39,42,43,51,52],"ca":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,19,25,27,31,32,33,34,36,48,51,52,53,54,55,56,57],"ca_bundl":36,"ca_cert":[15,22,54],"ca_certif":36,"ca_compromis":[33,34,55,56,57],"ca_csr":17,"ca_public_kei":27,"caaident":13,"cach":13,"cacompromis":11,"calcul":19,"call":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,36,52,53,57],"callback":15,"can":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,55,56,57],"can_load_kei":39,"can_parse_kei":39,"cancel":20,"cannot":[5,6,10,15,19,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,50,51,52,53,57],"canonic":15,"capabl":[15,25],"care":[5,6,40],"case":[1,2,4,5,6,7,8,9,10,11,13,15,16,19,20,22,26,27,28,31,32,33,34,35,36,37,39,40,41,44,49,50,51,52,53,54,57],"casignaturealgorithm":27,"caus":[5,10,15,22,27,28],"cautiou":19,"cb":[40,41,44],"cbc":26,"cc":[31,32,33,34,40,41,44,51,52],"cd":[40,41,44],"cd9lnt":[19,20,53],"cds_ent_lit":[19,53,54],"cds_ent_pro":[19,53,54],"cds_group":19,"cds_individu":19,"ce":[31,32,38,39,42,43,51,52],"cento":15,"cert":[1,2,5,6,7,8,9,11,12,13,16,19,22,27,31,32,33,34,36,38,45,46,50,51,52,55,57],"cert_dai":[5,19],"cert_data":[3,10],"cert_dest":[6,7,9],"cert_detail":19,"cert_expiri":19,"cert_id":[6,10],"cert_lifetim":19,"cert_statu":19,"cert_typ":19,"certain":[4,5,6,7,9,27,39,52],"certif":[1,2,4,6,7,8,9,13,15,25,35,36,38,40,41,44,45,46,48,55],"certificate_complete_chain":[5,7,15,25],"certificate_cont":[3,10,15,36,45,54],"certificate_exist":17,"certificate_hold":[33,34,55,56,57],"certificate_path":[3,10,36,45,46],"certificate_request":13,"certificate_result":4,"certificatehold":11,"cessation_of_oper":[33,34,55,56,57],"cessationofoper":11,"cf":[40,41,44],"chain":[5,7,15,19,22,25,53],"chain_dest":[5,6,7,9],"challeng":[1,5,6,7,8,9,13,15,25,53],"challenge_certif":12,"challenge_data":[5,6,7,9,12],"challenge_data_dn":[5,6,7,9],"challenge_typ":9,"challenge_url":9,"chang":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"changed_kei":2,"changelog":15,"changem":18,"channel":[25,39],"charact":19,"chattr":[27,28,33,35,36,37,40,44,50,53,57],"check":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55,56,57],"check_consist":[15,39],"check_mod":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"chmod":[27,28,33,35,36,37,40,44,50,53],"choic":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"choos":19,"chose":[5,6,15],"chosen":[1,2,3,4,5,6,7,8,9,10,11,13,36],"chown":[27,28,33,35,36,37,40,44,50,53,57],"chri":[19,20],"ci":15,"cidr":27,"cipher":[15,22,26,40,41],"circumst":[27,28,33,35,36,37,40,44,50,53],"claim":22,"classic":[1,2,3,4,5,6,7,8,9,10,11,13],"claus":15,"cleaner":15,"clear":27,"clever":[5,6],"cli":15,"client":[5,8,15,19,20,22,27,33,34,53,54,55,56,57],"client_auth":19,"client_id":[19,20],"clientauth":[33,34],"close":[13,26],"cloud":[19,20,53,54],"cm":[19,20,53,54],"cn":[5,7,17,19,22,33,34,57],"cname":15,"cncf":41,"co":5,"code":[15,19],"code_sign":19,"codebas":15,"collect":[0,15,17,18,25,29,30],"collis":57,"colon":[15,19,22,25,27,31,32,33,34,51,52,55,56,57],"com":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,22,25,27,31,32,33,34,36,37,39,40,41,43,44,50,51,52,53,54,55,56,57],"combin":57,"come":5,"comma":27,"command":[1,2,4,5,6,7,8,9,13,15,26,27],"comment":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"commerci":[17,33,34],"commit":15,"common":[1,2,3,5,6,7,8,9,10,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"common_nam":[17,18,32,33,34],"commonnam":[5,7,31,32,33,34,51,52,53,55,56,57],"commun":[17,18],"compar":[15,27],"comparison":27,"compat":[5,15,19,22,27,36],"compatibility2022":[15,36],"complet":[1,2,4,5,6,7,8,9,11,13,15,16,25,26,41],"complete_chain":14,"completechain":14,"complianc":19,"compliant":[15,19],"compon":[15,33,34,57],"compos":15,"compromis":[55,56,57],"comput":[6,31,32,38,39,42,43,51,52],"concaten":[5,7,14],"concern":[4,5,6,7,9,33,35,40,53],"condit":[5,7,15,19,20,22,27,28,33,35,36,37,40,44,50,53,57],"configur":[15,19,20,21,26,27,28,33,35,36,37,40,41,44,50,53,54,57],"conform":[15,28,40,41],"confus":[15,27,28,33,35,36,37,40,44,50,53,57],"conjunct":[6,7,8,9],"connect":[6,12,13,15,22],"consid":[5,6,8,27,28,33,34,35,36,40,53],"consist":[5,7,15,27,28,33,35,36,37,39,40,44,50,53],"consol":41,"constraint":[15,18,33,34],"construct":20,"contact":[1,2,5,13],"contain":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,22,26,27,28,33,34,35,36,37,40,41,44,50,53,57],"content":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,19,20,22,23,25,26,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,55,56,57],"content_base64":41,"content_text":41,"context":[22,27,28,33,35,36,37,40,44,50,53,57],"continu":[5,6],"contradict":15,"contribut":[19,20],"control":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"convers":[15,27,28,33,35,36,37,40,44,50,53],"convert":[12,15,19,22,25,27,28,31,32,33,34,38,40,41,51,52,55,56,57],"convert_int_to_byt":15,"cooki":13,"cookies_str":13,"coordin":[31,32,38,39,42,43,51,52],"copi":[5,6,7,9,14,15,17,19,20,34,53,54],"core":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"correct":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,27,28,33,35,36,37,40,44,50,53,57],"correctli":[15,27,28,33,35,36,37,40,44,50,53],"correspond":[27,28,40,41,47],"corrupt":[5,7,9,19,27,28,33,34,35,36,37,40,44,50,53,57],"cost":26,"could":[5,15,19,33,35,39,40,53,54],"count":[15,26],"country_nam":[33,34],"countrynam":[33,34],"cover":[53,54],"cpu":26,"crash":15,"creat":[1,3,4,7,8,9,10,11,12,13,15,19,25,26,27,28,33,34,35,36,37,40,41,43,44,50,53,54,56,57],"create_if_not_provid":[53,54],"create_subject_key_identifi":[33,34],"creation":[2,5,13,15,26],"credenti":[19,20,53,54],"criteria":[5,7],"criterium":[5,7],"critic":[22,31,32,33,34,51,52,55,56,57],"crl":[15,25,33,34],"crl_distribution_point":[15,33,34],"crl_issuer":[15,33,34],"crl_mode":[15,57],"cross":5,"crt":[3,5,6,7,9,10,11,12,13,19,20,52,53,54,57],"crv":1,"crypt":[15,26],"crypto":[17,18],"crypto_info":[15,25],"crypto_inform":16,"cryptobackend":15,"cryptograph":[15,19,25],"cryptographi":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,22,25,28,31,32,33,34,35,36,37,39,40,41,43,44,45,46,50,51,52,53,54,56,57],"cryptography_openssh":15,"cryptsetup":[15,26],"csp":19,"csr":[5,6,7,8,9,12,13,14,15,17,18,19,25,35,36,38,40,41,44,52,53,54],"csr_content":[5,6,7,9,15,17,18,53,54],"csr_path":[52,53,54],"ct":19,"ct_log":19,"ctrufan":[19,20],"ctx":15,"current":[1,5,6,10,15,16,19,20,22,27,28,33,34,35,36,37,40,41,44,50,53,54,57],"curv":[1,2,4,5,6,7,8,9,11,13,15,16,28,31,32,38,39,40,41,42,43,51,52],"custom":[2,15,19,28],"custom_field":19,"cve":[15,27,28,33,35,36,37,40,44,50,53],"d":[10,22,27,52,53,54,57],"d1":[5,7],"d3":[40,41,44],"d4":[31,32,38,39,40,41,42,43,44,51,52],"d5":[40,41,44],"d9":[40,41,44],"da":[40,41,44],"dai":[5,10,19,20,22,52,53,54],"danger":26,"data":[2,5,6,7,9,12,15,19,20,25,26,27,28,31,32,33,35,36,37,38,39,40,41,42,43,44,45,50,51,52,53,54,57],"date":[1,8,13,14,15,19,22,51,52,53,54,55,56,57],"date1":19,"date2":19,"date3":19,"date4":19,"date5":19,"datetim":15,"david":[27,28],"db":[5,7],"dd":[5,7,27,31,32,33,34,40,41,44,51,52],"ddthh":27,"de":[15,40,41,44],"deactiv":[1,2,5,6,7,8,9,15,19,25],"deactivate_authz":[5,6,7,9],"debian":15,"debug":[1,2,3,5,6,7,8,9,10,11,13,16,19,22,23,24,31,32,34,38,39,41,42,43,47,48,49,51,52,54,55,56],"dec":16,"decim":[27,28,33,35,36,37,40,44,50,53],"deciph":15,"declar":[15,21],"declin":[19,20],"decod":[1,2,4,5,6,7,8,9,11,12,13,15,31,32,38,51,52,55,56,57],"decrypt":[15,28,36],"dedic":[53,54],"default":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"defin":[8,11,15,18,19,20,21,26,33,34,40,41,53,54,57],"definit":15,"degrad":26,"delai":20,"delegate_to":[17,22,54],"delet":[1,4,5,6,7,8,9,11,13,25],"deliv":12,"deliveri":19,"delpierr":36,"deni":13,"denot":15,"depend":[3,5,6,8,11,12,15,16,19,22,31,32,38,39,40,41,42,43,51,52,57],"deprec":[1,2,3,4,5,6,7,8,9,10,11,13,22,28,36,52,53,57],"der":[15,31,32,50,51,52,55,56,57],"deriv":26,"describ":[1,3,8,23,31,33,34,38,42,47,48,49,51,55],"descript":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"deseri":15,"desir":[5,26],"dest":[5,6,7,9,12,14,17,34,54],"dest_passphras":37,"dest_path":[37,50],"destin":[5,6,7,19,27,28,33,35,36,37,40,41,44,50,53],"destroi":26,"detail":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"detect":[15,35,36],"determin":[1,2,3,4,5,6,7,8,9,11,13,15,19,20,22,25,26,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,57],"determinist":[5,7,46],"dev":[15,26],"devel":15,"develop":[1,2,3,4,5,6,7,8,9,10,11,13,53],"devic":[15,22,25],"devop":28,"df":[40,41,44],"dh":[15,35],"dhparam":[15,35],"dict":52,"dict2item":[5,6,7,9],"dictat":8,"dictionari":[1,2,3,5,6,7,8,9,12,13,16,19,22,26,31,32,33,34,38,39,40,41,42,43,44,51,52,55,56,57],"dictsort":12,"did":[1,5,15,41],"diff":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"diff_mod":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"differ":[5,6,7,10,11,15,18,20,22,27,28,33,35,40,44,50,53,57],"diffi":[25,33,34,36,40,41,44,53,54],"digest":[26,33,34,53,54,55,56,57],"digicert":15,"digit":[5,15,49],"digitalsignatur":[33,34],"direct":25,"directli":[1,2,4,5,6,7,8,9,13,15,18,52,53],"directori":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,53],"dirnam":[15,33,34],"disabl":[1,2,3,4,5,6,7,8,9,10,11,13,19,26,27,39,40,41,53,54],"discard":[15,26],"discourag":[40,41],"discret":[31,32,38,39,42,43,51,52],"discuss":25,"disk":[1,2,4,5,6,7,8,9,11,13,14,15,18,25,33,34,37,39,40,44,53,54],"displai":[22,27,28,33,35,36,37,40,44,50,53,57],"distinguish":19,"distribut":[15,33,34],"distutil":15,"divid":[31,32,38,39,42,43,51,52],"dm":26,"dn":[1,5,6,7,8,9,12,17,18,20,31,32,33,34,38,51,52,53,55,56,57],"dns_content":20,"dns_locat":20,"dns_resource_typ":20,"dns_server":33,"do":[2,5,6,13,15,17,18,19,20,26,27,28,33,35,36,37,39,40,41,44,50,53],"doc":[1,2,3,4,5,6,7,8,9,10,11,13,15,17,18,40,41,53],"docker":[27,28,33,35,36,37,40,44,50,53,57],"docsit":[15,41],"document":[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"doe":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"doesn":[27,28,33,35,36,37,40,44,50,53,57],"domain":[4,5,6,7,8,9,12,15,19,22,25,31,32,38,51,52,55,56,57],"domain_nam":20,"domain_statu":20,"don":17,"done":15,"dot":15,"download":[19,20,53,54],"draft":[5,6,8,15],"drop":15,"dropdown":19,"dropdown1":19,"dropdown2":19,"dropdown3":19,"dropdown4":19,"dropdown5":19,"dsa":[16,18,28,31,32,38,39,40,41,42,43,45,46,51,52],"dst":5,"dt":22,"due":[10,15],"dump":[15,32,36,39,43,52],"dure":[1,2,3,5,8,15,19,27,36],"dv":[1,2,3,4,5,6,7,8,9,10,11,13],"dv90":[1,2,3,4,5,6,7,8,9,10,11,13],"dvc":[31,32,51,52,53],"dynam":[3,33],"e":[20,33,34],"e1":[5,7,40,41,44],"e4":[40,41,44],"e6":[5,7,31,32,38,39,42,43,51,52],"e7":[40,41,44],"e9":[40,41,44],"each":[5,6,7,8,17,19,24,40,41,44],"earlier":[27,53,54],"eastern":19,"eb":[40,41,44],"ec":[1,5,7,15,25,53,54],"ecc":[31,32,38,39,40,41,42,43,51,52],"ecdsa":[28,45,46],"ecparam":[1,2,4,5,6,7,8,9,11,13],"ecs_certif":[15,20,25],"ecs_domain":[15,25],"ed":[40,41,44],"ed25519":[15,16,28,31,32,38,39,40,41,42,43,45,46,51,52],"ed448":[15,16,31,32,38,39,40,41,42,43,45,46,51,52],"eddsa":[40,41],"editor":[3,5,6,8],"ee":[31,32,33,34,40,41,44,51,52],"ef":[5,7,40,41,44],"effect":[4,6,19],"either":[1,2,3,4,5,6,7,8,9,10,11,13,19,20,26,27,28,32,33,34,35,36,37,39,40,43,44,45,46,50,52,53,54,56,57],"eku":19,"element":[1,2,5,6,7,8,9,14,16,19,20,22,24,27,31,32,33,34,36,38,39,42,43,48,51,52,55,56,57],"elig":[19,20],"ellipt":[1,2,4,5,6,7,8,9,11,13,15,16,28,31,32,38,39,40,41,42,43,51,52],"els":[17,36],"email":[2,5,19,20,31,32,33,34,38,51,52,53,54,55,56,57],"email1":19,"email2":19,"email3":19,"email4":19,"email5":19,"email_address":[33,34],"emailaddress":[31,32,33,34,51,52],"empti":[1,5,7,15,16,49],"emul":53,"en":[53,54],"enabl":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,27,33,34],"encipher":[31,32,33,34,51,52,53],"enclos":[5,6,7,9],"encod":[2,5,6,8,13,15,19,22,26,31,32,36,38,40,41,45,46,50,51,52,55,56,57],"encount":[13,15],"encrypt":[1,2,3,4,5,6,7,8,9,10,11,13,15,22,25,28,36,37,40,41,50,53],"encryption_level":[15,36],"end":[2,3,5,15,19,27,28,33,35,36,37,40,44,50,53],"end_user_key_storage_agr":19,"endpoint":[1,2,3,4,5,6,7,8,9,10,11,13,15],"enforc":[5,15],"enhanc":15,"enough":[1,2,3,4,5,6,7,8,9,10,11,13,15,27,28,33,35,36,37,40,44,50,53],"ensur":[5,7,9,15,19,27,28,33,35,36,37,40,44,50,53,57],"entri":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,20,22,24,31,32,51,52,53,57],"entrust":[15,25,53,54],"entrust_api_client_cert_key_path":[19,20,53,54],"entrust_api_client_cert_path":[19,20,53,54],"entrust_api_kei":[19,20,53,54],"entrust_api_specification_path":[19,20,53,54],"entrust_api_us":[19,20,53,54],"entrust_cert_typ":[53,54],"entrust_not_aft":[53,54],"entrust_requester_email":[53,54],"entrust_requester_nam":[53,54],"entrust_requester_phon":[53,54],"entrustcloud":[19,20,53,54],"enumer":[15,55,56],"environ":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,53],"equalto":13,"equival":[15,27,28,40,57],"error":[1,5,6,7,8,9,10,11,13,15,16,19,26,53],"especi":[5,40],"essiv":26,"est":[19,53,54],"etc":[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,32,33,34,35,36,37,39,40,43,44,50,52,53,54,56,57],"ev":20,"ev_code_sign":19,"ev_days_remain":20,"ev_elig":20,"ev_ssl":[19,53,54],"evagxfads6psrb2lav9izf17dt3juxgj":[5,6],"even":[5,11,19,26,27,28,35,36,40,44,53,54],"event":3,"ever":[1,2,3,4,5,6,7,8,9,10,11,13],"everi":[5,6,7,8,9,15,19,20,24,28,31,32,33,34,37,38,39,40,41,42,43,50,51,52,53,54,57],"everyth":[40,41,57],"exact":[20,57],"exactli":[3,11,22,28,31,32,37,49,50,51,52],"exampl":[15,17,18],"example1":20,"example2":20,"example_fil":[45,46],"examplehost":27,"except":[5,6,12,13,15,22,28,31,32,33,34,36,40,41,51,52,57],"exclud":[5,7,27,31,32,33,34],"excluded_subtre":15,"exclus":[1,2,4,5,6,7,8,9,10,11,12,13,26,33,34,36,53,54,57],"execut":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"exist":[1,2,4,5,6,7,8,9,10,11,12,13,15,17,19,26,27,28,33,34,35,36,37,40,41,44,50,53,54,57],"exit":10,"expand":19,"expect":[15,20,40,41,52,53,54,57],"experi":[1,2,3,4,5,6,7,8,9,10,11,13,15],"experiment":5,"expir":[1,5,8,10,13,18,19,20,22,51,52,53,54,57],"expire_dai":22,"expiri":[1,19,53,54],"explain":3,"explanationurl":3,"explicit":[15,26],"explicitli":[1,2,3,4,5,6,7,8,9,10,11,13,15,37,39,40],"expon":[31,32,38,39,42,43,51,52],"exponent_s":[31,32,38,39,42,43,51,52],"export":[36,37,40,41,50],"express":27,"extend":[15,17,19],"extended_key_usag":[31,32,33,34,51,52,53],"extended_key_usage_crit":[31,32,33,34,51,52],"extended_key_usage_strict":53,"extendedkeyusag":[33,34],"extendedkeyusage_crit":[33,34],"extens":[3,5,6,7,8,9,10,12,13,15,22,28,31,32,33,34,51,52,55,56,57],"extensions_by_oid":[31,32,51,52,53],"extern":[2,5,9,15],"external_account_bind":[2,15],"extkeyusag":[33,34],"extkeyusage_crit":[33,34],"extra":15,"extract":[5,6,22,31,32,38,51,52,57],"f":27,"f0":[31,32,38,39,40,41,42,43,44,51,52],"f1":[31,32,38,39,40,41,42,43,44,51,52],"f3":[5,7],"f5":[40,41,44],"f6":[31,32,38,39,40,41,42,43,44,51,52],"f7":[31,32,38,39,42,43,51,52],"f8":[40,41,44],"f9":[31,32,38,39,42,43,51,52],"fa":[5,7],"fact":2,"fad4":26,"fail":[1,2,4,5,6,7,8,9,10,11,13,15,19,27,28,31,32,33,35,36,37,38,39,40,41,44,50,51,52,53,55,56,57],"fail_on_acme_error":13,"failur":[15,19,22],"fake":39,"fall":[1,2,3,4,5,6,7,8,9,10,11,13,27,28,33,35,36,37,40,44,50,53,57],"fallback":15,"fals":[1,2,3,4,5,6,7,8,9,10,11,13,15,16,17,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,44,45,50,51,52,53,54,55,56,57],"faq":40,"far":[1,2,3,4,5,6,7,8,9,10,11,13],"favor":15,"fd":[40,41,44],"fe":[40,41,44],"featur":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"fed":[27,28,33,35,36,37,40,44,50,53,57],"fedora":15,"feedback":[1,2,3,4,5,6,7,8,9,10,11,13,15],"felix":[1,2,3,4,6,7,8,9,10,11,12,13,14,16,23,24,31,32,33,34,37,38,39,40,41,42,43,44,47,48,49,50,51,52,54,55,56,57],"felixfontein":[1,2,3,4,6,7,8,9,10,11,12,13,14,16,23,24,31,32,33,34,37,38,39,40,41,42,43,44,47,48,49,50,51,52,54,55,56,57],"fetch":[1,8],"fetch_url":15,"fewer":[20,53,54],"ff":[5,7,15,31,32,33,34,38,39,42,43,51,52],"field":[1,2,3,5,6,7,8,9,10,12,13,14,15,16,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,56,57],"file":[1,2,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,22,23,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,55,56,57],"file_cont":20,"file_loc":20,"filenam":[14,19,24,27,28,33,35,36,40,44,53,57],"filesystem":[26,27,28,33,35,36,37,40,44,50,53,57],"fill":[33,34],"filter":[5,6,19,22,24,26,27,32,33,34,39,43,50,52,56,57],"final":[1,5,6,8,9,15,25],"finalization_uri":5,"find":[5,7,14,20],"fine":22,"fingerprint":[15,25,28,31,32,38,39,40,41,42,43,44,51,52],"fip":[15,28],"first":[5,6,7,9,12,13,15,18,19,20,22,26,36,52],"fix":28,"fixed_timestamp":53,"flag":[22,27,28,33,35,36,37,40,44,50,53,57],"flexibl":15,"float":[10,19,26],"follow":[1,2,3,4,5,6,7,8,9,10,12,13,14,16,17,19,20,21,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"fontein":[1,2,3,4,6,7,8,9,10,11,12,13,14,16,23,24,31,32,33,34,37,38,39,40,41,42,43,44,47,48,49,50,51,52,54,55,56,57],"foo":[5,26,27],"footer":50,"forc":[5,10,15,19,27,28,33,35,36,37,40,41,44,50,53,54,57],"force_remove_last_kei":26,"forev":27,"form":[5,7,14,15,19,22,31,32,47,49,51,52,55,56,57],"format":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,22,25,26,27,28,31,32,36,37,38,39,40,41,44,50,52,53,54,56,57],"format_mismatch":[15,40,41],"forum":25,"forward":[15,19,27],"found":[1,2,3,4,5,6,7,8,9,10,11,13,15,16,20,22],"fqcn":[52,53],"fr":33,"fragment":15,"frame":13,"free":19,"friendli":36,"friendly_nam":36,"from":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,17,18,19,20,25,26,27,28,32,33,34,35,36,37,39,40,41,43,46,50,52,53,54,56,57],"fulfil":[5,6,7,8,9],"full":[1,2,3,4,5,6,7,8,9,10,11,14,16,19,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"full_chain":[5,7],"full_chain_path":[15,19],"full_idempot":[15,27,28,40,41],"full_nam":[15,33,34],"fullchain":[5,6,7,9,13,14],"fullchain_dest":[5,6,7,9,13,15],"fulli":15,"function":[5,7,9,15,19,26,27,28,33,35,36,37,40,44,50,53,57],"further":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"furthest":[5,7],"futur":[15,19,22],"g":[27,28,31,32,33,35,36,37,38,39,40,42,43,44,50,51,52,53],"galaxi":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"gatewai":15,"gather":5,"gdelpierr":36,"gener":[5,8,12,14,15,19,22,25,26,31,32,37,39,43,45,46,50,51,52,56],"genkei":[1,2,4,5,6,7,8,9,11,13],"genrsa":[1,2,4,5,6,7,8,9,13],"get":[1,2,3,4,5,6,7,8,9,10,11,13,19,25,27,28,32,33,35,36,37,39,40,43,44,50,52,53,56,57],"get_cert_inform":15,"get_certif":[15,25],"get_certificate_chain":[15,22],"get_csr_identifi":15,"get_ordered_csr_identifi":15,"getsop":41,"github":[15,22,25,41],"give":[1,27,28,33,35,36,37,40,44,50,53],"given":[1,2,4,5,6,7,8,9,11,12,13,25,26,33,34,45],"gmt":[13,53,54],"gnupg":[23,24],"googl":22,"got":[1,2,3,4,5,6,7,8,9,10,11,13],"gpg":[15,25],"gpg_fingerprint":[15,25],"gplv3":15,"gr":[1,2,3,4,5,6,7,8,9,10,11,13],"gracefulli":15,"greater":[20,27],"group":[1,2,4,5,6,7,8,9,11,13,15,27,28,31,32,33,35,36,37,38,39,40,42,43,44,50,51,52,53,57],"gruener":5,"guarante":19,"guenan":[32,33,34,39,40,41,44,52,53,54],"guid":[17,18,41],"guillaum":36,"h":[10,22,27,52,53,54,57],"ha":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,24,26,27,28,29,30,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,55,56,57],"handl":[5,6,15,31,32,51,52,55,56,57],"hang":15,"happen":[1,2,4,5,6,7,8,9,11,13,15],"hardwar":19,"harica":[1,2,3,4,5,6,7,8,9,10,11,13],"has_dsa":16,"has_dsa_sign":16,"has_ec":16,"has_ec_sign":16,"has_ed25519":16,"has_ed25519_sign":16,"has_ed448":16,"has_ed448_sign":16,"has_expir":53,"has_rsa":16,"has_rsa_sign":16,"has_x25519":16,"has_x25519_seri":16,"has_x448":16,"hash":[26,31,32,38,39,42,43,51,52],"hashi":[5,6,7,9],"hashi_vault":[5,6,7,9],"hashlib":[40,41,44],"have":[1,2,3,4,5,6,7,8,9,10,11,13,15,18,19,20,21,27,28,33,35,36,37,38,39,40,41,44,49,50,53,54,57],"head":[1,2,3,4,5,6,7,8,9,10,11,13],"header":[5,7,12,13,15,50],"hellman":[25,33,34,36,40,41,44,53,54],"help":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"helper":15,"here":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"hex":[15,19,22,25,27,31,32,33,34,51,52,55,56,57],"hexadecim":[31,32,49,51,52],"hh":27,"high":[15,22],"higher":[16,19],"home":28,"host":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,20,25,26,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"hostmast":20,"hostnam":[1,22],"how":[5,6,8,12,15,20,22,25,26,31,32,33,34,38,40,51,52,53,55,56,57],"howev":[19,26,27,28,33,35,36,37,40,44,50,53,57],"hs256":2,"hs384":2,"hs512":2,"ht210176":[53,54],"html":[2,3,5,6,8,13,15,33,34,40,41],"http":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,19,20,22,27,33,34,40,41,53,54],"http01challeng":13,"httpd":[3,5,6,7,9,10,11,12,13],"hunter2":54,"i":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"iana":[40,41],"id":[5,6,8,10,13,15,19,20,27,28,33,35,36,37,40,44,50,53,57],"id_ed25519":28,"id_ssh_dsa":28,"id_ssh_rsa":28,"idea":[5,6,7],"idempot":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"ident":[5,6,7,15,27],"identif":15,"identifi":[1,2,5,6,7,8,9,10,12,15,19,26,27,31,32,33,34,51,52,53,54],"identifier_typ":[6,9,12],"identrust":5,"idn":[15,31,32,51,52,55,56,57],"idna":[15,31,32,38,51,52,55,56,57],"idna2003":[15,31,32,38,51,52,55,56,57],"idna2008":[15,31,32,38,51,52,55,56,57],"ietf":[2,5,6,13,33,34],"ignor":[1,2,5,14,15,19,27,28,31,32,33,34,36,38,41,48,51,52,53,54,55,56,57],"ignore_timestamp":[15,27,53,54,57],"ilirfxkkxa":[5,6],"im":25,"implement":[5,6,10,15,41,53,54],"import":[1,2,4,5,6,7,8,9,10,11,13,15,16,27,28,33,34,35,36,37,40,44,50,53,57],"improv":15,"inc":[18,19],"includ":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"include_renewal_cert_id":[4,5,10,15],"inclus":15,"incommon":[1,2,3,4,5,6,7,8,9,10,11,13],"incompat":[10,15],"inconsist":[27,28,33,35,36,37,40,44,50,53,57],"increas":15,"indic":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"individu":[5,6,7,27],"infinit":15,"influenc":[27,28,33,35,36,37,40,44,50,53,57],"info":[3,15,27,31,32,51,52],"inform":[2,5,6,7,9,10,11,12,13,15,16,18,19,20,22,25,27,28,33,34,35,36,37,40,41,44,50,53,54],"infrastructur":15,"inherit":15,"initi":[19,22],"initial_verif":20,"inlin":[33,34,44,54],"input":[14,15,20,36,50],"input_chain":14,"insecur":22,"insert":15,"insid":[27,28,33,35,36,37,40,44,50,53,57],"instal":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"instead":[1,2,3,4,5,6,7,8,9,10,11,13,15,18,26,27,33,34,40,41,57],"instruct":[17,20],"integ":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,20,22,25,26,27,28,31,32,33,34,35,36,38,39,40,41,42,43,51,52,53,54,55,56,57],"intend":[15,53,54],"interact":[32,39,43,52,53,54],"interest":57,"interfac":15,"intermedi":[5,6,7,9,14,15,19,36,41,53],"intermediate_certif":14,"intern":[15,22,26],"internalion":15,"internet":15,"interoper":[40,41],"interpret":[10,27,47,52,53,54,57],"interv":10,"invalid":[1,4,5,7,8,9,15,19,48,55,56,57],"invalid_at":53,"invalidity_d":[55,56,57],"invalidity_date_crit":[55,56,57],"invalidityd":15,"inventori":19,"investig":[5,6,13],"invoc":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"invoic":19,"io":26,"ip":[1,5,6,8,9,12,15,22,31,32,33,34,51,52],"ipaddress":[1,2,3,4,5,6,7,8,9,10,11,13,15],"irc":25,"iso8601":22,"isrg":5,"issu":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"issuanc":[19,53,54],"issuer":[5,7,14,15,22,31,32,33,34,51,52,53,55,56,57],"issuer_crit":[55,56,57],"issuer_ord":[15,51,52,55,56,57],"issuer_strict":53,"issuer_uri":[15,51,52],"item":[5,6,7,9,12,33,36,48],"iter":26,"iter_s":[15,36],"iteration_count":26,"iteration_tim":26,"its":[1,2,4,5,6,7,8,9,10,11,13,14,15,17,19,20,23,25,26,27,28,33,34,35,36,37,40,41,43,50,53,54],"itself":[4,5,6,7,8,22,57],"itsupport":19,"iv":22,"jan":26,"japokorn":26,"jdoe":[19,33,53],"jinja":[5,6],"jinja2":[5,6],"jo":[19,53],"job":53,"john":22,"join":[14,22,31,38,51],"jsmith":19,"json":[1,13,15,19,22,55,56],"just":[27,28,33,35,36,37,40,44,50,53,57],"kainz":[27,28],"keep":[5,6,15,19,20,40,53,54],"kei":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,25,26,27,31,32,33,34,35,36,45,46,47,48,49,50,51,52,53,54,55,56,57],"kernel":26,"key1":[31,38,51,55],"key2":[31,38,51,55],"key_compromis":[33,34,55,56,57],"key_is_consist":39,"key_usag":[17,31,32,33,34,51,52,53],"key_usage_crit":[17,31,32,33,34,51,52],"key_usage_strict":53,"keyagr":[33,34],"keycertsign":17,"keychang":13,"keycompromis":11,"keyfil":26,"keyfile2":26,"keygen":[15,27,28],"keypair":[15,28],"keypair_backend":15,"keyrevocationlist":27,"keysiz":[15,26,40],"keyslot":[15,26],"keyusag":[33,34],"keyusage_crit":[33,34],"keyword":[27,41,52,53],"kid":2,"kilobyt":26,"kind":18,"know":[1,2,4,5,6,7,8,9,11,13,33,34],"known":[5,6,19,20,26,27,28,31,32,33,35,36,37,38,39,40,42,43,44,50,51,52,53,55,56,57],"kty":[1,13],"l":[27,33,34],"label":[15,26,31,32,38,51,52,55,56,57],"lang":15,"larg":[55,56],"last":[5,7,9,22,26,31,32,51,52,55,56,57],"last_upd":[55,56,57],"later":[15,26],"latest":[5,15,40,41,57],"latter":15,"layer":6,"le":13,"lead":[5,6,7,27,28,33,35,36,37,40,44,50,53,57],"leaf":[5,7,14],"least":[5,9,15,19,33,34,45,46],"leav":[5,6,17,39],"left":[5,10,19,27,28,33,35,36,37,40,44,50,53,57],"legaci":22,"legacy_cert":22,"length":[13,28,53],"less":[1,2,4,5,6,7,8,9,10,11,13,20,27],"let":[1,2,3,4,5,6,7,8,9,10,11,13,15,53],"letsencrypt":[1,2,3,4,5,6,7,8,9,10,11,13,15,53],"letter":[15,49],"level":[20,27,28,33,35,36,37,40,44,50,53,57],"libera":25,"libpkcs11":27,"librari":[1,2,3,4,5,6,7,8,9,10,11,13,15,16,22,27,28,31,32,33,34,35,36,38,39,40,41,43,44,45,46,51,52,53,54,55,56,57],"libressl":22,"libssl":[15,16],"licens":15,"lifetim":[19,53,54],"like":[2,5,7,8,15,18,53,54],"limit":[5,6,7,9,11,15,26,27],"line":[1,2,4,5,6,7,8,9,13,15,26],"linux":15,"list":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,48,50,51,52,53,54,55],"list_revoked_certif":[15,55,56],"load":[3,10,15,32,37,39,43,52],"loader":15,"local":[1,2,3,4,5,6,7,8,9,10,11,13,19,20,23,24,31,38,51,53,54,55],"localhost":[13,22,33,54],"locality_nam":[33,34],"localitynam":[33,34],"locat":[13,19,20,53,56,57],"lock":26,"log":[15,19,27,38,39,40,41],"logarithm":[31,32,38,39,42,43,51,52],"logic":15,"lolcub":[27,28],"long":[5,15,20,22],"longer":[5,15,26,33,34,39],"look":[8,15,27,28,33,35,36,37,40,44,50,53,57],"lookup":[5,6,7,9,14,23,31,34,38,41,42,48,51,54,55],"loop":[5,6,7,9,12,15,27,28,33,35,36,37,40,44,48,50,53],"loop0":26,"lot":15,"lowercas":13,"lsattr":[27,28,33,35,36,37,40,44,50,53,57],"lsblk":[15,26],"luk":[15,25],"luks1":26,"luks2":[15,26],"luks_devic":[15,25],"lv":[19,20,53],"m":[10,13,22,27,33,34,52,53,54,57],"mac":[2,36],"machin":[39,53,54],"maciter_s":[15,36],"maco":[53,54],"made":[3,19,20,27],"mai":[3,5,6,7,8,19,27,28,33,34,35,36,37,40,44,50,53,54],"mailto":[1,2,13],"main":[5,6,7,15],"mainli":27,"mainten":15,"major":15,"make":[2,5,6,8,13,15,19,22,26,28,38,39,40,41,45,46,52,57],"malform":[15,22,31,32,51,52],"mamcaqu":[31,32,51,52],"man":[27,28,33,35,36,37,40,44,50,53,57],"manag":[2,5,6,7,8,9,11,12,13,15,19,25,44],"mandatori":[53,54,57],"mani":[15,20,22,25,57],"manner":[27,28,33,35,36,37,40,44,50,53,57],"manual":[13,15,20],"map":[5,6,7,8,9,19,33,52],"mark":[5,15,33,34],"marku":[45,46,52,53,54],"markup":15,"markusteufelberg":[45,46,52,53,54],"mass":3,"match":[1,2,4,5,6,7,8,9,11,13,14,20,27,28,33,34,35,40,41,50,53,57],"materi":[17,39,41],"math":15,"matrix":[15,25],"max":13,"maxim":[40,41],"maximum":[15,19,31,32,38,39,42,43,51,52,53,54],"mc":[27,28,33,35,36,37,40,44,50,53,57],"md5":[40,41,44],"me":[1,2,13],"mean":[5,6,9,15,19,45],"mechan":[8,36],"meet":27,"memori":[15,26],"mention":[1,2,3,4,5,6,7,8,9,10,11,13,36],"messag":[5,15],"meta":[13,15],"metadata":26,"method":[13,15,20,27,28,33,35,36,37,40,44,50,53,57],"mgruener":5,"michael":5,"might":[1,2,4,5,6,7,8,9,11,13,15,22,37,39,40,41,44,57],"migrat":[15,19],"millisecond":26,"minim":[15,40,41],"minimum":[19,28,53,54],"minut":[15,53,54,57],"misbehavior":15,"misissu":10,"mismatch":[15,28,40,41],"mistak":15,"mix":15,"mkbctnickusdii11yss3526idz8aito7tu6kpaqv7d4":1,"ml":[27,28,33,35,36,37,40,44,50,53,57],"mm":27,"mode":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"model":19,"modifi":[1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,25,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"modify_account":[2,5,15],"modul":[0,17,18,29,30,31,38,42,51,55],"module_backend":15,"module_default":[1,2,4,5,6,7,8,9,11,13],"module_util":15,"modulu":[31,32,38,39,42,43,51,52],"monitor":19,"month":[19,53,54],"more":[5,6,14,15,19,20,22,27,33,34,36,53,54,57],"moreov":15,"most":[5,6,15,26],"mostli":[33,34],"mount":[27,28,33,35,36,37,40,44,50,53,57],"move":[1,2,4,5,6,7,8,9,11,13,15,19,52,53,54],"msg":[10,13,22,23,24,31,38,41,42,47,48,49,51,55,56],"multipl":[5,6,7,15,17,18,19,25,31,32,33,34,36,38,39,42,43,50,51,52],"must":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,17,19,20,26,27,28,31,32,33,34,35,36,37,39,40,41,43,44,45,46,50,51,52,53,54,56,57],"mutual":[1,2,4,5,6,7,8,9,10,11,12,13,26,33,34,36,53,54,57],"my":[5,7,40,56,57],"mycrypt":26,"myself":[2,5],"mysql":22,"n":[1,3,8,10,12,13,14,16,22,32,39,43,45,52,56],"na":19,"naiv":15,"name":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"name_constraint":[31,32],"name_constraints_crit":[31,32,33,34],"name_constraints_exclud":[15,31,32,33,34],"name_constraints_permit":[15,31,32,33,34],"name_encod":[15,31,32,38,51,52,55,56,57],"namespac":20,"necessari":[5,6,7,9,15,27],"need":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"neg":49,"negoti":6,"neither":19,"net":[19,20,53,54],"netmask":27,"network":[15,25,47],"never":[5,7,12,20,22,27,28,40,41,49,53,54,57],"never_cr":[53,54],"new":[1,2,3,4,5,6,7,8,9,10,11,12,13,16,17,19,20,23,24,26,27,28,31,33,34,35,36,37,38,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57],"new_account_kei":2,"new_account_key_cont":2,"new_account_key_passphras":2,"new_account_key_src":2,"new_keyfil":[15,26],"new_keyslot":[15,26],"new_passphras":[15,26],"newaccount":13,"newer":[15,22,25,27,39,40,41,45,46],"newli":[27,28,33,35,36,37,40,44,50,53],"newlin":15,"newnonc":13,"neword":[8,13],"next":[3,5,6,15,22,26,39,46],"next_upd":[55,56,57],"nginx":[12,13],"nmiicijanbgkqhkig9w0baqefaaocag8a":[31,32,38,39,51,52],"no_log":[5,15,40,41],"node":[1,2,4,5,6,7,8,9,11,13,23,24,31,38,51,55],"non":[5,15,16,19,27,49],"nonc":[13,15],"none":[1,2,4,5,6,7,9,11,12,13,15,19,20,22,26,31,32,33,34,35,36,37,39,40,41,44,46,50,51,52],"nor":19,"not_aft":[15,22,51,52,53],"not_befor":[15,22,51,52,53],"notaft":[1,8,51,52],"notbefor":[1,8,51,52],"note":[14,17,25,26,27,31,32,35,36,37,38,39,40,41,50,51,55],"notic":19,"notif":19,"notion":[53,54],"nov":13,"novemb":13,"now":[5,6,10,15,18,19,27,53,54,57],"nowadai":[53,54],"number":[5,10,15,19,20,22,25,26,27,28,31,32,33,34,35,36,37,38,39,40,42,43,44,50,51,52,53,54,55,56,57],"number1":19,"number2":19,"number3":19,"number4":19,"number5":19,"numer":[27,28,33,35,36,37,40,44,50,53,57],"o":[5,10,19,22,27,28,33,34,35,36,37,40,44,50,53],"oa":[5,6],"object":[1,3,4,5,6,7,8,9,13,15,25,27,28,33,35,36,37,40,44,50,53,57],"object_list":1,"obtain":[3,4,6,7,9,10,15,19,20,22,25],"occur":[1,5,8,15,57],"ocsp":[31,32,33,34,51,52],"ocsp_must_stapl":[31,32,33,34,51,52],"ocsp_must_staple_crit":[31,32,33,34,51,52],"ocsp_uri":[51,52],"ocspmuststapl":[33,34],"ocspmuststaple_crit":[33,34],"octal":[27,28,33,35,36,37,40,44,50,53],"octet":[15,57],"offer":[5,7,17,18],"offici":[22,50],"offload":26,"offset":15,"oid":[15,31,32,51,52],"ok":13,"old":[5,15,19,33,34,52,53,57],"older":[5,15,26,36,37,40,41,44,53],"omit":[2,15,17,26,27,28],"on_error":7,"on_success":7,"onc":[5,8,10,53,54,57],"one":[2,3,5,6,7,8,9,11,14,15,17,19,20,22,24,27,28,31,32,33,34,35,36,37,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"one_day_ten_hour":53,"ones":[33,34,35],"ongo":5,"onli":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,44,45,46,50,51,52,53,54,55,56,57],"onward":[53,54],"op":22,"op_al":22,"op_cipher_server_prefer":22,"op_enable_middlebox_compat":22,"op_legacy_server_connect":22,"op_no_compress":22,"op_no_sslv3":22,"open":[15,26],"opensourc":15,"openssh":[15,25,44],"openssh_":15,"openssh_cert":[15,25],"openssh_keypair":[15,25,44],"opensshbin":28,"openssl":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,22,25,50,51],"openssl_":15,"openssl_certif":[15,53],"openssl_certificate_info":[15,52],"openssl_csr":[5,6,7,15,18,19,25,32,34,35,36,40,41,44,53,54],"openssl_csr_info":[15,25,33,34,53],"openssl_csr_pip":[5,6,7,15,17,18,25,32,33,40,41,44,53,54],"openssl_dhparam":[15,25,33,34,36,40,41,44,53,54],"openssl_pkcs12":[15,25,33,34,35,40,41,44,53,54],"openssl_pres":16,"openssl_privatekei":[1,2,4,5,6,7,8,9,13,15,17,18,19,25,33,34,35,36,37,39,41,43,44,46,53,54],"openssl_privatekey_convert":[15,25],"openssl_privatekey_info":[15,25,40,41,43,53],"openssl_privatekey_pip":[1,2,4,5,6,7,8,9,13,15,25,33,34,37,39,40,44,53,54],"openssl_publickei":[15,25,33,34,35,36,37,40,41,43,53,54],"openssl_publickey_info":[15,25],"openssl_signatur":[15,25,45],"openssl_signature_info":[15,25,46],"oper":[5,6,7,9,19,25,26,27,28,33,35,36,37,40,44,50,53,57],"opt":36,"option":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,22,26,27,28,33,34,35,36,37,40,41,44,50,52,53,54,57],"order":[1,5,13,15,19,22,25,26,27,28,31,32,33,34,35,36,37,38,39,40,42,43,44,47,50,51,52,53,55,56,57],"order_creation_error_strategi":[5,6,15],"order_creation_max_retri":[5,6,15],"order_info":8,"order_uri":[1,4,5,6,7,8,9,13,15],"org":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,33,34,53,55,56,57],"organ":[19,55],"organiz":19,"organization_nam":[18,33,34],"organizational_unit_nam":[33,34],"organizationalunitnam":[33,34],"organizationnam":[33,34,51,52,55,56,57],"origin":[5,6,7,8,9,15,19,22,31,32,33,35,36,37,40,44,50,51,52,53,57],"other":[1,2,4,5,6,7,8,9,11,13,15,19,22,27,28,33,34,35,36,37,40,41,44,50,51,52,53,56,57],"other_certif":[15,36],"other_certificates_cont":[15,36],"other_certificates_parse_al":[15,36],"othernam":[15,33,34],"otherwis":[8,13,19,22,26,27,28,31,32,33,35,36,37,40,44,50,51,52,53,55,56,57],"ou":[19,22,33,34],"our":[17,54],"out":5,"output":[5,6,13,15,16,19,27,36,40,41],"output_json":13,"output_text":13,"outsid":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"ov":20,"ov_days_remain":20,"ov_elig":20,"over":5,"overrid":[15,19],"overridden":[19,35,36],"overwrit":[33,35,40,53],"overwritten":[15,41],"overwrot":[33,35,36,37,40,44,50,53,57],"own":[5,17,27,28,33,34,35,36,37,40,44,50,53,54,57],"ownca":[15,17,53,54],"ownca_cert":54,"ownca_cont":[15,53,54],"ownca_create_authority_key_identifi":[53,54],"ownca_create_subject_key_identifi":[53,54],"ownca_digest":[53,54],"ownca_not_aft":[17,53,54],"ownca_not_befor":[17,53,54],"ownca_path":[17,53,54],"ownca_privatekei":54,"ownca_privatekey_cont":[15,53,54],"ownca_privatekey_passphras":[17,53,54],"ownca_privatekey_path":[17,53,54],"ownca_vers":[53,54],"owner":[15,19,20,27,28,33,35,36,37,40,44,50,53,57],"ownership":[20,27,28,33,35,36,37,40,44,50,53,57],"p":[1,31,32,38,39,42,43,51,52],"p12":36,"p1y":19,"p2y":19,"p3y":19,"packag":15,"pad":2,"page":[3,27,28,33,35,36,37,40,44,50,53,57],"pai":17,"pair":[15,27,33,34,57],"parallel":[15,26],"param":[5,6,15,35],"paramet":[15,18,23,24,25,42,47,48,49],"pars":[10,13,14,15,22,27,28,31,32,33,35,36,37,39,40,44,47,50,51,52,53],"parsabl":[10,15,50],"parse_seri":[15,25,27,33,34,57],"part":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"partial":[2,5,10,19,20,27,28,35,36,40,41,44,46,53,54,57],"partial_idempot":[27,28,40,41],"particular":40,"particularli":15,"pass":[5,15,17,19,22],"passphras":[15,17,18,26,28,33,34,36,37,38,39,40,41,44,46,53,54,57],"passphrase_encod":[15,26],"password":[15,17,18,19,20,26,28,33,34,36,46,53,54,57],"past":[8,19,51,52],"path":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,48,50,51,52,53,54,55,56,57],"pathlen":[31,32,51,52],"pathlenconstraint":[33,34],"patrick":[45,46],"pattern":[52,53,54,56,57],"pbkdf":[15,26],"pbkdf2":26,"pct92wr":[5,6],"pd_ssl":[19,53,54],"pdf":13,"pebbl":[1,2,3,4,5,6,7,8,9,10,11,13],"pem":[1,2,4,5,6,7,8,9,11,12,13,14,15,17,18,19,22,25,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,52,53,54,56,57],"pend":[1,6,7,8,9,19],"pending_quorum":19,"per":[5,6,15,36],"percentag":10,"perf_no_read_workqueu":[15,26],"perf_no_write_workqueu":[15,26],"perf_same_cpu_crypt":[15,26],"perf_submit_from_crypt_cpu":[15,26],"perform":[5,6,7,9,15,19,20,26,27,28,33,34,35,36,37,40,44,50,53,57],"period":[5,10,53,54],"permiss":[5,7,9,10,15,19,27,28,33,35,36,37,40,44,50,53,57],"permit":[27,31,32,33,34],"permitted_subtre":15,"persist":[15,26],"personallabelnam":26,"pertain":8,"phase":5,"phassphras":[1,2,4,5,6,7,8,9,11,12,13],"phone":[19,53,54],"pichler":[45,46],"pip":15,"pipelin":15,"pkc":[15,25,27,33,34,35,40,41,44,53,54],"pkcs1":[15,28,37,40,41],"pkcs11_provid":27,"pkcs12":[15,36],"pkcs8":[15,28,37,40,41],"pki":[1,2,5,6,7,8,9,11,12,13,16,20],"place":[12,31,32,38,39,42,43,51,52],"placehold":[5,8],"plain":26,"plaintext":26,"platform":15,"playbook":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"pleas":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,17,19,20,22,28,33,34,35,37,40,41,50,53,54],"plugin":[0,19,21,22,23,24,27,29,30,31,32,33,34,38,39,41,42,43,47,48,49,50,51,52,55,56,57],"point":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,19,24,27,31,32,33,34,38,39,42,43,51,52,53,54,55,56,57],"point_1":52,"point_2":52,"pokorni":26,"polici":[8,27,28,33,35,36,37,40,44,50,53,57],"pool":19,"popul":[1,8,15],"port":[6,25,27],"portion":[27,28,33,35,36,37,40,44,50,53,57],"possess":8,"possibl":[5,11,15,19,22,31,32,51,52],"possibli":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"post":[1,2,3,4,5,6,7,8,9,10,11,13,19],"postmast":20,"potenti":[15,39],"pr":15,"practic":19,"pragma":13,"pre":[26,36],"precis":[5,6,7],"preconstruct":20,"predict":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"prefer":[5,7,31,32,38,51,52,55,56,57],"prefix":[1,2,33,34],"prepar":[5,6,9,15,25],"present":[2,5,6,7,8,9,15,19,20,22,26,27,28,31,32,33,34,35,36,40,44,47,51,52,53,57],"preserv":[15,27,28,33,35,36,37,40,44,50,53,57],"prevent":[15,27,28,33,35,36,37,39,40,44,50,53,57],"previou":[5,19,27,28,33,35,36,37,40,44,50,53,57],"primari":[19,20],"prime":[31,32,38,39,42,43,51,52],"princip":27,"principl":[1,2,3,4,5,6,7,8,9,10,11,13],"print":[1,34,48,54,56],"prior":27,"privat":[1,2,4,5,6,7,8,9,11,12,13,15,16,17,18,19,25,27,31,32,33,34,35,36,42,43,45,46,51,52,53,54,55,56,57],"private_data":[38,39],"private_kei":[12,27,41],"private_key_cont":[11,12,15,33,34,36,44],"private_key_format":[15,28],"private_key_passphras":[11,12,15,37],"private_key_src":[11,12],"private_ssl":[19,53,54],"privatekei":[15,33,34,36,37,40,41,44,57],"privatekey_cont":[15,33,34,36,44,46,53,54,57],"privatekey_passphras":[17,18,33,34,36,44,46,53,54,57],"privatekey_path":[15,17,18,32,33,34,36,43,44,45,46,52,53,54,57],"privilege_withdrawn":[33,34,55,56,57],"privilegewithdrawn":11,"probabl":[2,15],"problem":[1,2,3,4,5,6,7,8,9,10,11,13,15],"proce":18,"procedur":17,"process":[1,2,4,5,6,7,8,9,11,13,15,20,26,57],"produc":[5,6],"product":[1,2,3,4,5,6,7,8,9,10,11,13,19,41],"profil":[5,6,8,15],"proper":[5,7,9,15,19,27,28,33,35,36,37,40,44,50,53,57],"properli":[2,13,15],"properti":18,"protect":[15,17,18,26,28,33,34,40,41,44,46,53,54,57],"protocol":[1,2,3,4,6,7,8,9,10,12,13,22,25,28,53],"prove":[8,20],"provid":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,17,18,19,20,22,23,24,25,26,27,28,31,33,34,38,40,41,42,44,50,51,53,54,55,56,57],"proxi":22,"proxy_host":[15,22],"proxy_port":22,"psf":15,"pty":27,"pub":[27,28,43],"public":[1,5,15,19,25,27,31,32,33,34,35,36,37,38,39,40,41,51,52,53,54],"public_account_kei":1,"public_data":[38,39,42,43],"public_kei":[23,24,27,28,31,32,38,39,51,52,53],"public_key_data":[15,31,32,51,52],"public_key_fingerprint":[31,32,38,39,51,52],"public_key_typ":[15,31,32,51,52],"publickei":[15,44],"publicli":[31,32,38,39,42,43,51,52],"publish":15,"pull":15,"pure":20,"purpos":[1,2,3,4,5,6,7,8,9,10,11,13,19,33,34,53,54],"put":[5,6],"py":15,"pyopenssl":[15,36],"python":[15,16,22,31,32,35,36,38,39,43,44,45,46,51,52,53,54,55,56,57],"python3":15,"python_cryptography_cap":16,"python_cryptography_import_error":16,"python_cryptography_instal":16,"pyyaml":[19,20],"q":[31,32,38,39,42,43,51,52],"qa":[1,2,3,4,5,6,7,8,9,10,11,13],"qualiti":15,"queri":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"question":25,"quick_is_not_prim":15,"quot":[5,6,7,9,27,28,33,35,36,37,40,44,50,53],"quote_txt":[5,6,7,9],"r":[27,28,32,33,35,36,37,39,40,43,44,50,52,53],"r4yczxihvjedh2olfjvgi6y5xaytdcwk8vxkyzvyyfm":28,"race":[27,28,33,35,36,37,40,44,50,53,57],"raclett":36,"random":[13,15,20],"rang":[27,28,33,35,36,37,40,44,50,53,57],"rate":[5,6,7,9,11],"rather":[15,19],"raw":[12,13,15,22,37,40,41],"rc":27,"rdp":22,"re":[4,5,6,7,9,15,20,22,28,31,32,33,34,35,36,40,41,44,51,52,53,54,57],"re_verif":20,"reach":[5,6,10],"react":15,"read":[5,6,15,17,26,27,28,33,35,36,37,40,41,44,45,46,50,53,54,57],"readi":[1,8,19],"reason":[1,2,3,4,5,6,7,8,9,10,11,13,33,34,53,54,55,56,57],"reason_crit":[55,56,57],"reasoncod":11,"receiv":[5,19,20,27,28,33,35,36,37,40,44,50,53],"recommend":[2,19,20,53,54],"record":[5,6,7,9,19,20],"red":19,"redirect":[6,15,52,53],"refactor":15,"refer":[15,19],"referenc":19,"reference_appendic":40,"refus":[5,6,27],"regardless":19,"regen":36,"regener":[15,27,28,33,34,35,36,40,41,44,53,54,57],"regex_replac":33,"regist":[1,3,5,6,7,8,9,10,12,13,14,15,16,17,18,22,32,34,39,41,43,45,46,52,53,54,56],"registr":15,"registri":[40,41],"regular":[12,13,15],"regular_certif":12,"reissu":19,"reject":[15,33,34],"rel":[10,13,15,27,33,34,52,53,54,57],"relat":[15,41],"relationship":8,"relative_nam":[15,33,34],"releas":[19,25,27],"relev":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"relicens":15,"remain":[4,5,6,7,9,19,20,26,27],"remaining_dai":[5,10,19],"remaining_percentag":10,"rememb":[27,28,33,35,36,37,40,44,50,53],"remot":[32,39,43,52,53,54,56,57],"remov":[0,1,2,3,4,5,6,7,8,9,10,11,13,26,29,30,36,44,53,57],"remove_from_crl":[55,56,57],"remove_keyfil":[15,26],"remove_keyslot":[15,26],"remove_passphras":[15,26],"removefromcrl":11,"renam":[0,15,29,30,52,53,57],"render":15,"renegoti":22,"renew":[5,6,15,19,25],"renewal_info":3,"repeat":[31,32,36,51,52,55,56,57],"replac":[5,6,8,15,19,41,57],"replaces_cert_id":6,"replai":13,"report":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"repositori":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"repres":[8,19,47],"represent":[49,57],"request":[1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,22,23,24,25,26,27,28,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"request_timeout":[1,2,3,4,5,6,7,8,9,10,11,13,15],"request_typ":19,"requester_email":19,"requester_nam":19,"requester_phon":19,"requir":[15,25,42,47,48,49],"requisit":[1,2,4,5,6,7,8,9,13],"reserv":19,"resid":27,"resolut":15,"resourc":[1,5,6,7,9,12,20],"resource_origin":[5,6],"resource_valu":[5,6,7,9],"resp":[15,53,54],"respect":[15,17,26,31,33,34,38,42,51],"respond":[51,52],"respons":[1,2,3,4,5,6,7,8,9,10,11,13,15,19],"restart":[5,6],"restor":15,"restrict":[2,5,27,33,34],"result":[1,8,11,12,15,17,18,19,22,26,27,28,31,32,33,34,35,36,37,39,40,41,43,44,50,51,52,53,54,55,56,57],"result_csr":53,"result_privatekei":53,"retri":[3,5,6,15],"retriev":[2,5,6,7,9,10,13,15,22,25,33,34,53,54],"retrieve_all_altern":[5,7],"retrieve_ord":[1,15],"retry_without_replaces_cert_id":[5,6],"retryaft":3,"return":[4,11,15],"return_cont":[15,33,35,36,40,44,53,57],"return_current_kei":41,"return_private_key_data":[38,39],"reus":[9,15,19],"revalid":20,"reveal":41,"reverifi":20,"revers":6,"revoc":[3,10,11,15,19,25,33,34,55],"revocation_d":[55,56,57],"revok":[1,2,3,4,5,6,7,8,9,13,15,19,25,55,56,57],"revoke_reason":11,"revokecert":13,"revoked_certif":[15,55,56,57],"rfc":[2,3,5,6,7,8,9,10,11,12,13,15,25,33,34],"rfc1034":6,"rfc3339":[1,19],"rfc3596":6,"rfc5280":[11,33,34],"rfc7633":[33,34],"rfc7807":1,"rfc8555":[2,5,7,8,13,15],"rfc8737":[5,6,8],"rfc9773":3,"rhel":15,"rid":[15,33,34],"right":[5,6],"robust":15,"rocki":15,"role":[5,6,27,28,33,35,36,37,40,44,50,53,57],"room":25,"root":[5,7,15,19,22,25,27,28,33,35,36,37,40,44,50,53,57],"root_certif":14,"rootchain":14,"roughli":18,"rout":12,"route53":[5,6,7,9],"row":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"rsa":[1,2,4,5,6,7,8,9,11,13,15,16,18,27,28,31,32,38,39,40,41,42,43,45,46,51,52],"rsa1":28,"rule":[27,28,33,35,36,37,40,44,50,53],"run":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"run_onc":[17,22],"runtim":15,"rw":[27,28,33,35,36,37,40,44,50,53],"rwx":[27,28,33,35,36,37,40,44,50,53],"sa":13,"safe":36,"safe_file_oper":[5,7,9,19,27,28,33,35,36,37,40,44,50,53,57],"safeti":[1,2,3,4,5,6,7,8,9,10,11,13],"sale":[15,19],"same":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,56,57],"sampl":[1,3,5,6,7,8,9,10,11,12,13,16,19,20,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,50,51,52,53,55,56,57],"sample_com_challeng":[5,6,7,9,12],"sample_com_challenge_cert":12,"san":[15,17,18,19,33,34],"saniti":15,"satisfi":[6,8,9],"save":[19,35],"scan":14,"scheme":26,"sda1":26,"search":12,"second":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"secondari":15,"secp192r1":[15,40,41],"secp224r1":[40,41],"secp256k1":[40,41],"secp256r1":[1,2,4,5,6,7,8,9,13,40,41],"secp384r1":[1,2,4,5,6,7,8,9,13,40,41],"secp521r1":[1,2,4,5,6,7,8,9,13,40,41],"secret":[5,6,7,9,40],"secret_ca_passphras":17,"sect163k1":[40,41],"sect163r2":[40,41],"sect233k1":[40,41],"sect233r1":[40,41],"sect283k1":[40,41],"sect283r1":[40,41],"sect409k1":[40,41],"sect409r1":[40,41],"sect571k1":[40,41],"sect571r1":[40,41],"sectigo":[1,2,3,4,5,6,7,8,9,10,11,13,15],"section":[2,3,5,6,7,8,10,11,13,15,33,34],"sector":[15,26],"sector_s":[15,26],"secur":[1,2,3,4,5,6,7,8,9,10,11,13,19,22,36,53,54],"see":[14,15,17,26,28],"seem":[15,33,34,53],"select":[5,6,7,8,10,12,15,18,28,36,40,41],"select_chain":[5,7,15],"select_crypto_backend":[1,2,3,4,5,6,7,8,9,10,11,13,15,22,32,33,34,35,36,39,40,41,43,44,45,46,52,53,54],"selectattr":13,"selected_chain":7,"selector":15,"selevel":[27,28,33,35,36,37,40,44,50,53,57],"self":[12,17,25,33,34,52,53,54],"selfsign":[15,17,18,52,53,54],"selfsigned_create_subject_key_identifi":[53,54],"selfsigned_digest":[53,54],"selfsigned_not_aft":[18,53,54],"selfsigned_not_befor":[18,53,54],"selfsigned_notaft":[53,54],"selfsigned_notbefor":[53,54],"selfsigned_vers":[53,54],"selinux":[27,28,33,35,36,37,40,44,50,53,57],"semant":15,"semi":15,"send":[5,15,25,36,55,56],"sent":[13,15,20],"separ":[15,19,22,25,26,27,31,32,33,34,51,52,55,56,57],"serial":[15,16,19,22,25,27,31,32,33,34,49,51,52,55,56,57],"serial_numb":[15,19,22,27,51,52,55,56,57],"serol":[27,28,33,35,36,37,40,44,50,53,57],"serv":[5,6,53],"server":[1,2,3,4,5,6,7,8,9,10,11,15,17,19,20,22,25,27,33,34,53,54],"server_1":17,"server_2":17,"server_and_client_auth":19,"server_auth":19,"server_nam":22,"servic":[1,2,3,4,5,6,7,8,9,10,11,13,15,25,53,54],"set":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,19,21,22,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"set_fact":41,"setup":26,"setyp":[27,28,33,35,36,37,40,44,50,53,57],"seuser":[27,28,33,35,36,37,40,44,50,53,57],"sever":15,"sha":27,"sha1":[40,41,44],"sha2":27,"sha224":[40,41,44],"sha256":[26,28,31,32,33,34,38,39,40,41,42,43,44,51,52,53,54,57],"sha256withrsaencrypt":[51,52,53,55,56,57],"sha384":[40,41,44],"sha512":[31,32,38,39,40,41,42,43,44,51,52],"sha512withrsaencrypt":53,"share":[15,27],"shell":27,"short":[52,53],"should":[1,2,3,4,5,6,7,8,9,11,12,13,15,16,19,20,22,25,27,28,31,32,33,34,35,36,37,40,41,44,50,51,52,53,54,56,57],"should_renew":10,"show":[3,8,15,16,17,18,23,24,31,38,41,42,51,53,55],"shown":[3,10,40],"side":[15,39],"sig":[45,46],"sign":[5,6,7,12,15,16,19,22,25,27,35,36,40,41,44,45,51,52,53,54,55,56,57],"signatur":[5,14,15,25,27,31,32,33,34,46,51,52,53,55,56,57],"signature_algorithm":[22,27,51,52,53],"signature_valid":[31,32],"significantli":26,"signing_kei":27,"similar":15,"simpl":[12,17,18],"simpli":[5,6,15],"simplifi":15,"simplified_bsd":15,"sinc":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,17,26,33,34,36,39],"singl":[26,50],"situat":[8,26,28,40,41],"size":[15,18,20,26,28,31,32,35,38,39,40,41,42,43,51,52],"ski":[53,54],"slash":15,"slightli":15,"slot":[15,26],"slower":[1,2,3,4,5,6,7,8,9,10,11,13],"slurp":[17,54],"small":[20,25],"smime_":[19,53,54],"sni":[6,15,22],"so":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,20,22,26,27,28,31,33,35,36,37,38,39,40,41,44,50,51,53,55,57],"socket":15,"softwar":[15,36],"some":[5,8,11,15,22,26,27,28,33,35,36,37,40,41,44,45,46,50,53,55,56],"somedomain":[31,32,33,34],"someth":[5,6,13,15,36,52],"sometim":[8,27,28,33,35,36,37,40,44,50,53,57],"sop":41,"sops_encrypt":41,"sort":15,"sourc":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"span":[31,32,38,39,42,43,51,52],"spdx":15,"spec":26,"special":[15,33],"specif":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,18,19,20,26,33,34,36,52,53,54],"specifi":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"split":[15,25],"split_pem":[15,25],"spredzi":[32,33,34,39,40,41,44,52,53,54],"src":[5,17,36,54],"src_content":[37,50],"src_content_base64":50,"src_passphras":37,"src_path":[37,50],"ss":27,"ssh":[15,27,28],"sshd":27,"sshd_config":27,"ssl":[3,4,6,7,9,10,11,12,13,14,15,20,22,25,32,33,34,35,36,37,39,40,41,43,44,50,52,53,54,56,57],"ssl_preread":12,"ssl_preread_alpn_protocol":12,"st":[33,34],"stabil":15,"stage":[1,2,3,4,5,6,7,8,9,10,11,13,53],"stamp":[31,32,51,52],"standard":[1,2,3,4,5,6,7,8,9,10,11,13,15,19],"standard_ssl":[19,53,54],"stapl":[31,32,33,34,51,52],"start":[3,10,15,18,31,32,38,39,42,43,51,52,53,54],"starttl":[15,22],"stat":17,"state":[1,2,3,5,6,7,8,9,10,12,14,15,16,22,26,27,28,32,33,35,36,39,40,43,44,45,46,52,53,56,57],"state_or_province_nam":[33,34],"stateorprovincenam":[33,34],"statu":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"stdin":15,"step":[5,6,7,9,15,19,36],"still":[1,2,4,5,6,7,8,9,11,13,15,19,20,27,32,39,52,53],"stop":[15,53,54],"store":[1,2,4,5,6,7,8,9,11,13,15,18,19,20,22,26,34,36,37,53,54],"strang":5,"strategi":[3,5,6],"stream":15,"strict":[5,7,9,13,19,27,28,33,35,36,37,40,44,50,53,57],"stricter":15,"strictli":15,"string":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"structur":[1,8],"subdirectori":14,"subdomain":20,"subgroup":[31,32,38,39,42,43,51,52],"subject":[5,6,7,14,15,18,19,22,27,28,31,32,33,34,35,36,37,38,40,44,50,51,52,53,54,55,57],"subject_alt_nam":[17,18,19,31,32,33,34,38,51,52,53],"subject_alt_name_crit":[31,32,33,34,51,52],"subject_alt_name_strict":53,"subject_key_identifi":[5,7,31,32,33,34,51,52],"subject_ord":[15,31,32,33,34,51,52,53],"subject_strict":53,"subjectaltnam":[19,33,34],"subjectaltname_crit":[33,34],"subjectkeyidentifi":[5,7,31,32,51,52],"submiss":20,"submit":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"subscript":19,"subsequ":19,"subtre":[31,32,33,34],"succe":22,"success":[1,3,5,6,7,8,9,10,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57],"successfulli":[7,10],"suffic":26,"suffici":[8,28],"suggest":3,"suggestedwindow":3,"sunset":15,"super_secret_password":28,"supersed":[11,33,34,55,56,57],"suppli":[15,26],"support":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,25,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"supports_ari":10,"sure":[2,5,15,26,28,38,39,40,41,45,46,50,57],"surviv":22,"suspect":[55,56,57],"suspend":19,"switch":[5,15],"symbol":[2,14,15,27,28,33,35,36,37,40,44,50,53],"synchron":26,"system":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"sz":22,"t":[13,15,17,27,28,32,33,35,36,37,39,40,43,44,50,52,53,57],"tag":15,"take":[5,6,19,23,24,27,28,31,32,33,35,38,39,40,42,43,44,51,52,53,55,56,57],"taken":5,"target":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"task":[5,15,19,27,28,40,41,52],"technic":[1,2,3,4,5,6,7,8,9,10,11,13,19],"techniqu":19,"tel":1,"temporari":[1,2,4,5,6,7,8,9,11,13],"ten_second":53,"term":[2,5,13,15],"terms_agre":[2,5],"termsofservic":13,"termsofserviceagre":13,"test":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,20,28,31,32,51,52],"test_certif":[5,7,15],"testcertif":19,"teufelberg":[45,46,52,53,54],"text":[13,15,19,20,26,50],"text1":19,"text10":19,"text11":19,"text12":19,"text13":19,"text14":19,"text15":19,"text2":19,"text3":19,"text4":19,"text5":19,"text6":19,"text7":19,"text8":19,"text9":19,"than":[5,10,11,19,20,27,28,31,32,33,34,36,38,51,52,53,54,55,56,57],"the_csr":54,"thei":[1,2,3,4,5,6,7,8,9,10,11,13,15,20,22,26,28,35,40,41,52,56],"them":[7,15,26,27,28,33,34,35,36,37,40,44,50,53],"themselv":8,"theoret":16,"therefor":[15,28],"thi":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"think":[15,34,41,54],"thom":35,"thomwigg":35,"those":[19,27,28,33,35,36,37,40,44,50,53],"thread":26,"three":[28,52,53,54,57],"through":[5,6,8],"thu":[15,46],"ti":19,"time":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,20,22,26,27,31,32,36,38,39,42,43,51,52,53,54,55,56,57],"timeout":[1,2,3,4,5,6,7,8,9,10,11,13,15,22],"timespec":[10,27,52,53,54,57],"timestamp":[1,3,8,10,12,15,27,33,35,36,37,40,44,50,52,53,54,56,57],"timezon":15,"tini":[15,53],"tl":[1,2,3,4,6,7,8,9,10,11,13,22,25,33,34,36,37,40,41,44,50,53,54],"tld":19,"tls_ctx_option":[15,22],"tmp":[27,28,45,46],"to_datetim":22,"to_json":13,"to_seri":[15,19,22,25,31,32,47,51,52,55,56,57],"togeth":[5,7,26,36],"token":[5,15,27],"tomorrow":52,"too":15,"tool":[1,2,4,5,6,7,8,9,11,13,15,33,34],"top":20,"touch":2,"trace":22,"traceabl":15,"traceback":15,"track":[5,6,19,53,54],"tracker":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"tracking_id":19,"tracking_info":19,"tradit":[40,41],"translat":15,"transpar":19,"transport":[13,39],"treat":[40,52,57],"treat_parsing_error_as_non_exist":[10,15],"tri":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,22,32,33,34,35,36,39,40,41,43,44,45,46,52,53,54],"trigger":[9,10,15],"trim":26,"troubl":15,"true":[1,2,3,4,5,6,7,8,9,10,11,13,15,16,17,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,44,45,50,51,52,53,54,55,56,57],"trufan":[19,20],"trust":[1,2,3,4,5,6,7,8,9,10,11,13,55,56,57],"try":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,22,26,32,33,34,35,36,39,40,41,43,44,45,46,52,53,54],"ttl":[5,6,7,9],"tune":15,"tupl":[31,32,33,34,51,52,55,56,57],"twice":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"two":[5,33,34,49,57],"txt":[5,6,7,9,15,20,27],"type":[1,5,6,7,8,9,12,13,15,18,19,20,26,27,28,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,57],"typic":[20,36],"u":[1,2,3,4,5,6,7,8,9,10,11,13,27,28,33,35,36,37,40,44,50,53,54],"uc_ssl":[19,53,54],"umask":[27,28,33,35,36,37,40,44,50,53],"unalt":15,"unapprov":19,"unavail":15,"unbound":26,"unchang":[11,26],"under":[6,19,20],"understand":[19,26],"undo":15,"unexpect":[27,28,33,35,36,37,40,44,50,53],"unexpir":8,"unicod":[15,31,32,38,51,52,55,56,57],"unintend":19,"uniqu":[1,2,3,5,6,7,8,9,10,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"unit":19,"unix":15,"unknown":[15,28,31,32,38,39,40,41,42,43,51,52],"unless":[15,19,20,26,27,28,33,35,36,37,40,44,50,53,57],"unlock":26,"unnecessari":15,"unread":27,"unsaf":[27,28,33,35,36,37,40,44,50,53,57],"unsafe_writ":[27,28,33,35,36,37,40,44,50,53,57],"unsign":47,"unspecifi":[5,6,11,27,28,33,35,36,37,40,44,50,53,55,56,57],"unstabl":15,"unsupport":[15,33,34],"until":[5,6,7,14,19,22],"untrust":[1,2,3,4,5,6,7,8,9,10,11,13,25],"unus":5,"unverified_chain":22,"up":[5,6,12,15,19,26,27,28,33,35,36,37,40,41,44,50,52,53],"updat":[5,6,13,15,20,27,28,33,35,36,37,40,41,44,50,53,57],"upgrad":15,"upon":[19,31,32,38,39,42,43,51,52],"upper":49,"uri":[1,2,4,5,6,7,8,9,11,13,15,31,32,33,34,38,51,52,55,56,57],"url":[1,2,3,4,5,6,7,8,9,10,11,13,15],"url_list":[1,15],"urn":[5,6],"us":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"usag":[1,5,14,15,18,19,25,26,33,53,54,57],"use_ag":[15,27],"use_ari":10,"use_common_name_for_san":[17,33,34],"usecommonnameforsan":[33,34],"user":[3,5,6,10,15,19,25,26,28,33,35,36,37,40,44,50,53,57],"usernam":[19,20,27,28,33,35,36,37,40,44,50,53,54,57],"usr":[16,27,28,33,35,36,37,40,44,50,53],"usual":[5,6,15,22,27,31,32,51,52],"utc":[10,15,27,52,53,54,56,57],"utf":26,"utf8":[15,33],"util":15,"uuid":[15,26],"v01":[5,6,7,9],"v02":[1,2,3,4,5,6,7,8,9,10,11,13,53],"v1":[1,2,3,4,5,6,7,8,9,10,11,13],"v2":[1,2,3,5,10,11,13,25,44],"valid":[1,2,3,4,5,6,7,8,10,11,12,13,14,15,17,18,19,22,25,27,31,32,33,34,45,46,52,53,54,57],"valid_at":[27,52,53],"valid_from":[15,27],"valid_in":53,"valid_to":[15,27],"validate_cert":[1,2,3,4,5,6,7,8,9,10,11,13],"validate_onli":19,"validating_challeng":9,"valu":[4,11,15],"value1":[31,38,51,55],"value2":[31,38,51,55],"value_specified_in_no_log_paramet":41,"var":[1,3,5,6,7,8,9,10,13,16,22,32,34,39,43,52,54],"variabl":[2,5,6,7,8,9,15,17,32,39],"variant":[32,39,43,52,56],"variou":[10,15],"vault":[5,6,7,9,15,26,41],"vel4e3xcw":28,"vendor":15,"veri":[12,18,56],"verif":[15,20],"verifi":[1,14,15,20,22,25,46,53],"verification_email":20,"verification_method":20,"verified_chain":22,"verify_cert_pars":[15,50],"version":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"version_output":16,"via":[6,15,19,53],"view":[5,6,7],"visibl":15,"volum":26,"w":[10,27,32,39,43,52,53,54,57],"wa":[0,1,5,6,7,8,9,10,11,13,15,17,19,22,26,28,29,30,31,32,33,34,36,39,40,41,44,45,51,52,53,55,56,57],"wai":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"wait":[1,2,3,4,5,6,7,8,9,10,11,13,15],"want":[5,17,18,19,20,26,27,28,33,34,38,39,57],"warn":[1,2,3,4,5,6,7,8,9,10,11,13,15,38,39,52,53],"we":[1,2,3,4,5,6,7,8,9,10,11,12,13,15,17,36,40,41],"web":[1,20],"web_serv":20,"webmast":20,"webserv":[5,6],"websit":13,"wed":13,"week":[27,52],"well":[1,2,4,5,6,7,8,9,11,13,20,36,37,40,41,44,53],"went":[5,6,13],"were":[8,15,20,22],"westcott":22,"what":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"whatev":[5,6],"when":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,55,56,57],"when_ari_support":[5,10],"where":[1,2,4,5,6,7,8,9,10,11,13,15,17,26,27,28,32,33,34,35,36,37,39,40,43,44,50,52,53,54,56,57],"whether":[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"which":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,50,51,52,53,54,55,56,57],"while":[8,15,17,19,20,40,41,53,54],"whoi":20,"whole":[51,52],"whose":[4,5,6,8,9,31,32,38,39,42,43,51,52,54],"why":3,"wigger":35,"wildcard":[1,5,8],"wildcard_ssl":[19,53,54],"window":3,"winrm":33,"wipe":15,"wipef":[15,26],"wish":13,"with_dict":33,"within":[19,20],"without":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,25,26,27,28,32,33,34,35,36,37,39,40,43,44,45,46,50,52,53,54,56,57],"word":[51,52,56],"work":[1,2,3,4,5,6,7,8,9,10,11,13,15,26,27,28,33,35,36,37,39,40,41,44,50,53],"workqueu":26,"would":[5,7,15,27,28,33,35,36,37,40,44,50,53,57],"write":[2,5,6,13,14,15,17,26,27,28,33,35,36,37,40,41,44,50,53,54,57],"written":[1,2,4,5,6,7,8,9,11,13,27,28,33,35,36,37,40,41,44,50,53,57],"wrong":[5,6,13,15],"www":[3,5,6,7,8,9,14,17,18,19,22,27,31,32,33,34,51,52,53,54],"www_ansible_com":14,"x":[1,3,6,10,13,15,22,25,31,32,38,39,42,43,56],"x1":5,"x11":27,"x25519":[16,18,31,32,38,39,40,41,42,43,51,52],"x3":5,"x448":[16,31,32,38,39,40,41,42,43,51,52],"x509":[5,50],"x509_":15,"x509_certif":[15,17,18,20,25,30,33,34,35,36,40,41,44,45,50,52,54],"x509_certificate_convert":[15,25],"x509_certificate_info":[15,25,29,50,53],"x509_certificate_pip":[15,17,25,33,34,40,41,44,50,52,53],"x509_crl":[15,25,56],"x509_crl_info":[15,25],"xxx":[1,2,3,4,5,6,7,8,9,10,11,13,15],"y":[1,22,31,32,38,39,42,43,51,52],"yaml":[19,20,53,54],"yani":[32,33,34,39,40,41,44,52,53,54],"ye":15,"year":[17,18,19,53,54],"yesterdai":17,"yet":[5,6,13,15],"yml":15,"you":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"your":[1,2,3,4,5,6,7,8,9,10,11,13,15,17,19,20,33,34,35,40,41,53,54],"yyyi":27,"yyyymmddhhmmssz":[52,53,54,56,57],"zero":[27,28,33,35,36,37,40,44,50,53],"zerossl":[1,2,3,4,5,6,7,8,9,10,11,13,15],"zone":[5,6,7,9]},"titles":["community.crypto.acme_account_facts","community.crypto.acme_account_info module \u2013 Retrieves information on ACME accounts","community.crypto.acme_account module \u2013 Create, modify or delete ACME accounts","community.crypto.acme_ari_info module \u2013 Retrieves ACME Renewal Information (ARI) for a certificate","community.crypto.acme_certificate_deactivate_authz module \u2013 Deactivate all authz for an ACME v2 order","community.crypto.acme_certificate module \u2013 Create SSL/TLS certificates with the ACME protocol","community.crypto.acme_certificate_order_create module \u2013 Create an ACME v2 order","community.crypto.acme_certificate_order_finalize module \u2013 Finalize an ACME v2 order","community.crypto.acme_certificate_order_info module \u2013 Obtain information for an ACME v2 order","community.crypto.acme_certificate_order_validate module \u2013 Validate authorizations of an ACME v2 order","community.crypto.acme_certificate_renewal_info module \u2013 Determine whether a certificate should be renewed or not","community.crypto.acme_certificate_revoke module \u2013 Revoke certificates with the ACME protocol","community.crypto.acme_challenge_cert_helper module \u2013 Prepare certificates required for ACME challenges such as tls-alpn-01","community.crypto.acme_inspect module \u2013 Send direct requests to an ACME server","community.crypto.certificate_complete_chain module \u2013 Complete certificate chain given a set of untrusted and root certificates","Community.Crypto Release Notes","community.crypto.crypto_info module \u2013 Retrieve cryptographic capabilities","How to create a small CA","How to create self-signed certificates","community.crypto.ecs_certificate module \u2013 Request SSL/TLS certificates with the Entrust Certificate Services (ECS) API","community.crypto.ecs_domain module \u2013 Request validation of a domain with the Entrust Certificate Services (ECS) API","Index of all Collection Environment Variables","community.crypto.get_certificate module \u2013 Get a certificate from a host:port","community.crypto.gpg_fingerprint filter \u2013 Retrieve a GPG fingerprint from a GPG public or private key","community.crypto.gpg_fingerprint lookup \u2013 Retrieve a GPG fingerprint from a GPG public or private key file","Community.Crypto","community.crypto.luks_device module \u2013 Manage encrypted (LUKS) devices","community.crypto.openssh_cert module \u2013 Generate OpenSSH host or user certificates","community.crypto.openssh_keypair module \u2013 Generate OpenSSH private and public keys","community.crypto.openssl_certificate_info","community.crypto.openssl_certificate","community.crypto.openssl_csr_info filter \u2013 Retrieve information from OpenSSL Certificate Signing Requests (CSR)","community.crypto.openssl_csr_info module \u2013 Provide information of OpenSSL Certificate Signing Requests (CSR)","community.crypto.openssl_csr module \u2013 Generate OpenSSL Certificate Signing Request (CSR)","community.crypto.openssl_csr_pipe module \u2013 Generate OpenSSL Certificate Signing Request (CSR)","community.crypto.openssl_dhparam module \u2013 Generate OpenSSL Diffie-Hellman Parameters","community.crypto.openssl_pkcs12 module \u2013 Generate OpenSSL PKCS#12 archive","community.crypto.openssl_privatekey_convert module \u2013 Convert OpenSSL private keys","community.crypto.openssl_privatekey_info filter \u2013 Retrieve information from OpenSSL private keys","community.crypto.openssl_privatekey_info module \u2013 Provide information for OpenSSL private keys","community.crypto.openssl_privatekey module \u2013 Generate OpenSSL private keys","community.crypto.openssl_privatekey_pipe module \u2013 Generate OpenSSL private keys without disk access","community.crypto.openssl_publickey_info filter \u2013 Retrieve information from OpenSSL public keys in PEM format","community.crypto.openssl_publickey_info module \u2013 Provide information for OpenSSL public keys","community.crypto.openssl_publickey module \u2013 Generate an OpenSSL public key from its private key","community.crypto.openssl_signature_info module \u2013 Verify signatures with openssl","community.crypto.openssl_signature module \u2013 Sign data with openssl","community.crypto.parse_serial filter \u2013 Convert a serial number as a colon-separated list of hex numbers to an integer","community.crypto.split_pem filter \u2013 Split PEM file contents into multiple objects","community.crypto.to_serial filter \u2013 Convert an integer to a colon-separated list of hex numbers","community.crypto.x509_certificate_convert module \u2013 Convert X.509 certificates","community.crypto.x509_certificate_info filter \u2013 Retrieve information from X.509 certificates in PEM format","community.crypto.x509_certificate_info module \u2013 Provide information of OpenSSL X.509 certificates","community.crypto.x509_certificate module \u2013 Generate and/or check OpenSSL certificates","community.crypto.x509_certificate_pipe module \u2013 Generate and/or check OpenSSL certificates","community.crypto.x509_crl_info filter \u2013 Retrieve information from X.509 CRLs in PEM format","community.crypto.x509_crl_info module \u2013 Retrieve information on Certificate Revocation Lists (CRLs)","community.crypto.x509_crl module \u2013 Generate Certificate Revocation Lists (CRLs)"],"titleterms":{"0":15,"01":12,"1":15,"10":15,"11":15,"12":[15,36],"13":15,"14":15,"15":15,"16":15,"17":15,"18":15,"19":15,"2":15,"20":15,"21":15,"22":15,"23":15,"24":15,"25":15,"26":15,"3":15,"4":15,"5":15,"509":[50,51,52,55],"6":15,"7":15,"8":15,"9":15,"access":41,"account":[1,2],"acm":[1,2,3,4,5,6,7,8,9,11,12,13],"acme_account":2,"acme_account_fact":0,"acme_account_info":1,"acme_ari_info":3,"acme_certif":5,"acme_certificate_deactivate_authz":4,"acme_certificate_order_cr":6,"acme_certificate_order_fin":7,"acme_certificate_order_info":8,"acme_certificate_order_valid":9,"acme_certificate_renewal_info":10,"acme_certificate_revok":11,"acme_challenge_cert_help":12,"acme_inspect":13,"all":[4,21],"alpn":12,"also":[1,2,3,4,5,6,7,8,9,10,11,12,13,19,20,22,23,24,27,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57],"an":[4,6,7,8,9,13,44,47,49],"api":[19,20],"archiv":36,"ari":3,"attribut":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"author":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"authz":4,"break":15,"bugfix":15,"ca":17,"capabl":16,"certif":[3,5,10,11,12,14,17,18,19,20,22,27,31,32,33,34,50,51,52,53,54,56,57],"certificate_complete_chain":14,"chain":14,"challeng":12,"chang":15,"changelog":25,"check":[53,54],"collect":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,21,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"colon":[47,49],"commun":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"complet":14,"content":48,"convert":[37,47,49,50],"creat":[2,5,6,17,18],"crl":[55,56,57],"crypto":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"crypto_info":16,"cryptograph":16,"csr":[31,32,33,34],"data":46,"deactiv":4,"delet":2,"deprec":15,"descript":25,"determin":10,"devic":26,"diffi":35,"direct":13,"disk":41,"domain":20,"ec":[19,20],"ecs_certif":19,"ecs_domain":20,"encrypt":26,"entrust":[19,20],"environ":21,"exampl":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"featur":15,"file":[24,48],"filter":[15,23,25,31,38,42,47,48,49,51,55],"final":7,"fingerprint":[23,24],"fix":15,"format":[42,51,55],"from":[22,23,24,31,38,42,44,51,55],"gener":[27,28,33,34,35,36,40,41,44,53,54,57],"get":22,"get_certif":22,"given":14,"gpg":[23,24],"gpg_fingerprint":[23,24],"guid":[15,25],"hellman":35,"hex":[47,49],"host":[22,27],"how":[17,18],"index":[21,25],"inform":[1,3,8,31,32,38,39,42,43,51,52,55,56],"input":[23,31,38,42,47,48,49,51,55],"integ":[47,49],"issu":15,"its":44,"kei":[23,24,28,37,38,39,40,41,42,43,44],"keyword":[31,38,51,55],"known":15,"link":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"list":[47,49,56,57],"lookup":[15,24,25],"luk":26,"luks_devic":26,"manag":26,"minor":15,"modifi":2,"modul":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,22,25,26,27,28,32,33,34,35,36,37,39,40,41,43,44,45,46,50,52,53,54,56,57],"multipl":48,"new":15,"note":[1,2,3,4,5,6,7,8,9,10,11,13,15,19,20,22,28,33,34,45,46,52,53,54,56,57],"number":[47,49],"object":48,"obtain":8,"openssh":[27,28],"openssh_cert":27,"openssh_keypair":28,"openssl":[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,52,53,54],"openssl_certif":30,"openssl_certificate_info":29,"openssl_csr":33,"openssl_csr_info":[31,32],"openssl_csr_pip":34,"openssl_dhparam":35,"openssl_pkcs12":36,"openssl_privatekei":40,"openssl_privatekey_convert":37,"openssl_privatekey_info":[38,39],"openssl_privatekey_pip":41,"openssl_publickei":44,"openssl_publickey_info":[42,43],"openssl_signatur":46,"openssl_signature_info":45,"order":[4,6,7,8,9],"paramet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,19,20,22,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"parse_seri":47,"pem":[42,48,51,55],"pkc":36,"plugin":[15,25],"port":[15,22],"prepar":12,"previous":15,"privat":[23,24,28,37,38,39,40,41,44],"protocol":[5,11],"provid":[32,39,43,52],"public":[23,24,28,42,43,44],"releas":15,"remov":15,"renew":[3,10],"request":[13,19,20,31,32,33,34],"requir":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,50,51,52,53,54,55,56,57],"retriev":[1,3,16,23,24,31,38,42,51,55,56],"return":[1,2,3,5,6,7,8,9,10,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"revoc":[56,57],"revok":11,"root":14,"scenario":25,"secur":15,"see":[1,2,3,4,5,6,7,8,9,10,11,12,13,19,20,22,23,24,27,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57],"self":18,"send":13,"separ":[47,49],"serial":47,"server":13,"servic":[19,20],"set":[14,17],"should":10,"sign":[17,18,31,32,33,34,46],"signatur":45,"small":17,"split":48,"split_pem":48,"ssl":[5,19],"summari":15,"synopsi":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"term":24,"tl":[5,12,19],"to_seri":49,"topic":15,"untrust":14,"up":17,"us":17,"user":27,"v1":15,"v2":[4,6,7,8,9,15],"valid":[9,20],"valu":[1,2,3,5,6,7,8,9,10,12,13,14,16,19,20,22,23,24,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"variabl":21,"verifi":45,"whether":10,"without":41,"x":[50,51,52,55],"x509_certif":53,"x509_certificate_convert":50,"x509_certificate_info":[51,52],"x509_certificate_pip":54,"x509_crl":57,"x509_crl_info":[55,56]}})
\ No newline at end of file
diff --git a/pr/965/split_pem_filter.html b/pr/965/split_pem_filter.html
deleted file mode 100644
index 7a6a3420..00000000
--- a/pr/965/split_pem_filter.html
+++ /dev/null
@@ -1,305 +0,0 @@
-
-
-
-
-
-
-
-
-
- community.crypto.split_pem filter – Split PEM file contents into multiple objects — Community.Crypto Collection documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
---
--name:Print all CA certificates
-ansible.builtin.debug:
-msg:'{{item}}'
-loop:>-
-{{lookup('ansible.builtin.file','/path/to/ca-bundle.pem')|community.crypto.split_pem}}
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_certificate_convert.
The attributes the resulting filesystem object should have.
-
To get supported flags look at the man page for chattr on the target system.
-
This string should contain the attributes in the same order as the one displayed by lsattr.
-
The = operator is assumed as default, otherwise + or - operators need to be included in the string.
-
-
-
-
backup
-
boolean
-
-
Create a backup file including a timestamp so you can get the original X.509 certificate back if you overwrote it with a new one by accident.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
dest_path
-
path / required
-
-
Name of the file in which the generated TLS/SSL X.509 certificate will be written.
-
-
-
-
format
-
string / required
-
-
Determines which format the destination X.509 certificate should be written in.
-
Please note that not every key can be exported in any format, and that not every format supports encryption.
-
Choices:
-
-
"pem"
-
"der"
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
owner
-
string
-
-
Name of the user that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.
-
Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion.
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
src_content
-
string
-
-
The content of the file containing the X.509 certificate to convert.
-
This must be text. If you are not sure that the input file is PEM, you must Base64 encode the value and set src_content_base64=true. You can use the ansible.builtin.b64encode filter plugin for this.
If the input is a PEM file, ensure that it contains a single PEM object, that the header and footer match, and are of type CERTIFICATE or X509CERTIFICATE.
-
See also the verify_cert_parsable option, which checks whether the certificate is parsable.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
verify_cert_parsable
-
boolean
-
added in community.crypto 2.23.0
-
-
If set to true, ensures that the certificate can be parsed.
-
To ensure that a PEM file does not contain multiple certificates, use the strict option.
---
--name:Convert PEM X.509 certificate to DER format
-community.crypto.x509_certificate_convert:
-src_path:/etc/ssl/cert/ansible.com.pem
-dest_path:/etc/ssl/cert/ansible.com.der
-format:der
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this filter plugin,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_certificate_info.
This describes keyword parameters of the filter. These are the values key1=value1, key2=value2 and so on in the following
-example: input|community.crypto.x509_certificate_info(key1=value1,key2=value2,...)
-
-
-
Parameter
-
Comments
-
-
-
-
-
name_encoding
-
string
-
-
How to encode names (DNS names, URIs, email addresses) in return values.
-
ignore will use the encoding returned by the backend.
-
idna will convert all labels of domain names to IDNA encoding. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 encoding fails.
-
unicode will convert all labels of domain names to Unicode. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 decoding fails.
Is none if the AuthorityKeyIdentifier extension is not present.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:12345
-
-
-
-
authority_key_identifier
-
string
-
-
The certificate’s authority key identifier.
-
The identifier is returned in hexadecimal, with : used to separate bytes.
-
Is none if the AuthorityKeyIdentifier extension is not present.
The Base64 encoded value (in DER format) of the extension.
-
Note that depending on the cryptography version used, it is not possible to extract the ASN.1 content of the extension, but only to provide the re-encoded content of the extension in case it was parsed by cryptography. This should usually result in exactly the same value, except if the original extension value was malformed.
-
Returned: success
-
Sample:"MAMCAQU="
-
-
-
-
fingerprints
-
dictionary
-
-
Fingerprints of the DER-encoded form of the whole certificate.
-
For every hash algorithm available, the fingerprint is computed.
One of RSA, DSA, ECC, Ed25519, X25519, Ed448, or X448.
-
Will start with unknown if the key type cannot be determined.
-
Returned: success
-
Sample:"RSA"
-
-
-
-
serial_number
-
integer
-
-
The certificate’s serial number.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:1234
-
-
-
-
signature_algorithm
-
string
-
-
The signature algorithm used to sign the certificate.
-
Returned: success
-
Sample:"sha256WithRSAEncryption"
-
-
-
-
subject
-
dictionary
-
-
The certificate’s subject as a dictionary.
-
Note that for repeated values, only the last one will be returned.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_certificate_info.
This module allows one to query information on OpenSSL certificates.
-
It uses the cryptography python library to interact with OpenSSL.
-
Note that this module was called openssl_certificate_info when included directly in Ansible up to version 2.9. When moved to the collection community.crypto, it was renamed to community.crypto.x509_certificate_info. From Ansible 2.10 on, it can still be used by the old short name (or by ansible.builtin.openssl_certificate_info), which redirects to community.crypto.x509_certificate_info. When using FQCNs or when using the collections keyword, the new name community.crypto.x509_certificate_info should be used to avoid a deprecation warning.
Remote absolute path where the certificate file is loaded from.
-
Either path or content must be specified, but not both.
-
PEM and DER formats are supported.
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
valid_at
-
dictionary
-
-
A dict of names mapping to time specifications. Every time specified here will be checked whether the certificate is valid at this point. See the valid_at return value for information on the result.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h), and ASN.1 TIME (in other words, pattern YYYYMMDDHHMMSSZ). Note that all timestamps will be treated as being in UTC.
---
--name:Generate a Self Signed OpenSSL certificate
-community.crypto.x509_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-privatekey_path:/etc/ssl/private/ansible.com.pem
-csr_path:/etc/ssl/csr/ansible.com.csr
-provider:selfsigned
-
-
-# Get information on the certificate
-
--name:Get information on generated certificate
-community.crypto.x509_certificate_info:
-path:/etc/ssl/crt/ansible.com.crt
-register:result
-
--name:Dump information
-ansible.builtin.debug:
-var:result
-
-
-# Check whether the certificate is valid or not valid at certain times, fail
-# if this is not the case. The first task (x509_certificate_info) collects
-# the information, and the second task (assert) validates the result and
-# makes the playbook fail in case something is not as expected.
-
--name:Test whether that certificate is valid tomorrow and/or in three weeks
-community.crypto.x509_certificate_info:
-path:/etc/ssl/crt/ansible.com.crt
-valid_at:
-point_1:"+1d"
-point_2:"+3w"
-register:result
-
--name:Validate that certificate is valid tomorrow, but not in three weeks
-ansible.builtin.assert:
-that:
--result.valid_at.point_1# valid in one day
--not result.valid_at.point_2# not valid in three weeks
-
Is none if the AuthorityKeyIdentifier extension is not present.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:12345
-
-
-
-
authority_key_identifier
-
string
-
-
The certificate’s authority key identifier.
-
The identifier is returned in hexadecimal, with : used to separate bytes.
-
Is none if the AuthorityKeyIdentifier extension is not present.
The Base64 encoded value (in DER format) of the extension.
-
Note that depending on the cryptography version used, it is not possible to extract the ASN.1 content of the extension, but only to provide the re-encoded content of the extension in case it was parsed by cryptography. This should usually result in exactly the same value, except if the original extension value was malformed.
-
Returned: success
-
Sample:"MAMCAQU="
-
-
-
-
fingerprints
-
dictionary
-
added in community.crypto 1.2.0
-
-
Fingerprints of the DER-encoded form of the whole certificate.
-
For every hash algorithm available, the fingerprint is computed.
One of RSA, DSA, ECC, Ed25519, X25519, Ed448, or X448.
-
Will start with unknown if the key type cannot be determined.
-
Returned: success
-
Sample:"RSA"
-
-
-
-
serial_number
-
integer
-
-
The certificate’s serial number.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
-
Returned: success
-
Sample:1234
-
-
-
-
signature_algorithm
-
string
-
-
The signature algorithm used to sign the certificate.
-
Returned: success
-
Sample:"sha256WithRSAEncryption"
-
-
-
-
subject
-
dictionary
-
-
The certificate’s subject as a dictionary.
-
Note that for repeated values, only the last one will be returned.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_certificate.
It implements a notion of provider (one of selfsigned, ownca, acme, and entrust) for your certificate.
-
It uses the cryptography python library to interact with OpenSSL.
-
Note that this module was called openssl_certificate when included directly in Ansible up to version 2.9. When moved to the collection community.crypto, it was renamed to community.crypto.x509_certificate. From Ansible 2.10 on, it can still be used by the old short name (or by ansible.builtin.openssl_certificate), which redirects to community.crypto.x509_certificate. When using FQCNs or when using the collections keyword, the new name community.crypto.x509_certificate should be used to avoid a deprecation warning.
-
Please note that the module regenerates existing certificate if it does not match the module’s options, or if it seems to be corrupt. If you are concerned that this could overwrite your existing certificate, consider using the backup option.
-
The ownca provider is intended for generating an OpenSSL certificate signed with your own CA (Certificate Authority) certificate (self-signed certificate).
-
This module allows one to (re)generate OpenSSL certificates.
Include the intermediate certificate to the generated certificate
-
This is only used by the acme provider.
-
Note that this is only available for older versions of acme-tiny. New versions include the chain automatically, and setting acme_chain to true results in an error.
The username for authentication to the Entrust Certificate Services (ECS) API.
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
entrust_cert_type
-
string
-
-
Specify the type of certificate requested.
-
This is only used by the entrust provider.
-
Choices:
-
-
"STANDARD_SSL"← (default)
-
"ADVANTAGE_SSL"
-
"UC_SSL"
-
"EV_SSL"
-
"WILDCARD_SSL"
-
"PRIVATE_SSL"
-
"PD_SSL"
-
"CDS_ENT_LITE"
-
"CDS_ENT_PRO"
-
"SMIME_ENT"
-
-
-
-
-
entrust_not_after
-
string
-
-
The point in time at which the certificate stops being valid.
-
Time can be specified either as relative time or as an absolute timestamp.
-
A valid absolute time format is ASN.1TIME such as 2019-06-18.
-
A valid relative time format is [+-]timespec where timespec can be an integer + [w|d|h|m|s], such as +365d or +32w1d2h).
-
Time will always be interpreted as UTC.
-
Note that only the date (day, month, year) is supported for specifying the expiry date of the issued certificate.
-
The full date-time is adjusted to EST (GMT -5:00) before issuance, which may result in a certificate with an expiration date one day earlier than expected if a relative time is used.
-
The minimum certificate lifetime is 90 days, and maximum is three years.
-
If this value is not specified, the certificate will stop being valid 365 days the date of issue.
-
This is only used by the entrust provider.
-
Please note that this value is not covered by the ignore_timestamps option.
-
Default:"+365d"
-
-
-
-
entrust_requester_email
-
string
-
-
The email of the requester of the certificate (for tracking purposes).
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
entrust_requester_name
-
string
-
-
The name of the requester of the certificate (for tracking purposes).
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
entrust_requester_phone
-
string
-
-
The phone number of the requester of the certificate (for tracking purposes).
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
force
-
boolean
-
-
Generate the certificate, even if it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
-
-
-
-
ignore_timestamps
-
boolean
-
added in community.crypto 2.0.0
-
-
Whether the “not before” and “not after” timestamps should be ignored for idempotency checks.
-
It is better to keep the default value true when using relative timestamps (like +0s for now).
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
mode
-
any
-
-
The permissions the resulting filesystem object should have.
-
For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.
-
Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.
-
As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).
-
If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.
-
If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.
-
Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.
-
-
-
-
ownca_content
-
string
-
added in community.crypto 1.0.0
-
-
Content of the CA (Certificate Authority) certificate.
Create a Authority Key Identifier from the CA’s certificate. If the CSR provided a authority key identifier, it is ignored.
-
The Authority Key Identifier is generated from the CA certificate’s Subject Key Identifier, if available. If it is not available, the CA certificate’s public key will be used.
-
This is only used by the ownca provider.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
ownca_create_subject_key_identifier
-
string
-
-
Whether to create the Subject Key Identifier (SKI) from the public key.
-
A value of create_if_not_provided (default) only creates a SKI when the CSR does not provide one.
-
A value of always_create always creates a SKI. If the CSR provides one, that one is ignored.
-
A value of never_create never creates a SKI. If the CSR provides one, that one is used.
-
This is only used by the ownca provider.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
"create_if_not_provided"← (default)
-
"always_create"
-
"never_create"
-
-
-
-
-
ownca_digest
-
string
-
-
The digest algorithm to be used for the ownca certificate.
-
This is only used by the ownca provider.
-
Default:"sha256"
-
-
-
-
ownca_not_after
-
string
-
-
The point in time at which the certificate stops being valid.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will stop being valid 10 years from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the ownca provider.
-
On macOS 10.15 and onwards, TLS server certificates must have a validity period of 825 days or fewer. Please see https://support.apple.com/en-us/HT210176 for more details.
-
Default:"+3650d"
-
-
-
-
ownca_not_before
-
string
-
-
The point in time the certificate is valid from.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will start being valid from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the ownca provider.
-
Default:"+0s"
-
-
-
-
ownca_path
-
path
-
-
Remote absolute path of the CA (Certificate Authority) certificate.
If set to true, will return the (current or generated) certificate’s content as certificate.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
select_crypto_backend
-
string
-
-
Determines which crypto backend to use.
-
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
selevel
-
string
-
-
The level part of the SELinux filesystem object context.
-
This is the MLS/MCS attribute, sometimes known as the range.
-
When set to _default, it will use the level portion of the policy if available.
-
-
-
-
selfsigned_create_subject_key_identifier
-
string
-
-
Whether to create the Subject Key Identifier (SKI) from the public key.
-
A value of create_if_not_provided (default) only creates a SKI when the CSR does not provide one.
-
A value of always_create always creates a SKI. If the CSR provides one, that one is ignored.
-
A value of never_create never creates a SKI. If the CSR provides one, that one is used.
-
This is only used by the selfsigned provider.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
"create_if_not_provided"← (default)
-
"always_create"
-
"never_create"
-
-
-
-
-
selfsigned_digest
-
string
-
-
Digest algorithm to be used when self-signing the certificate.
-
This is only used by the selfsigned provider.
-
Default:"sha256"
-
-
-
-
-
selfsigned_not_after
-
aliases: selfsigned_notAfter
-
string
-
-
The point in time at which the certificate stops being valid.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will stop being valid 10 years from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the selfsigned provider.
-
On macOS 10.15 and onwards, TLS server certificates must have a validity period of 825 days or fewer. Please see https://support.apple.com/en-us/HT210176 for more details.
-
Default:"+3650d"
-
-
-
-
-
selfsigned_not_before
-
aliases: selfsigned_notBefore
-
string
-
-
The point in time the certificate is valid from.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will start being valid from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the selfsigned provider.
-
Default:"+0s"
-
-
-
-
selfsigned_version
-
integer
-
-
Version of the selfsigned certificate.
-
Nowadays it should almost always be 3.
-
This is only used by the selfsigned provider.
-
Default:3
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
state
-
string
-
-
Whether the certificate should exist or not, taking action if the state is different from what is stated.
-
Choices:
-
-
"absent"
-
"present"← (default)
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
All ASN.1 TIME values should be specified following the YYYYMMDDHHMMSSZ pattern.
-
Date specified should be UTC. Minutes and seconds are mandatory.
-
For security reason, when you use ownca provider, you should NOT run community.crypto.x509_certificate on a target machine, but on a dedicated CA machine. It is recommended not to store the CA private key on the target machine. Once signed, the certificate can be moved to the target machine.
-
For the selfsigned provider, csr_path and csr_content are optional. If not provided, a certificate without any information (Subject, Subject Alternative Names, Key Usage, etc.) is created.
---
--name:Generate a Self Signed OpenSSL certificate
-community.crypto.x509_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-privatekey_path:/etc/ssl/private/ansible.com.pem
-csr_path:/etc/ssl/csr/ansible.com.csr
-provider:selfsigned
-
--name:Generate an OpenSSL certificate signed with your own CA certificate
-community.crypto.x509_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr_path:/etc/ssl/csr/ansible.com.csr
-ownca_path:/etc/ssl/crt/ansible_CA.crt
-ownca_privatekey_path:/etc/ssl/private/ansible_CA.pem
-provider:ownca
-
--name:Generate a Let's Encrypt Certificate
-community.crypto.x509_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr_path:/etc/ssl/csr/ansible.com.csr
-provider:acme
-acme_accountkey_path:/etc/ssl/private/ansible.com.pem
-acme_challenge_path:/etc/ssl/challenges/ansible.com/
-
--name:Force (re-)generate a new Let's Encrypt Certificate
-community.crypto.x509_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr_path:/etc/ssl/csr/ansible.com.csr
-provider:acme
-acme_accountkey_path:/etc/ssl/private/ansible.com.pem
-acme_challenge_path:/etc/ssl/challenges/ansible.com/
-force:true
-
--name:Generate an Entrust certificate via the Entrust Certificate Services (ECS) API
-community.crypto.x509_certificate:
-path:/etc/ssl/crt/ansible.com.crt
-csr_path:/etc/ssl/csr/ansible.com.csr
-provider:entrust
-entrust_requester_name:Jo Doe
-entrust_requester_email:jdoe@ansible.com
-entrust_requester_phone:555-555-5555
-entrust_cert_type:STANDARD_SSL
-entrust_api_user:apiusername
-entrust_api_key:a^lv*32!cd9LnT
-entrust_api_client_cert_path:/etc/ssl/entrust/ecs-client.crt
-entrust_api_client_cert_key_path:/etc/ssl/entrust/ecs-key.crt
-entrust_api_specification_path:/etc/ssl/entrust/api-docs/cms-api-2.1.0.yaml
-
-# The following example shows how to emulate the behavior of the removed
-# "assertonly" provider with the x509_certificate_info, openssl_csr_info,
-# openssl_privatekey_info and assert modules:
-
--name:Get certificate information
-community.crypto.x509_certificate_info:
-path:/etc/ssl/crt/ansible.com.crt
-# for valid_at, invalid_at and valid_in
-valid_at:
-one_day_ten_hours:"+1d10h"
-fixed_timestamp:20200331202428Z
-ten_seconds:"+10"
-register:result
-
--name:Get CSR information
-community.crypto.openssl_csr_info:
-# Verifies that the CSR signature is valid; module will fail if not
-path:/etc/ssl/csr/ansible.com.csr
-register:result_csr
-
--name:Get private key information
-community.crypto.openssl_privatekey_info:
-path:/etc/ssl/csr/ansible.com.key
-register:result_privatekey
-
--name:Check conditions on certificate, CSR, and private key
-ansible.builtin.assert:
-that:
-# When private key was specified for assertonly, this was checked:
--result.public_key == result_privatekey.public_key
-# When CSR was specified for assertonly, this was checked:
--result.public_key == result_csr.public_key
--result.subject_ordered == result_csr.subject_ordered
--result.extensions_by_oid == result_csr.extensions_by_oid
-# signature_algorithms check
--"result.signature_algorithm=='sha256WithRSAEncryption'orresult.signature_algorithm=='sha512WithRSAEncryption'"
-# subject and subject_strict
--"result.subject.commonName=='ansible.com'"
--"result.subject|length==1"# the number must be the number of entries you check for
-# issuer and issuer_strict
--"result.issuer.commonName=='ansible.com'"
--"result.issuer|length==1"# the number must be the number of entries you check for
-# has_expired
--not result.expired
-# version
--result.version == 3
-# key_usage and key_usage_strict
--"'DataEncipherment'inresult.key_usage"
--"result.key_usage|length==1"# the number must be the number of entries you check for
-# extended_key_usage and extended_key_usage_strict
--"'DVCS'inresult.extended_key_usage"
--"result.extended_key_usage|length==1"# the number must be the number of entries you check for
-# subject_alt_name and subject_alt_name_strict
--"'dns:ansible.com'inresult.subject_alt_name"
--"result.subject_alt_name|length==1"# the number must be the number of entries you check for
-# not_before and not_after
--"result.not_before=='20190331202428Z'"
--"result.not_after=='20190413202428Z'"
-# valid_at, invalid_at and valid_in
--"result.valid_at.one_day_ten_hours"# for valid_at
--"notresult.valid_at.fixed_timestamp"# for invalid_at
--"result.valid_at.ten_seconds"# for valid_in
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_certificate_pipe.
It implements a notion of provider (one of selfsigned, ownca, entrust) for your certificate.
-
It uses the cryptography python library to interact with OpenSSL.
-
The ownca provider is intended for generating an OpenSSL certificate signed with your own CA (Certificate Authority) certificate (self-signed certificate).
-
This module allows one to (re)generate OpenSSL certificates.
The username for authentication to the Entrust Certificate Services (ECS) API.
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
entrust_cert_type
-
string
-
-
Specify the type of certificate requested.
-
This is only used by the entrust provider.
-
Choices:
-
-
"STANDARD_SSL"← (default)
-
"ADVANTAGE_SSL"
-
"UC_SSL"
-
"EV_SSL"
-
"WILDCARD_SSL"
-
"PRIVATE_SSL"
-
"PD_SSL"
-
"CDS_ENT_LITE"
-
"CDS_ENT_PRO"
-
"SMIME_ENT"
-
-
-
-
-
entrust_not_after
-
string
-
-
The point in time at which the certificate stops being valid.
-
Time can be specified either as relative time or as an absolute timestamp.
-
A valid absolute time format is ASN.1TIME such as 2019-06-18.
-
A valid relative time format is [+-]timespec where timespec can be an integer + [w|d|h|m|s], such as +365d or +32w1d2h).
-
Time will always be interpreted as UTC.
-
Note that only the date (day, month, year) is supported for specifying the expiry date of the issued certificate.
-
The full date-time is adjusted to EST (GMT -5:00) before issuance, which may result in a certificate with an expiration date one day earlier than expected if a relative time is used.
-
The minimum certificate lifetime is 90 days, and maximum is three years.
-
If this value is not specified, the certificate will stop being valid 365 days the date of issue.
-
This is only used by the entrust provider.
-
Please note that this value is not covered by the ignore_timestamps option.
-
Default:"+365d"
-
-
-
-
entrust_requester_email
-
string
-
-
The email of the requester of the certificate (for tracking purposes).
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
entrust_requester_name
-
string
-
-
The name of the requester of the certificate (for tracking purposes).
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
entrust_requester_phone
-
string
-
-
The phone number of the requester of the certificate (for tracking purposes).
-
This is only used by the entrust provider.
-
This is required if the provider is entrust.
-
-
-
-
force
-
boolean
-
-
Generate the certificate, even if it already exists.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
ignore_timestamps
-
boolean
-
added in community.crypto 2.0.0
-
-
Whether the “not before” and “not after” timestamps should be ignored for idempotency checks.
-
It is better to keep the default value true when using relative timestamps (like +0s for now).
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
ownca_content
-
string
-
-
Content of the CA (Certificate Authority) certificate.
Create a Authority Key Identifier from the CA’s certificate. If the CSR provided a authority key identifier, it is ignored.
-
The Authority Key Identifier is generated from the CA certificate’s Subject Key Identifier, if available. If it is not available, the CA certificate’s public key will be used.
-
This is only used by the ownca provider.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
ownca_create_subject_key_identifier
-
string
-
-
Whether to create the Subject Key Identifier (SKI) from the public key.
-
A value of create_if_not_provided (default) only creates a SKI when the CSR does not provide one.
-
A value of always_create always creates a SKI. If the CSR provides one, that one is ignored.
-
A value of never_create never creates a SKI. If the CSR provides one, that one is used.
-
This is only used by the ownca provider.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
"create_if_not_provided"← (default)
-
"always_create"
-
"never_create"
-
-
-
-
-
ownca_digest
-
string
-
-
The digest algorithm to be used for the ownca certificate.
-
This is only used by the ownca provider.
-
Default:"sha256"
-
-
-
-
ownca_not_after
-
string
-
-
The point in time at which the certificate stops being valid.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will stop being valid 10 years from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the ownca provider.
-
On macOS 10.15 and onwards, TLS server certificates must have a validity period of 825 days or fewer. Please see https://support.apple.com/en-us/HT210176 for more details.
-
Default:"+3650d"
-
-
-
-
ownca_not_before
-
string
-
-
The point in time the certificate is valid from.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will start being valid from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the ownca provider.
-
Default:"+0s"
-
-
-
-
ownca_path
-
path
-
-
Remote absolute path of the CA (Certificate Authority) certificate.
The default choice is auto, which tries to use cryptography if available.
-
If set to cryptography, will try to use the cryptography library.
-
Choices:
-
-
"auto"← (default)
-
"cryptography"
-
-
-
-
-
selfsigned_create_subject_key_identifier
-
string
-
-
Whether to create the Subject Key Identifier (SKI) from the public key.
-
A value of create_if_not_provided (default) only creates a SKI when the CSR does not provide one.
-
A value of always_create always creates a SKI. If the CSR provides one, that one is ignored.
-
A value of never_create never creates a SKI. If the CSR provides one, that one is used.
-
This is only used by the selfsigned provider.
-
Note that this is only supported if the cryptography backend is used!
-
Choices:
-
-
"create_if_not_provided"← (default)
-
"always_create"
-
"never_create"
-
-
-
-
-
selfsigned_digest
-
string
-
-
Digest algorithm to be used when self-signing the certificate.
-
This is only used by the selfsigned provider.
-
Default:"sha256"
-
-
-
-
-
selfsigned_not_after
-
aliases: selfsigned_notAfter
-
string
-
-
The point in time at which the certificate stops being valid.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will stop being valid 10 years from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
-
This is only used by the selfsigned provider.
-
On macOS 10.15 and onwards, TLS server certificates must have a validity period of 825 days or fewer. Please see https://support.apple.com/en-us/HT210176 for more details.
-
Default:"+3650d"
-
-
-
-
-
selfsigned_not_before
-
aliases: selfsigned_notBefore
-
string
-
-
The point in time the certificate is valid from.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
If this value is not specified, the certificate will start being valid from now.
-
Note that this value is not used to determine whether an existing certificate should be regenerated. This can be changed by setting the ignore_timestamps option to false. Please note that you should avoid relative timestamps when setting ignore_timestamps=false.
Currently in check mode, private keys will not be (re-)generated, only the changed status is set. This will change in community.crypto 3.0.0.
-
From community.crypto 3.0.0 on, the module will ignore check mode and always behave as if check mode is not active. If you think this breaks your use-case of this module, please create an issue in the community.crypto repository.
-
-
Can run in check_mode and return changed status prediction without modifying target.
-
-
-
-
diff_mode
-
-
Support: full
-
-
Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode.
All ASN.1 TIME values should be specified following the YYYYMMDDHHMMSSZ pattern.
-
Date specified should be UTC. Minutes and seconds are mandatory.
-
For security reason, when you use ownca provider, you should NOT run community.crypto.x509_certificate on a target machine, but on a dedicated CA machine. It is recommended not to store the CA private key on the target machine. Once signed, the certificate can be moved to the target machine.
-
For the selfsigned provider, csr_path and csr_content are optional. If not provided, a certificate without any information (Subject, Subject Alternative Names, Key Usage, etc.) is created.
---
--name:Generate a Self Signed OpenSSL certificate
-community.crypto.x509_certificate_pipe:
-provider:selfsigned
-privatekey_path:/etc/ssl/private/ansible.com.pem
-csr_path:/etc/ssl/csr/ansible.com.csr
-register:result
--name:Print the certificate
-ansible.builtin.debug:
-var:result.certificate
-
-# In the following example, both CSR and certificate file are stored on the
-# machine where ansible-playbook is executed, while the OwnCA data (certificate,
-# private key) are stored on the remote machine.
-
--name:(1/2) Generate an OpenSSL Certificate with the CSR provided inline
-community.crypto.x509_certificate_pipe:
-provider:ownca
-content:"{{lookup('ansible.builtin.file','/etc/ssl/csr/www.ansible.com.crt')}}"
-csr_content:"{{lookup('ansible.builtin.file','/etc/ssl/csr/www.ansible.com.csr')}}"
-ownca_cert:/path/to/ca_cert.crt
-ownca_privatekey:/path/to/ca_cert.key
-ownca_privatekey_passphrase:hunter2
-register:result
-
--name:(2/2) Store certificate
-ansible.builtin.copy:
-dest:/etc/ssl/csr/www.ansible.com.crt
-content:"{{result.certificate}}"
-delegate_to:localhost
-when:result is changed
-
-# In the following example, the certificate from another machine is signed by
-# our OwnCA whose private key and certificate are only available on this
-# machine (where ansible-playbook is executed), without having to write
-# the certificate file to disk on localhost. The CSR could have been
-# provided by community.crypto.openssl_csr_pipe earlier, or also have been
-# read from the remote machine.
-
--name:(1/3) Read certificate's contents from remote machine
-ansible.builtin.slurp:
-src:/etc/ssl/csr/www.ansible.com.crt
-register:certificate_content
-
--name:(2/3) Generate an OpenSSL Certificate with the CSR provided inline
-community.crypto.x509_certificate_pipe:
-provider:ownca
-content:"{{certificate_content.content|b64decode}}"
-csr_content:"{{the_csr}}"
-ownca_cert:/path/to/ca_cert.crt
-ownca_privatekey:/path/to/ca_cert.key
-ownca_privatekey_passphrase:hunter2
-delegate_to:localhost
-register:result
-
--name:(3/3) Store certificate
-ansible.builtin.copy:
-dest:/etc/ssl/csr/www.ansible.com.crt
-content:"{{result.certificate}}"
-when:result is changed
-
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this filter plugin,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_crl_info.
This describes keyword parameters of the filter. These are the values key1=value1, key2=value2 and so on in the following
-example: input|community.crypto.x509_crl_info(key1=value1,key2=value2,...)
-
-
-
Parameter
-
Comments
-
-
-
-
-
list_revoked_certificates
-
boolean
-
added in community.crypto 1.7.0
-
-
If set to false, the list of revoked certificates is not included in the result.
-
This is useful when retrieving information on large CRL files. Enumerating all revoked certificates can take some time, including serializing the result as JSON, sending it to the Ansible controller, and decoding it again.
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
name_encoding
-
string
-
-
How to encode names (DNS names, URIs, email addresses) in return values.
-
ignore will use the encoding returned by the backend.
-
idna will convert all labels of domain names to IDNA encoding. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 encoding fails.
-
unicode will convert all labels of domain names to Unicode. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 decoding fails.
Whether the certificate issuer extension is critical.
-
Returned: success
-
Sample:false
-
-
-
-
reason
-
string
-
-
The value for the revocation reason extension.
-
Returned: success
-
Can only return:
-
-
"unspecified"
-
"key_compromise"
-
"ca_compromise"
-
"affiliation_changed"
-
"superseded"
-
"cessation_of_operation"
-
"certificate_hold"
-
"privilege_withdrawn"
-
"aa_compromise"
-
"remove_from_crl"
-
-
Sample:"key_compromise"
-
-
-
-
reason_critical
-
boolean
-
-
Whether the revocation reason extension is critical.
-
Returned: success
-
Sample:false
-
-
-
-
revocation_date
-
string
-
-
The point in time the certificate was revoked as ASN.1 TIME.
-
Returned: success
-
Sample:"20190413202428Z"
-
-
-
-
serial_number
-
integer
-
-
Serial number of the certificate.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_crl_info.
Content of the X.509 CRL in PEM format, or Base64-encoded X.509 CRL.
-
Either path or content must be specified, but not both.
-
-
-
-
list_revoked_certificates
-
boolean
-
added in community.crypto 1.7.0
-
-
If set to false, the list of revoked certificates is not included in the result.
-
This is useful when retrieving information on large CRL files. Enumerating all revoked certificates can take some time, including serializing the result as JSON, sending it to the Ansible controller, and decoding it again.
-
Choices:
-
-
false
-
true← (default)
-
-
-
-
-
name_encoding
-
string
-
-
How to encode names (DNS names, URIs, email addresses) in return values.
-
ignore will use the encoding returned by the backend.
-
idna will convert all labels of domain names to IDNA encoding. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 encoding fails.
-
unicode will convert all labels of domain names to Unicode. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 decoding fails.
---
--name:Get information on CRL
-community.crypto.x509_crl_info:
-path:/etc/ssl/my-ca.crl
-register:result
-
--name:Print the information
-ansible.builtin.debug:
-msg:"{{result}}"
-
--name:Get information on CRL without list of revoked certificates
-community.crypto.x509_crl_info:
-path:/etc/ssl/very-large.crl
-list_revoked_certificates:false
-register:result
-
Whether the certificate issuer extension is critical.
-
Returned: success
-
Sample:false
-
-
-
-
reason
-
string
-
-
The value for the revocation reason extension.
-
Returned: success
-
Can only return:
-
-
"unspecified"
-
"key_compromise"
-
"ca_compromise"
-
"affiliation_changed"
-
"superseded"
-
"cessation_of_operation"
-
"certificate_hold"
-
"privilege_withdrawn"
-
"aa_compromise"
-
"remove_from_crl"
-
-
Sample:"key_compromise"
-
-
-
-
reason_critical
-
boolean
-
-
Whether the revocation reason extension is critical.
-
Returned: success
-
Sample:false
-
-
-
-
revocation_date
-
string
-
-
The point in time the certificate was revoked as ASN.1 TIME.
-
Returned: success
-
Sample:"20190413202428Z"
-
-
-
-
serial_number
-
integer
-
-
Serial number of the certificate.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.
It is not included in ansible-core.
-To check whether it is installed, run ansible-galaxycollectionlist.
-
To install it, use: ansible-galaxycollectioninstallcommunity.crypto.
-You need further requirements to be able to use this module,
-see Requirements for details.
-
To use it in a playbook, specify: community.crypto.x509_crl.
This module allows one to (re)generate or update Certificate Revocation Lists (CRLs).
-
Certificates on the revocation list can be either specified by serial number and (optionally) their issuer, or as a path to a certificate file in PEM format.
The attributes the resulting filesystem object should have.
-
To get supported flags look at the man page for chattr on the target system.
-
This string should contain the attributes in the same order as the one displayed by lsattr.
-
The = operator is assumed as default, otherwise + or - operators need to be included in the string.
-
-
-
-
backup
-
boolean
-
-
Create a backup file including a timestamp so you can get the original CRL back if you overwrote it with a new one by accident.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
crl_mode
-
string
-
added in community.crypto 2.13.0
-
-
Defines how to process entries of existing CRLs.
-
If set to generate, makes sure that the CRL has the exact set of revoked certificates as specified in revoked_certificates.
-
If set to update, makes sure that the CRL contains the revoked certificates from revoked_certificates, but can also contain other revoked certificates. If the CRL file already exists, all entries from the existing CRL will also be included in the new CRL. When using update, you might be interested in setting ignore_timestamps to true.
-
The default value is generate.
-
This parameter was called mode before community.crypto 2.13.0. It has been renamed to avoid a collision with the common mode parameter for setting the CRL file’s access mode.
-
Choices:
-
-
"generate"
-
"update"
-
-
-
-
-
digest
-
string
-
-
Digest algorithm to be used when signing the CRL.
-
Default:"sha256"
-
-
-
-
force
-
boolean
-
-
Should the CRL be forced to be regenerated.
-
Choices:
-
-
false← (default)
-
true
-
-
-
-
-
format
-
string
-
-
Whether the CRL file should be in PEM or DER format.
-
If an existing CRL file does match everything but format, it will be converted to the correct format instead of regenerated.
-
Choices:
-
-
"pem"← (default)
-
"der"
-
-
-
-
-
group
-
string
-
-
Name of the group that should own the filesystem object, as would be fed to chown.
-
When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.
A list of dictionaries, where every dictionary must contain one key/value pair. This key/value pair will be present in the issuer name field of the CRL.
-
If you want to specify more than one value with the same key in a row, you can use a list as value.
The point in time from which this CRL can be trusted.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
Note that if using relative time this module is NOT idempotent, except when ignore_timestamps is set to true.
-
Default:"+0s"
-
-
-
-
mode
-
string
-
-
This parameter has been renamed to crl_mode. The old name mode is now deprecated and will be removed in community.crypto 3.0.0. Replace usage of this parameter with crl_mode.
-
Note that from community.crypto 3.0.0 on, mode will be used for the CRL file’s mode.
-
Choices:
-
-
"generate"
-
"update"
-
-
-
-
-
name_encoding
-
string
-
-
How to encode names (DNS names, URIs, email addresses) in return values.
-
ignore will use the encoding returned by the backend.
-
idna will convert all labels of domain names to IDNA encoding. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 encoding fails.
-
unicode will convert all labels of domain names to Unicode. IDNA2008 will be preferred, and IDNA2003 will be used if IDNA2008 decoding fails.
The absolute latest point in time by which this issuer is expected to have issued another CRL. Many clients will treat a CRL as expired once next_update occurs.
-
Time can be specified either as relative time or as absolute timestamp.
-
Time will always be interpreted as UTC.
-
Valid format is [+-]timespec|ASN.1TIME where timespec can be an integer + [w|d|h|m|s] (for example +32w1d2h).
-
Note that if using relative time this module is NOT idempotent, except when ignore_timestamps is set to true.
If set to integer (default), serial numbers are assumed to be integers, for example 66223. (This example value is equivalent to the hex octet string 01:02:AF).
-
If set to hex-octets, serial numbers are assumed to be colon-separated hex octet strings, for example 01:02:AF. (This example value is equivalent to the integer 66223).
-
Choices:
-
-
"integer"← (default)
-
"hex-octets"
-
-
-
-
-
serole
-
string
-
-
The role part of the SELinux filesystem object context.
-
When set to _default, it will use the role portion of the policy if available.
-
-
-
-
setype
-
string
-
-
The type part of the SELinux filesystem object context.
-
When set to _default, it will use the type portion of the policy if available.
-
-
-
-
seuser
-
string
-
-
The user part of the SELinux filesystem object context.
-
By default it uses the system policy, where applicable.
-
When set to _default, it will use the user portion of the policy if available.
-
-
-
-
state
-
string
-
-
Whether the CRL file should exist or not, taking action if the state is different from what is stated.
-
Choices:
-
-
"absent"
-
"present"← (default)
-
-
-
-
-
unsafe_writes
-
boolean
-
-
Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
-
By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
-
This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).
-
IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
Whether the certificate issuer extension is critical.
-
Returned: success
-
Sample:false
-
-
-
-
reason
-
string
-
-
The value for the revocation reason extension.
-
Returned: success
-
Can only return:
-
-
"unspecified"
-
"key_compromise"
-
"ca_compromise"
-
"affiliation_changed"
-
"superseded"
-
"cessation_of_operation"
-
"certificate_hold"
-
"privilege_withdrawn"
-
"aa_compromise"
-
"remove_from_crl"
-
-
Sample:"key_compromise"
-
-
-
-
reason_critical
-
boolean
-
-
Whether the revocation reason extension is critical.
-
Returned: success
-
Sample:false
-
-
-
-
revocation_date
-
string
-
-
The point in time the certificate was revoked as ASN.1 TIME.
-
Returned: success
-
Sample:"20190413202428Z"
-
-
-
-
serial_number
-
integer
-
-
Serial number of the certificate.
-
This return value is an integer. If you need the serial numbers as a colon-separated hex string, such as 11:22:33, you need to convert it to that form with community.crypto.to_serial.