Как собрать и передать значение отпечатка сертификата из win_certificate_store в модуль win_iis_webbinding - PullRequest
0 голосов
/ 06 мая 2020

Я не могу зарегистрировать значение отпечатка сертификата из модуля win_certificate_store в формате, который его принял бы модуль win_iis_webbinding.

Вот мои ansible задачи:

- name: Import certificate to Target local cert store
  win_certificate_store:
    path: C:\Certs\{{ansible_hostname}}.cert.p12
    file_type: pkcs12
    password: XXXXXXXXXX
    store_location: LocalMachine
    key_storage: machine
    state: present
  register: cert_import

- name: Debug thumbprints variable
  debug:
    var: cert_import.thumbprints

- name: Bind the issued certificate to Default Web Site in IIS
  win_iis_webbinding:
    name: Default Web Site
    protocol: https
    port: 443
    certificate_hash: "{{ cert_import.thumbprints }}"
    state: present

И вот результат:

TASK [Import certificate to Target local cert store] *******************************************************************************************************************************
task path: /home/weseroot/.ansible/roles/certman/tasks/import_bind_cert.yml:7
Using module file /usr/local/lib/python3.6/dist-packages/ansible/modules/windows/win_certificate_store.ps1
Pipelining is enabled.
<10.0.0.5> ESTABLISH WINRM CONNECTION FOR USER: weseadmin on PORT 5985 TO 10.0.0.5
EXEC (via pipeline wrapper)
ok: [10.0.0.5] => {
    "changed": false,
    "invocation": {
        "module_args": {
            "file_type": "pkcs12",
            "key_exportable": true,
            "key_storage": "machine",
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "path": "C:\\Certs\\w2016-IIS-1.cert.p12",
            "state": "present",
            "store_location": "LocalMachine",
            "store_name": "My",
            "thumbprint": null
        }
    },
    "thumbprints": [
        "C85F1FC23B89DFB88416EDFAE9C91C586515C8ED"
    ]
}

TASK [Debug thumbprints variable] **************************************************************************************************************************************************
task path: /home/weseroot/.ansible/roles/certman/tasks/import_bind_cert.yml:17
ok: [10.0.0.5] => {
    "cert_import.thumbprints": [
        "C85F1FC23B89DFB88416EDFAE9C91C586515C8ED"
    ]
}

TASK [Bind the issued certificate to Default Web Site in IIS] **********************************************************************************************************************
task path: /home/weseroot/.ansible/roles/certman/tasks/import_bind_cert.yml:27
Using module file /usr/local/lib/python3.6/dist-packages/ansible/modules/windows/win_iis_webbinding.ps1
Pipelining is enabled.
<10.0.0.5> ESTABLISH WINRM CONNECTION FOR USER: weseadmin on PORT 5985 TO 10.0.0.5
EXEC (via pipeline wrapper)
The full traceback is:
Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: System.Object[]
At line:157 char:15
+     If (-Not (Test-Path $cert_path) )
+               ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Test-Path], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : GetDynamicParametersException,Microsoft.PowerShell.Commands.TestPathCommand

ScriptStackTrace:
at <ScriptBlock>, <No file>: line 157

fatal: [10.0.0.5]: FAILED! => {
    "changed": false,
    "msg": "Unhandled exception while executing module: Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: System.Object[]"
}

Есть предложения, как можно передать переменную отпечатка в модуль win_iis_webbinding в приемлемом формате?

1 Ответ

0 голосов
/ 08 августа 2020

Хорошо, я не знаю, ищете ли вы все еще ответ, но я искал. win_certificate_store возвращает словарь с ключом 'thumbprints', привязанным к списку:

TASK [Debug thumbprints variable] **************************************************************************************************************************************************
task path: /home/weseroot/.ansible/roles/certman/tasks/import_bind_cert.yml:17
ok: [10.0.0.5] => {
    "cert_import.thumbprints": [
        "C85F1FC23B89DFB88416EDFAE9C91C586515C8ED"
    ]
}

Вам нужно сделать что-то вроде этого:

- name: Import certificate to Target local cert store
  win_certificate_store:
    path: C:\Certs\{{ansible_hostname}}.cert.p12
    file_type: pkcs12
    password: XXXXXXXXXX
    store_location: LocalMachine
    key_storage: machine
    state: present
  register: cert_import

- name: Debug thumbprints variable
  debug:
    var: cert_import.thumbprints

- name: Bind the issued certificate to Default Web Site in IIS
  win_iis_webbinding:
    name: Default Web Site
    protocol: https
    port: 443
    certificate_hash: "{{ cert_import.thumbprints[-1] }}"
    state: present
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...