SUPPORT-8592. Настройка cp_file перенесена из [sign] в [main]

This commit is contained in:
alashkova 2024-10-10 12:17:33 +03:00
parent 9e85e4e8de
commit 473a009905
7 changed files with 24 additions and 23 deletions

View file

@ -46,8 +46,9 @@ cmake -DCONFIG_NAME=/opt/ervu-sign-module.conf ..
Приложение настраивается в конфигурационном файле, заданном на этапе сборки (по умолчанию, /etc/ervu-sign-module.conf).
- В секции **\[main\]** задать количество воркеров
worker_processes = 10 *\# значение по умолчанию: 10*
- В секции **\[main\]** задать общие настройки:
worker_processes = 10 *\# количество воркеров (значение по умолчанию: 10)*
cp_file = libcapi20.so *\# путь до файла библиотеки криптопровайдера*
- В секции **\[fcgi\]** задать настройки fcgi-сервера:
fcgi_listen_port = 9009 *\# значение по умолчанию: 9009, должно совпадать со значением в nginx.conf*
@ -56,7 +57,6 @@ fcgi_thread_pool_size = 1 *\# значение по умолчанию: 1*
- В секции **\[sign\]** задать настройки модуля подписания:
location = /sign *\# значение по умолчанию: /sign, должно совпадать со значением в nginx.conf*
cp_file = libcapi20.so *\# путь до файла библиотеки криптопровайдера*
signer_subject = signer@example.ru *\# email, ИНН, СНИЛС или любая другая строка из свойства контейнера «Субъект»*
pin = \*\*\*\* *\# пароль от контейнера*

View file

@ -1,5 +1,6 @@
[main]
#worker_processes = 10
cp_file = /opt/cprocsp/lib/amd64/libcapi20.so
[fcgi]
fcgi_listen_port = 9009
@ -8,6 +9,5 @@ fcgi_listen_host = 127.0.0.1
[sign]
#location = /sign
cp_file = /opt/cprocsp/lib/amd64/libcapi20.so
signer_subject = signer@example.ru
pin = ****

View file

@ -3,8 +3,9 @@
#include <assert.h>
#include <stdlib.h>
#define MAIN_CONF_SECTION "main"
#define MAIN_CONF_KEY_WORKER_PROCESSES "worker_processes"
#define MAIN_CONF_SECTION "main"
#define MAIN_CONF_KEY_WORKER_PROCESSES "worker_processes"
#define MAIN_CONF_KEY_CP_FILE "cp_file"
/* default configuration values: */
static const int FCGI_CONF_DEFAULT_WORKER_PROCESSES = 10;
@ -40,6 +41,14 @@ main_conf_load(main_conf_t* conf, const char *filename, const conf_file_context_
CONF_FILE_VALUE_POSITIVE_INT,
&FCGI_CONF_DEFAULT_WORKER_PROCESSES
},
{
MAIN_CONF_SECTION,
MAIN_CONF_KEY_CP_FILE,
&(conf->cp_file),
CONF_FILE_VALUE_STRING,
CONF_FILE_VALUE_NONE,
NULL
},
};
if (conf_file_load_values(conf_file, fields, sizeof(fields) / sizeof(conf_file_field_t))) {
@ -70,6 +79,7 @@ main_conf_clear(main_conf_t* conf)
return;
}
free(conf->cp_file);
free(conf->conf_file);
memset(conf, 0, sizeof(main_conf_t));
}

View file

@ -5,6 +5,7 @@
typedef struct main_conf_s {
int worker_processes;
char *cp_file; /* файл криптопровайдера */
char *conf_file;
} main_conf_t;

View file

@ -6,7 +6,6 @@
#define SIGN_CONF_SECTION "sign"
#define SIGN_CONF_KEY_LOCATION "location"
#define SIGN_CONF_KEY_CP_FILE "cp_file"
#define SIGN_CONF_KEY_SIGNER "signer_subject"
#define SIGN_CONF_KEY_PIN "pin"
@ -64,14 +63,6 @@ sign_conf_load(sign_conf_t *conf, const conf_file_context_t conf_file)
CONF_FILE_VALUE_LOCATION,
&SIGN_CONF_DEFAULT_LOCATION
},
{
SIGN_CONF_SECTION,
SIGN_CONF_KEY_CP_FILE,
&(conf->cp_file),
CONF_FILE_VALUE_STRING,
CONF_FILE_VALUE_NONE,
NULL
},
{
SIGN_CONF_SECTION,
SIGN_CONF_KEY_SIGNER,
@ -116,7 +107,6 @@ sign_conf_clear(sign_conf_t *conf)
str_t_clear(&conf->pin);
str_t_clear(&conf->location);
free(conf->cp_file);
free(conf->signer);
memset(conf, 0, sizeof(sign_conf_t));
@ -135,11 +125,6 @@ sign_service_create(const sign_conf_t *conf)
hsign->conf = conf;
if (!cryptopro_init(conf->cp_file)) {
LOG_ERROR("Could not init Cryptographic Provider");
goto error;
}
cryptopro_context_set(&hsign->cryptopro_ctx, conf->signer, &conf->pin);
LOG_TRACE("sign_service_create exit");

View file

@ -11,8 +11,6 @@ typedef struct sign_service_t* HSign;
typedef struct sign_conf_s {
str_t location;
char *cp_file; /* файл криптопровайдера */
char *signer; /* субъект контейнера */
str_t pin; /* pin-код от контейнера */

View file

@ -1,5 +1,7 @@
#include "service_manager.h"
#include "utils/cryptopro.h"
#include <assert.h>
@ -217,6 +219,11 @@ init_services(service_manager_t* services, const service_manager_conf_t* service
goto error;
}
if (!cryptopro_init(services_cf->main_cf.cp_file)) {
LOG_ERROR("Could not init Cryptographic Provider");
goto error;
}
services->hsign = sign_service_create(&services_cf->sign_cf);
if (services->hsign == NULL) {
goto error;