community.crypto.openssl_certificate_info – Предоставление информации о сертификатах OpenSSL X.509
Примечание
Этот плагин является частью коллекции community.crypto (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.crypto.
Для использования в книге задач укажите: community.crypto.openssl_certificate_info.
Обзор
- Этот модуль позволяет запросить информацию о сертификатах OpenSSL.
- Он использует библиотеки pyOpenSSL или cryptography для взаимодействия с OpenSSL. Если доступны обе библиотеки (и соответствуют минимальным требованиям по версии), cryptography будет предпочтительным бэкендом по сравнению с PyOpenSSL (если бэкенд не принудительно задан с помощью
select_crypto_backend). Обратите внимание, что бэкенд PyOpenSSL был устаревшим в Ansible 2.9 и будет удалён в community.crypto 2.0.0. - Обратите внимание, что этот модуль назывался
openssl_certificate_infoпри непосредственном включении в Ansible до версии 2.9. При перемещении в коллекциюcommunity.crypto, он был переименован в community.crypto.x509_certificate_info. С Ansible 2.10 он по-прежнему может использоваться с прежним коротким именем (или с помощьюansible.builtin.openssl_certificate_info), которое перенаправляет наcommunity.crypto.x509_certificate_info. При использовании полных имён классов или ключевого слова collections следует использовать новое имя community.crypto.x509_certificate_info, чтобы избежать предупреждения об устаревании.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- PyOpenSSL >= 0.15 или cryptography >= 1.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| content строка добавлено в 1.0.0 community.crypto | Содержание сертификата X.509 в формате PEM. Должен быть указан либо path, либо content, но не оба. | |
| path путь | Полный путь к файлу сертификата на удалённом сервере. Должен быть указан либо path, либо content, но не оба. | |
| select_crypto_backend строка |
| Определяет, какой криптографический бэкенд использовать. По умолчанию выбирается auto, который пытается использовать cryptography если доступен, и возвращается к pyopenssl. Если задано pyopenssl, будет попытка использования библиотеки pyOpenSSL.Если задано cryptography, будет попытка использования библиотеки cryptography.Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удалён в community.crypto 2.0.0. С этого момента будет доступен только бэкенд cryptography. |
| valid_at словарь | Словарь имён, сопоставленных со временными спецификациями. Для каждой указанной здесь временной точки будет проверяться, действителен ли сертификат в этот момент. См. возвращаемое значение valid_at, чтобы получить информацию о результате.Время может быть указано либо как относительное время, либо как абсолютная временная метка. Время всегда интерпретируется как UTC. Допустимый формат - [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h, и ASN.1 TIME (т.е. шаблон YYYYMMDDHHMMSSZ). Обратите внимание, что все временные метки будут обрабатываться как UTC. |
Примечания
Примечание
- Все значения временных меток предоставляются в формате ASN.1 TIME, то есть, следуя шаблону
YYYYMMDDHHMMSSZ. Все они в UTC.
См. также
См. также
- community.crypto.x509_certificate
-
Официальная документация модуля community.crypto.x509_certificate.
- community.crypto.x509_certificate_pipe
-
Официальная документация модуля community.crypto.x509_certificate_pipe.
Примеры
- 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
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
assert:
that:
- result.valid_at.point_1 # valid in one day
- not result.valid_at.point_2 # not valid in three weeks
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание | |
|---|---|---|---|
| authority_cert_issuer список / элементы=строка | успех, если используется не бэкэнд pyOpenSSL | Издатель сертификата уполномоченного органа в виде списка общих имён. Возвращает none, если расширение AuthorityKeyIdentifier отсутствует.Пример: [DNS:www.ansible.com, IP:1.2.3.4] | |
| authority_cert_serial_number целое число | успех, если используется не бэкэнд pyOpenSSL | Серийный номер сертификата уполномоченного органа. Возвращает none, если расширение AuthorityKeyIdentifier отсутствует.Пример: 12345 | |
| authority_key_identifier строка | успех, если используется не бэкэнд pyOpenSSL | Идентификатор ключа уполномоченного органа. Идентификатор возвращается в шестнадцатеричном формате, с использованием : для разделения байтов.Возвращает none, если расширение AuthorityKeyIdentifier отсутствует.Пример: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33 | |
| basic_constraints список / элементы=строка | успех | Элементы расширения basic_constraints, или none если расширение отсутствует.Пример: [CA:TRUE, pathlen:1] | |
| basic_constraints_critical логическое значение | успех | Является ли расширение basic_constraints критичным. | |
| expired логическое значение | успех | Истек ли сертификат (т.е. notAfter в прошлом) | |
| extended_key_usage список / элементы=строка | успех | Элементы расширения extended_key_usage, или none если расширение отсутствует.Пример: [Biometric Info, DVCS, Time Stamping] | |
| extended_key_usage_critical логическое значение | успех | Является ли расширение extended_key_usage критичным. | |
| extensions_by_oid словарь | успех | Возвращает словарь для каждого расширения OID Пример: {"1.3.6.1.5.5.7.1.24": { "critical": false, "value": "MAMCAQU="}} | |
| critical логическое значение | успех | Является ли расширение критичным. | |
| value строка | успех | Значение расширения в кодировке Base64 (в формате DER). Пример: MAMCAQU= | |
| fingerprints словарь добавлен в 1.2.0 community.crypto | успех | Отпечатки пальцев DER-кодированной формы всего сертификата. Для каждого доступного алгоритма хеширования вычисляется отпечаток пальца. Пример: {'sha256': 'd4:b3:aa:6d:c8:04:ce:4e:ba:f6:29:4d:92:a3:94:b0:c2:ff:bd:bf:33:63:11:43:34:0f:51:b0:95:09:2f:63', 'sha512': 'f7:07:4a:f0:b0:f0:e6:8b:95:5f:f9:e6:61:0a:32:68:f1... | |
| issuer словарь | успех | Издатель сертификата. Обратите внимание, что для повторяющихся значений будет возвращено только последнее. Пример: {"organizationName": "Ansible", "commonName": "ca.example.com"} | |
| issuer_ordered список / элементы=список | успех | Издатель сертификата в виде упорядоченного списка кортежей. Пример: [["organizationName", "Ansible"], ["commonName": "ca.example.com"]] | |
| key_usage строка | успех | Элементы расширения key_usage, или none если расширение отсутствует.Пример: [Key Agreement, Data Encipherment] | |
| key_usage_critical логическое значение | успех | Является ли расширение key_usage критичным. | |
| not_after строка | успех |
Дата истечения действия в формате ASN.1 TIME Пример: 20190413202428Z | |
| not_before строка | успех |
Дата начала действия в формате ASN.1 TIME Пример: 20190331202428Z | |
| ocsp_must_staple логическое значение | успех | yes если расширение OCSP Must Staple присутствует, none в противном случае. | |
| ocsp_must_staple_critical логическое значение | успех | Является ли расширение ocsp_must_staple критичным. | |
| ocsp_uri строка | успех | URI OCSP-ответчика, если он включён в сертификат. Будет none, если URI OCSP-ответчика не указан. | |
| public_key строка | успех | Открытый ключ сертификата в формате PEM. Пример: -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A... | |
| public_key_fingerprints словарь | успех | Отпечатки пальцев открытого ключа сертификата. Для каждого доступного алгоритма хеширования вычисляется отпечаток пальца. Пример: {'sha256': 'd4:b3:aa:6d:c8:04:ce:4e:ba:f6:29:4d:92:a3:94:b0:c2:ff:bd:bf:33:63:11:43:34:0f:51:b0:95:09:2f:63', 'sha512': 'f7:07:4a:f0:b0:f0:e6:8b:95:5f:f9:e6:61:0a:32:68:f1... | |
| serial_number целое число | успех | Серийный номер сертификата. Пример: 1234 | |
| signature_algorithm строка | успех | Алгоритм подписи, используемый для подписания сертификата. Пример: sha256WithRSAEncryption | |
| subject словарь | успех | Субъект сертификата в виде словаря. Обратите внимание, что для повторяющихся значений будет возвращено только последнее. Пример: {"commonName": "www.example.com", "emailAddress": "test@example.com"} | |
| subject_alt_name список / элементы=строка | успех | Элементы расширения subject_alt_name, или none если расширение отсутствует.Пример: [DNS:www.ansible.com, IP:1.2.3.4] | |
| subject_alt_name_critical логическое значение | успех | Является ли расширение subject_alt_name критичным. | |
| subject_key_identifier строка | успех, если используется не бэкэнд pyOpenSSL | Идентификатор ключа субъекта. Идентификатор возвращается в шестнадцатеричном формате, с использованием : для разделения байтов.Возвращает none, если расширение SubjectKeyIdentifier отсутствует.Пример: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33 | |
| subject_ordered список / элементы=список | успех | Субъект сертификата в виде упорядоченного списка кортежей. Пример: [["commonName", "www.example.com"], ["emailAddress": "test@example.com"]] | |
| valid_at словарь | успех | Для каждой даты в опции valid_at, возвращается логическое значение, указывающее, действителен ли сертификат в этот момент времени. | |
| version целое число | успех | Версия сертификата. Пример: 3 | |
Авторы
- Felix Fontein (@felixfontein)
- Yanis Guenane (@Spredzy)
- Markus Teufelberger (@MarkusTeufelberger)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/crypto/openssl_certificate_info_module.html