openssl_certificate - Генерация и/или проверка сертификатов OpenSSL
Новая в версии 2.4.
- Обзор
- Требования (для хоста, выполняющего модуль)
- Параметры
- Примеры
- Возвращаемые значения
- Примечания
Обзор
- Этот модуль позволяет (пере)генерировать сертификаты OpenSSL. Он реализует понятие поставщика (например,
selfsigned,acme,assertonly) для вашего сертификата. Поставщик ‘assertonly’ предназначен для случаев, когда требуется только проверка свойств предоставленного сертификата. Многие свойства, которые можно указать в этом модуле, предназначены для проверки существующего или недавно сгенерированного сертификата. Правильное место для их указания, если вы хотите получить сертификат с этими свойствами, — это CSR (запрос на подпись сертификата). Для взаимодействия с OpenSSL используется библиотека pyOpenSSL.
Требования (для хоста, выполняющего модуль)
- python-pyOpenSSL >= 0.15 (если используется
selfsignedилиassertonlyпоставщик) - acme-tiny (если используется
acmeпоставщик)
Параметры
| параметр | обязательно | по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| acme_accountkey | нет | Путь к файлу accountkey для acme поставщика | ||
| acme_challenge_path | нет | Путь к каталогу проверки ACME, который обслуживается по адресу http://<HOST>:80/.well-known/acme-challenge/
| ||
| csr_path | нет | Путь к запросу на подпись сертификата (CSR), используемому для генерации этого сертификата. Это не требуется в режиме assertonly. | ||
| extended_key_usage | нет | Поле расширения extended_key_usage должно содержать все эти значения. псевдонимы: extendedKeyUsage | ||
| extended_key_usage_strict | нет |
| Если установлено в True, поле расширения extended_key_usage должно содержать только эти значения. псевдонимы: extendedKeyUsage_strict | |
| force | нет |
| Сгенерировать сертификат, даже если он уже существует. | |
| has_expired | нет |
| Проверяет, истек ли сертификат/не истек ли он на момент выполнения модуля. | |
| invalid_at | нет | Сертификат должен быть недействительным в этот момент времени. Дата и время отформатированы как ASN.1 TIME. | ||
| issuer | нет | Ключ/значение, которые должны присутствовать в поле имени издателя сертификата | ||
| key_usage | нет | Поле расширения key_usage должно содержать все эти значения. псевдонимы: keyUsage | ||
| key_usage_strict | нет |
| Если установлено в True, поле расширения key_usage должно содержать только эти значения. псевдонимы: keyUsage_strict | |
| not_after | нет | Сертификат должен истечь в этот момент времени. Дата и время отформатированы как ASN.1 TIME. псевдонимы: notAfter | ||
| not_before | нет | Сертификат должен начать действовать в этот момент времени. Дата и время отформатированы как ASN.1 TIME. псевдонимы: notBefore | ||
| path | да | Удаленный абсолютный путь, где должен быть создан или уже находится сгенерированный файл сертификата. | ||
| privatekey_passphrase | нет | Пароль к privatekey_path. | ||
| privatekey_path | нет | Путь к закрытому ключу, используемому при подписании сертификата. | ||
| provider | да |
| Имя поставщика для генерации/получения сертификата OpenSSL. Поставщик assertonly не будет генерировать файлы и завершится с ошибкой, если файл сертификата отсутствует. | |
| selfsigned_digest | нет | sha256 | Алгоритм хэширования, используемый при самоподписи сертификата | |
| selfsigned_not_after | нет | Дата и время, после которых сертификат перестаёт быть действительным. Дата и время отформатированы как ASN.1 TIME. Если это значение не указано, сертификат перестаёт быть действительным через 10 лет. псевдонимы: selfsigned_notAfter | ||
| selfsigned_not_before | нет | Дата и время, с которых сертификат начинает действовать. Дата и время отформатированы как ASN.1 TIME. Если это значение не указано, сертификат начинает действовать с текущей даты и времени. псевдонимы: selfsigned_notBefore | ||
| signature_algorithms | нет | Список алгоритмов, с которыми будет приниматься подписанный сертификат (например, ['sha256WithRSAEncryption', 'sha512WithRSAEncryption']). | ||
| state | нет | present |
| Существует ли сертификат или нет, выполняя действие, если состояние отличается от указанного. |
| subject | нет | Ключ/значение, которые должны присутствовать в поле имени субъекта сертификата | ||
| subject_alt_name | нет | Поле расширения subject_alt_name должно содержать эти значения. псевдонимы: subjectAltName | ||
| subject_alt_name_strict | нет |
| Если установлено в True, поле расширения subject_alt_name должно содержать только эти значения. псевдонимы: subjectAltName_strict | |
| valid_at | нет | Сертификат должен быть действительным в этот момент времени. Дата и время отформатированы как ASN.1 TIME. | ||
| valid_in | нет | Сертификат должен оставаться действительным через valid_in секунд от текущего момента. | ||
| version | нет | Версия сертификата. В наши дни она почти всегда должна быть 3. |
Примеры
- name: Generate a Self Signed OpenSSL certificate
openssl_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 a Let's Encrypt Certificate
openssl_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: acme
acme_accountkey: /etc/ssl/private/ansible.com.pem
acme_challenge_path: /etc/ssl/challenges/ansible.com/
- name: Force (re-)generate a new Let's Encrypt Certificate
openssl_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: acme
acme_accountkey: /etc/ssl/private/ansible.com.pem
acme_challenge_path: /etc/ssl/challenges/ansible.com/
force: True
# Examples for some checks one could use the assertonly provider for:
- name: Verify that an existing certificate was issued by the Let's Encrypt CA and is currently still valid
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
issuer:
O: Let's Encrypt
has_expired: False
- name: Ensure that a certificate uses a modern signature algorithm (no SHA1, MD5 or DSA)
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
signature_algorithms:
- sha224WithRSAEncryption
- sha256WithRSAEncryption
- sha384WithRSAEncryption
- sha512WithRSAEncryption
- sha224WithECDSAEncryption
- sha256WithECDSAEncryption
- sha384WithECDSAEncryption
- sha512WithECDSAEncryption
- name: Ensure that the existing certificate belongs to the specified private key
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
privatekey_path: /etc/ssl/private/example.com.pem
provider: assertonly
- name: Ensure that the existing certificate is still valid at the winter solstice 2017
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
valid_at: 20171221162800Z
- name: Ensure that the existing certificate is still valid 2 weeks (1209600 seconds) from now
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
valid_in: 1209600
- name: Ensure that the existing certificate is only used for digital signatures and encrypting other keys
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
key_usage:
- digitalSignature
- keyEncipherment
key_usage_strict: true
- name: Ensure that the existing certificate can be used for client authentication
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
extended_key_usage:
- clientAuth
- name: Ensure that the existing certificate can only be used for client authentication and time stamping
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
extended_key_usage:
- clientAuth
- 1.3.6.1.5.5.7.3.8
extended_key_usage_strict: true
- name: Ensure that the existing certificate has a certain domain in its subjectAltName
openssl_certificate:
path: /etc/ssl/crt/example.com.crt
provider: assertonly
subject_alt_name:
- www.example.com
- test.example.com
Возвращаемые значения
Общие возвращаемые значения описаны здесь Возвращаемые значения, следующие поля уникальны для этого модуля:
| имя | описание | возвращается | тип | пример |
|---|---|---|---|---|
| filename | Путь к сгенерированному сертификату | изменено или успех | строка | /etc/ssl/crt/www.ansible.com.crt |
Примечания
Примечание
- Все значения ASN.1 TIME должны быть указаны в формате ГГГГММДДЧЧММССZ. Указанная дата должна быть в формате UTC. Минуты и секунды обязательны.
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется обратной совместимостью.
Для помощи в разработке модулей, если вы так пожелаете, прочитайте Информация о сообществе и вклад, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/openssl_certificate_module.html