НСПК: Подпись файла тестовым сертификатом для подписи

Для начала нужно получить закрытый ключ в формате, который может прочитать openssl. Для этого из утилиты xca, экспортируем ключ в формате p12:

Далее извлекаем закрытый ключ:

openssl pkcs12 -in SignRTP.p12 -nocerts -nodes -out p1.pem

Подписывать можно командой вида:

openssl dgst -engine gost -md_gost12_256 -binary -sign p1.pem 1.txt | base64

НСПК: Создание заявки на тестовый сертификат

Для того чтобы его оформить, нужно загрузить файл заявки. Теоретически можно создать её при помощи Крипто-АРМ, но под рукой его не оказалось, за сим создавал его при помощи графической утилиты xca, входящей в состав Astra Linux. Из особенностей:

Алгоритм подписи должен быть ГОСТ Р 34.11 2012 356

Закрытый ключ должен быть таким:

Grafana: выборка в запросе диапазона дат из переменных

Если требуется обработать и показать данные по выбранному диапазону, то необходимо использовать в запросе переменные $__from и $__to. Однако стоит учитывать, что они в запросе встают как время с эпохи unix. А именно большое длинное число. Поэтому если например в БД у даты типа дата, без времени, то приходится использовать преобразование вида:

EXTRACT(EPOCH from agreements_dt)*1000

Чтобы из даты вида 2026-01-01 получить 1767214800000. Ну и соответственно в запросе:

select to_char(date_trunc('day', dt), 'YYYY-MM-DD'),count(*) as "Великоустюгское территориальное отделение" from (
                    select 
                            date_trunc('month', agreements_dt)::date as dt
                    from 
                            ls 
                    where EXTRACT(EPOCH from agreements_dt)*1000 between $__from and $__to and owner='000000003' and agreements_dt is not null
                    ) as agr
            group by dt 
            order by dt	asc

Grafana: корректное отображение даты

Иногда при построении графика (например Bar chart) на основании запроса в PostreSQL, дата отображается не верно, а именно, примерно так:

Для того чтобы сиё поправить, нужно привести дату строго в формат YYYY-MM-DD. Например так:

select to_char(date_trunc('day', dt), 'YYYY-MM-DD'),count(*) as "${division:text}" from (
                    select 
                            date_trunc('month', agreements_dt)::date as dt
                    from 
                            ls 
                    where agreements_dt>'2018-01-01' and
							owner in ('$division') and
                            agreements_dt is not null
                    ) as agr
            group by dt
            order by dt	desc

В итоге получится вот это:

Преобразование сертификата для подписи ГИС ЖКХ

Дано: флешка с сертификатом для подписи сообщений для ГИС ЖКХ,

Задача: выдернуть с рутокена контейнер в формате p12 и расчленить его на сертификат+открытый ключ+закрытый ключ. Задачу уже подобную год назад решал, но как оказалось мануал который сам для себя тогда делал немножко не точный. Потому обновлю.

Решение:

  1. Для получения файла с токена необходимо воспользоваться P12FromGostCSP
  2. Сертификат: openssl pkcs12 -in p12.pfx -clcerts -nokeys -out public.crt
  3. Публичный ключ: openssl x509 -in public.crt -out public.pem -outform PEM
  4. Закрытый ключ без пароля: openssl pkcs12 -in p12.pfx -nocerts -out key.pem -nodes

1 2 3 61