Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ACMServiceManager.list_certificates_with_backoff() lists only RSA_2048 certificates #1567

Closed
1 task done
gsimon75 opened this issue May 23, 2023 · 0 comments · Fixed by #1570
Closed
1 task done

Comments

@gsimon75
Copy link
Contributor

Summary

In boto3 ACM.client.list_certificates has a default filtering for RSA_2048 certificates:

Default filtering returns only RSA_2048 certificates. For more information, see Filters.

Therefore to retrieve all certificates, we need an explicit Includes.keyTypes = [ 'RSA_1024'|'RSA_2048'|'RSA_3072'|'RSA_4096'|'EC_prime256v1'|'EC_secp384r1'|'EC_secp521r1' ] filter.

The bug is significant, because this call is used by community.aws.acm_certificate module to ensure idempotency, and the parameter block for the boto3 call is a local variable here, there is no other way to fix this.

And if the type of the certificate to be imported is different than RSA_2048, then the idempotency will fail and multiple copies of the same certificate will be imported.

Issue Type

Bug Report

Component Name

acm

Ansible Version

$ ansible --version
ansible [core 2.14.5]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/fules/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/fules/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] (/usr/bin/python3)
  jinja version = 3.0.3
  libyaml = True

Collection Versions

$ ansible-galaxy collection list
Collection                    Version
----------------------------- -------
amazon.aws                    5.4.0
ansible.netcommon             4.1.0
ansible.posix                 1.5.2
ansible.utils                 2.9.0
ansible.windows               1.13.0
arista.eos                    6.0.1
awx.awx                       21.14.0
azure.azcollection            1.15.0
check_point.mgmt              4.0.0
chocolatey.chocolatey         1.4.0
cisco.aci                     2.6.0
cisco.asa                     4.0.0
cisco.dnac                    6.7.1
cisco.intersight              1.0.27
cisco.ios                     4.5.0
cisco.iosxr                   4.1.0
cisco.ise                     2.5.12
cisco.meraki                  2.15.1
cisco.mso                     2.4.0
cisco.nso                     1.0.3
cisco.nxos                    4.3.0
cisco.ucs                     1.8.0
cloud.common                  2.1.3
cloudscale_ch.cloud           2.2.4
community.aws                 5.4.0
community.azure               2.0.0
community.ciscosmb            1.0.5
community.crypto              2.12.0
community.digitalocean        1.23.0
community.dns                 2.5.3
community.docker              3.4.3
community.fortios             1.0.0
community.general             6.6.0
community.google              1.0.0
community.grafana             1.5.4
community.hashi_vault         4.2.0
community.hrobot              1.8.0
community.libvirt             1.2.0
community.mongodb             1.5.2
community.mysql               3.6.0
community.network             5.0.0
community.okd                 2.3.0
community.postgresql          2.3.2
community.proxysql            1.5.1
community.rabbitmq            1.2.3
community.routeros            2.8.0
community.sap                 1.0.0
community.sap_libs            1.4.1
community.skydive             1.0.0
community.sops                1.6.1
community.vmware              3.5.0
community.windows             1.12.0
community.zabbix              1.9.3
containers.podman             1.10.1
cyberark.conjur               1.2.0
cyberark.pas                  1.0.17
dellemc.enterprise_sonic      2.0.0
dellemc.openmanage            6.3.0
dellemc.os10                  1.1.1
dellemc.os6                   1.0.7
dellemc.os9                   1.0.4
dellemc.powerflex             1.6.0
dellemc.unity                 1.6.0
f5networks.f5_modules         1.23.0
fortinet.fortimanager         2.1.7
fortinet.fortios              2.2.3
frr.frr                       2.0.2
gluster.gluster               1.0.2
google.cloud                  1.1.3
grafana.grafana               1.1.1
hetzner.hcloud                1.11.0
hpe.nimble                    1.1.4
ibm.qradar                    2.1.0
ibm.spectrum_virtualize       1.11.0
infinidat.infinibox           1.3.12
infoblox.nios_modules         1.4.1
inspur.ispim                  1.3.0
inspur.sm                     2.3.0
junipernetworks.junos         4.1.0
kubernetes.core               2.4.0
lowlydba.sqlserver            1.3.1
mellanox.onyx                 1.0.0
microsoft.ad                  1.0.0
netapp.aws                    21.7.0
netapp.azure                  21.10.0
netapp.cloudmanager           21.22.0
netapp.elementsw              21.7.0
netapp.ontap                  22.5.0
netapp.storagegrid            21.11.1
netapp.um_info                21.8.0
netapp_eseries.santricity     1.4.0
netbox.netbox                 3.12.0
ngine_io.cloudstack           2.3.0
ngine_io.exoscale             1.0.0
ngine_io.vultr                1.1.3
openstack.cloud               1.10.0
openvswitch.openvswitch       2.1.0
ovirt.ovirt                   2.4.1
purestorage.flasharray        1.17.2
purestorage.flashblade        1.11.0
purestorage.fusion            1.4.2
sensu.sensu_go                1.13.2
splunk.es                     2.1.0
t_systems_mms.icinga_director 1.32.2
theforeman.foreman            3.10.0
vmware.vmware_rest            2.3.1
vultr.cloud                   1.7.0
vyos.vyos                     4.0.2
wti.remote                    1.0.4

