API OpenXPKI настраивает рабочие процессы для вывода списков сертификатов через curl

Я изо всех сил пытаюсь получить несколько полезных выходных данных curl из API сервера openxpki rpc. Я возился с попытками настроить свои собственные рабочие процессы в /etc/openxpki/config.d/realm.tpl/workflow/def , но ни один из них не сработал. Вместо этого я попытался отредактировать базовый метод SearchCertificate :

      action:
    initialize:
        class: OpenXPKI::Server::Workflow::Activity::Tools::SearchCertificates
        param:
            _map_cert_subject: "CN=[% context.common_name %],*"
            order: notbefore desc
            include_revoked: 0
            include_expired: 1
            limit: 50

        input:
          - common_name

        validator:
          - common_name

    get_certificate_data:
        class: OpenXPKI::Server::Workflow::Activity::Tools::SetContext
        param:
            _map_notbefore: "[% USE Certificate %][% Certificate.notbefore(context.cert_identifier) %]"
            _map_notafter: "[% USE Certificate %][% Certificate.notafter(context.cert_identifier) %]"
            _map_status: "[% USE Certificate %][% Certificate.status(context.cert_identifier) %]"

condition:
    has_result:
         class: Workflow::Condition::Evaluate
         param:
             test: $context->{cert_identifier}

validator:
    common_name:
        class: OpenXPKI::Server::Workflow::Validator::Regex
        arg:
          - $common_name
        param:
            regex: "\\A [a-zA-Z0-9-\\.\\:]+"
            modifier: xi

field:
    common_name:
        name: common_name
        required: 0
        type: server

Моя цель здесь — получить список сертификатов с истекающим сроком действия без необходимости вводить в скрипт многочисленные имена хостов. К сожалению, этот рабочий процесс, похоже, не выводит несколько хостов, захваченных регулярными выражениями, например . .mydomain.com*, без common_name ничего не выводит (см. param:limit, field:required). Я также пробовал пользовательские параметры, такие как notafter , пока безрезультатно. Официальной документации также не хватает для пользовательских рабочих процессов. Я был бы очень признателен за любые указатели, привет!

РЕДАКТИРОВАТЬ Пример вывода из завитка:

      curl -F "method=SearchCertificate" -F "common_name=hostname1"  http://localhost:80/rpc    
{"result":{"pid":8045,"id":0,"data":{"cert_identifier":"ZzWtdso_jTxpnDcb_cckUn5X6A0","status":"ISSUED","notafter":"2025-07-20T08:11:05","notbefore":"2022-07-20T08:11:05"},"proc_state":"finished","state":"SUCCESS"}}[09:52:40]

1 ответ

По умолчанию вstateэто определяется так

      state:
INITIAL:
    action:
      - initialize > RESULT

RESULT:
    autorun: 1
    action:
      - get_certificate_data > SUCCESS ? has_result
      - global_noop > NORESULT ? !has_result

NORESULT: ~

SUCCESS: ~

Это означает, что сначала при инициализации мы запрашиваем один сертификат, а затем передаем его действию.

Если вы хотите получить список. Вам нужно удалитьlimit: single, после этого упакуйте результат в массив и вызовитеget_certificate_dataдля каждого элемента и упаковать его в результат. См. справочный пример revoke_workflow .

Другие вопросы по тегам