From 8e81edc58a2bea5d84259be0b3450d065317c7f3 Mon Sep 17 00:00:00 2001 From: alashkova Date: Thu, 12 Sep 2024 13:35:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=98=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B5.md=20=D0=B8=20=D0=98=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D1=83=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BA=D0=B5.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 63 +++----------------- Инструкция по сборке.md | 33 +++++++++++ Инструкция по установке.md | 116 +++++++++++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+), 54 deletions(-) create mode 100644 Инструкция по сборке.md create mode 100644 Инструкция по установке.md diff --git a/README.md b/README.md index b616b1d..096a6b7 100644 --- a/README.md +++ b/README.md @@ -28,66 +28,21 @@ $ curl -v http://127.0.0.1:8080/sign -H "Content-Type: text/plain" -d "test" urlSafeBase64_of_signed_string_test ``` -## Сборка и установка +## Сборка из исходников -### Подготовка +Инструкции по сборке из исходников см. "Инструкция по сборке.md" -1. Установить КриптоПро. - -2. Установить сертификат для пользователя, под которым будет запускаться данное приложение. - -3. Установить nginx. - -4. В настройках nginx добавить перенаправление на данное приложение: -``` -location = /sign { - fastcgi_pass localhost:9009; - include fastcgi_params; -} -``` - -### Cборка из исходников - -Для **сборки** необходимы следующие библиотеки: -- cmake -- gcc -- gcc10 -- glib2-devel -- libfcgi-devel -- lsb-cprocsp-base -- lsb-cprocsp-rdr-64 -- lsb-cprocsp-kc1-64 -- lsb-cprocsp-capilite-64 -- cprocsp-curl-64 -- lsb-cprocsp-ca-certs -- cprocsp-pki-cades-64 -- lsb-cprocsp-devel - -Для **установки** необходимы следующие библиотеки: -- glib2 -- libfcgi -- lsb-cprocsp-base -- lsb-cprocsp-rdr-64 -- lsb-cprocsp-kc1-64 -- lsb-cprocsp-capilite-64 -- cprocsp-curl-64 -- lsb-cprocsp-ca-certs -- cprocsp-pki-cades-64 - -Для сборки и установки приложения из исходников, выполните следующие команды: -``` -$ mkdir .build && cd .build -$ cmake .. -$ make -j$(nproc) -``` - -Чтобы задать произвольное имя конфигурационного файла, при сборке приложения необходимо задать параметр CONFIG_NAME. +Примечание. Чтобы задать произвольное имя конфигурационного файла, при сборке приложения необходимо задать параметр CONFIG_NAME. Пример: ``` -cmake -DCONFIG_NAME=/opt/ervu-sign-module.conf +cmake -DCONFIG_NAME=/opt/ervu-sign-module.conf .. ``` -### Настройка +## Установка + +Инструкции по установке см. "Инструкция по установке.md" + +## Настройка Приложение настраивается в конфигурационном файле, заданном на этапе сборки (по умолчанию, /etc/ervu-sign-module.conf). diff --git a/Инструкция по сборке.md b/Инструкция по сборке.md new file mode 100644 index 0000000..aef7319 --- /dev/null +++ b/Инструкция по сборке.md @@ -0,0 +1,33 @@ +## Сборка модуля подписания + +### Установка КриптоПро + +1. Скачать КриптоПро 5 R3 КС3. + +2. Установить КриптоПро. Для этого выполнить команды от имени root: +``` bash +tar -zxvf linux-amd64.tgz && cd ./linux-amd64/ +./install.sh +apt-get install ./cprocsp-pki-cades-64-2.0.14815-1.amd64.rpm +apt-get install ./lsb-cprocsp-devel-5.0.12800-7.noarch.rpm +cd - +``` + +### Сборка ervu-sign-module + +1. Установить зависимости для сборки приложения: +``` bash +apt-get install cmake gcc gcc10 +apt-get install glib2-devel libfcgi-devel +``` + +2. Собрать приложение из исходников: +``` bash +cd ervu-sign-module/ + +mkdir .build && cd .build +cmake .. +make -j$(nproc) +``` + +Результатом сборки будет файл ervu-sign-module в папке .build/ \ No newline at end of file diff --git a/Инструкция по установке.md b/Инструкция по установке.md new file mode 100644 index 0000000..563e6c0 --- /dev/null +++ b/Инструкция по установке.md @@ -0,0 +1,116 @@ +## Установка модуля подписания + +### Создание пользователя ervu + +1. Создать пользователя ervu. Для этого выполнить команды от имени root: +``` bash +adduser --system --no-create-home --user-group ervu +``` + +### Установка и настройка КриптоПро + +1. Скачать КриптоПро 5 R3 КС3. + +2. Установить КриптоПро. Для этого выполнить команды от имени root: +``` bash +tar -zxvf linux-amd64.tgz && cd ./linux-amd64/ +./install.sh +apt-get install ./cprocsp-pki-cades-64-2.0.14815-1.amd64.rpm +cd - +``` + +3. Активировать лицензию: +``` bash +/opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер" +``` + +4. Установить сертификат для пользователя ervu (команды выполняются от имени **ervu**): +``` bash +mkdir /var/opt/cprocsp/keys/ervu/ +cp -r key_cont.000/ /var/opt/cprocsp/keys/ervu/ +chmod 700 /var/opt/cprocsp/keys/ervu/key_cont.000 +chmod 600 /var/opt/cprocsp/keys/ervu/key_cont.000/* +chown -R ervu:ervu /var/opt/cprocsp/keys/ervu/key_cont.000/ +/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov +``` + +### Установка и настройка nginx + +Дальнейшие шаги выполняются от имени root: + +1. Установить nginx: +``` bash +apt-get install nginx +``` + +2. Скопировать файл настроек для nginx: +``` bash +cp conf/nginx.conf /etc/nginx/ +``` + +3. Запустить nginx: +``` bash +systemctl start nginx +``` + +### Установка и настройка ervu-sign-module + +1. Установить зависимости для запуска приложения: +``` bash +apt-get install glib2 libfcgi +``` + +2. Скопировать исполняемый файл: +``` bash +mkdir /opt/ervu-sign-module/ +cp ./ervu-sign-module /opt/ervu-sign-module/ +``` + +3. Скопировать файл настроек: +``` bash +cp conf/ervu-sign-module.conf /etc/ +``` + +4. Скопировать юнит: +``` bash +cp ./ervu-sign-module.service /etc/systemd/system/ +``` + +4. Включить запуск службы при загрузке: +``` bash +systemctl enable ervu-sign-module +``` + +5. Запустить службу: +``` bash +systemctl start ervu-sign-module +``` + +### Проверка + +Для проверки работы модуля выполните команду: +``` bash +curl -v http://127.0.0.1/sign -H "Content-Type: text/plain" -d "test" +``` + +Вывод должен быть примерно таким (статус-код ответа должен быть равен 200 OK) +``` +* Trying 127.0.0.1:80... +* Connected to 127.0.0.1 (127.0.0.1) port 80 +> POST /sign HTTP/1.1 +> Host: 127.0.0.1 +> User-Agent: curl/8.4.0 +> Accept: */* +> Content-Type: text/plain +> Content-Length: 4 +> +< HTTP/1.1 200 OK +< Server: nginx/1.24.0 +< Date: Tue, 20 Aug 2024 12:00:25 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Connection: keep-alive +< +REFlyzGQrCjX9DvA7hWwN9vf5kPqBxcG4TLYnXUHnAS9_G-sLAFvaJei2OhxpaWNraHbOv_mMsM_bcDsXWiC0Q +* Connection #0 to host 127.0.0.1 left intact +``` \ No newline at end of file