# /home/fules/.ansible/collections/ansible_collections
Collection    Version
------------- -------
amazon.aws    6.0.1
community.aws 6.0.0

AWS SDK versions

$ pip show boto boto3 botocore
WARNING: Package(s) not found: boto
Name: boto3
Version: 1.26.137
Summary: The AWS SDK for Python
Home-page: https://github.com/boto/boto3
Author: Amazon Web Services
Author-email:
License: Apache License 2.0
Location: /usr/local/lib/python3.10/dist-packages
Requires: botocore, jmespath, s3transfer
Required-by:
---
Name: botocore
Version: 1.29.137
Summary: Low-level, data-driven core of boto 3.
Home-page: https://github.com/boto/botocore
Author: Amazon Web Services
Author-email:
License: Apache License 2.0
Location: /usr/local/lib/python3.10/dist-packages
Requires: jmespath, python-dateutil, urllib3
Required-by: boto3, s3transfer

Configuration

$ ansible-config dump --only-changed
CONFIG_FILE() = /etc/ansible/ansible.cfg
$ cat /etc/ansible/ansible.cfg
# Since Ansible 2.12 (core):
# To generate an example config file (a "disabled" one with all default settings, commented out):
#               $ ansible-config init --disabled > ansible.cfg
#
# Also you can now have a more complete file by including existing plugins:
# ansible-config init --disabled -t all > ansible.cfg

# For previous versions of Ansible you can check for examples in the 'stable' branches of each version
# Note that this file was always incomplete  and lagging changes to configuration settings

# for example, for 2.9: https://github.com/ansible/ansible/blob/stable-2.9/examples/ansible.cfg

OS / Environment

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

Steps to Reproduce

-
  hosts: localhost
  collections:
    - community.aws
  vars_files:
    - external_vars.yaml
  tasks:
    -
      name: Creating landing page certificate
      acm_certificate:
        profile: "{{ aws_profile }}"
        state: present
        name_tag: "LandingPageCertificate"
        aws_region: "us-east-1"
        certificate: "{{ lookup('file', landing_page.certificate_file_name) }}"
        private_key: "{{ lookup('file', landing_page.private_key_file_name) }}"
        certificate_chain: "{{ lookup('file', landing_page.certificate_chain_file_name) }}"
      register: landing_page_certificate

Expected Results

I expected that the certificate is imported only on the 1st run, and then recognised as already existing on the subsequent calls.

Actual Results

On every run a new copy of the same cert is being imported.

Code of Conduct

  • I agree to follow the Ansible Code of Conduct
softwarefactory-project-zuul bot pushed a commit that referenced this issue Jun 6, 2023
…ilter added (#1570)

ACMServiceManager.list_certificates_with_backoff: explicit key type filter added

SUMMARY
Fixes #1567
ACM.Client.list_certificates requires explicit certificate type filter in order to return the non-RSA_2048 certificates too, and this is needed to ensure the idempotency of importing such certificates.
ISSUE TYPE


Bugfix Pull Request

COMPONENT NAME

acm

Reviewed-by: Mark Chappell
Reviewed-by: Alina Buzachis
patchback bot pushed a commit that referenced this issue Jun 6, 2023
…ilter added (#1570)

ACMServiceManager.list_certificates_with_backoff: explicit key type filter added

SUMMARY
Fixes #1567
ACM.Client.list_certificates requires explicit certificate type filter in order to return the non-RSA_2048 certificates too, and this is needed to ensure the idempotency of importing such certificates.
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

acm

Reviewed-by: Mark Chappell
Reviewed-by: Alina Buzachis
(cherry picked from commit 3926a7d)
softwarefactory-project-zuul bot pushed a commit that referenced this issue Jun 6, 2023
…ilter added (#1570) (#1597)

[PR #1570/3926a7dc backport][stable-6] ACMServiceManager.list_certificates_with_backoff: explicit key type filter added

This is a backport of PR #1570 as merged into main (3926a7d).
SUMMARY
Fixes #1567
ACM.Client.list_certificates requires explicit certificate type filter in order to return the non-RSA_2048 certificates too, and this is needed to ensure the idempotency of importing such certificates.
ISSUE TYPE


Bugfix Pull Request

COMPONENT NAME

acm

Reviewed-by: Alina Buzachis
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants