Статус: Сотрудник
Группы: Участники
Зарегистрирован: 31.08.2017(UTC) Сообщений: 49 Сказал(а) «Спасибо»: 1 раз Поблагодарили: 17 раз в 16 постах
|
ВНИМАНИЕ! Это устаревшая инструкция! Вместо openssl+gostengy надо использовать легализованный в КриптоПро CSP 5.0 R2 патч на nginx: https://www.cryptopro.ru...sp/tls/gost-nginx-apache https://support.cryptopr...-c-podderzhkojj-gost-tls Старая инструкцияПри настройке можно использовать скрипты. Тем, кто хочет опробовать nginx, требуется следующее (пользователь root): Собрать nginx с openssl-1.1.0Предполагается, что на системе имеется набор стандартных программ (wget, ...). Вариант 1: на Ubuntu, Debian, CentOS, Red Hat, Astra можно попробовать воспользоваться нашим bash-скриптом.Для этого нужно: 1) скачать данный скрипт и выставить права на запуск: Код:wget https://raw.githubusercontent.com/CryptoPro/nginx-gost/master/nginx-gost/install-nginx.sh && chmod +x install-nginx.sh
2) скачать CSP (на Ubuntu, Debian архив с deb пакетами, на CentOS, Red Hat с rpm пакетами); 3) положить CSP-архив и файл install-nginx.sh в одну директорию; 4) запустить ./install-nginx.sh --csp=<название архива CSP> от пользователя root, например: Код:./install-nginx.sh --csp=linux-amd64_deb.tgz
После корректной работы будут установлены: 1) openssl-1.1.0 вместе с libgostengy; 2) CSP (поверх старого, если он был); 3) nginx; 4) zlib и pcre (нужно для nginx); 5) git (если его не было). Если что-то пошло не так, можно попробовать запустить команды по порядку. Узнать список команд можно из файла --command_list после выполнения Код:./install-nginx.sh --command_list
Вариант 2: самостоятельно. Установка сертификата и настройка nginxВариант 1: воспользоваться нашим скриптом.Для этого нужно: 1) скачать скрипт и выставить права на запуск: Код:wget https://raw.githubusercontent.com/CryptoPro/nginx-gost/master/nginx-gost/install-certs.sh && chmod +x install-certs.sh
2) запустить скрипт: Вариант 2: самостоятельно, действуя по инструкции.Генерация тестового сертификата: Код:/opt/cprocsp/bin/amd64/cryptcp -creatcert -provtype 81 -provname 'Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP' -rdn 'CN=srvtest' -cont '\\.\HDIMAGE\srvtest' -certusage 1.3.6.1.5.5.7.3.1 -ku -du -ex -ca http://testgost2012.cryptopro.ru/certsrv
Смена KC1 на KC2 в имени провайдера, так как nginx работает с провайдером KC2: Код:/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\srvtest' -provtype 81 -provname "Crypto-Pro GOST R 34.10-2012 KC2 Strong CSP"
Экспорт сертификата: Код:/opt/cprocsp/bin/amd64/certmgr -export -cert -dn "CN=srvtest" -dest '/etc/nginx/srvtest.cer'
Смена кодировкии сертификата DER на PEM: Код:openssl x509 -inform DER -in "/etc/nginx/srvtest.cer" -out "/etc/nginx/srvtest.pem"
Генерация сертификата RSA: Код:openssl req -x509 -newkey rsa:2048 -keyout /etc/nginx/srvtestRSA.key -nodes -out /etc/nginx/srvtestRSA.pem -subj '/CN=srvtestRSA/C=RU' &&
openssl rsa -in /etc/nginx/srvtestRSA.key -out /etc/nginx/srvtestRSA.key
В кофигурации nginx (в конец файла /etc/nginx/nginx.conf) рекомендуется указать следующие параметры: Код: # HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/srvtest.pem;
ssl_certificate_key engine:gostengy:srvtest;
ssl_certificate srvtestRSA.pem;
ssl_certificate_key srvtestRSA.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89:HIGH;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Создание пользователя и systemdСоздать пользователя: Код:
getent group nginx >/dev/null || groupadd -r nginx
getent passwd nginx >/dev/null || useradd -r -g nginx -s /sbin/nologin -d /var/cache/nginx -c "nginx user" nginx
Создать systemd (для Centos 7) файл service /usr/lib/systemd/system/nginx.service: Код:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Также в начале файла /etc/nginx/nginx.conf укажите: Код:user = <имя пользователя>
Команды для проверки (система Ubuntu)После выполнения всех шагов, можно пробовать запускать nginx: Код:root@test-nginx:~# /usr/sbin/nginx
Проверка установки openssl-1.1.0: Код:root@test-nginx:~# /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gostengy) CryptoPro GostEngy ($Revision: 161714 $)
Проверка установки nginx: Код:root@test-nginx:~# /usr/sbin/nginx -V
nginx version: nginx/1.12.1
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1)
built with OpenSSL 1.1.0g-dev xx XXX xxxx
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=root --group=nginx --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
Установленные пакеты CSP: Код:root@test-nginx:~# dpkg-query --list | grep csp
ii cprocsp-compat-debian 1.0.0-1 all CryptoPro CSP compatibility extension for non-LSB Debian/Ubuntu
ii cprocsp-cpopenssl-110-64 4.0.0-5 amd64 OpenSSL-110. Build 9920.
ii cprocsp-cpopenssl-110-base 4.0.0-5 all Openssl-110 common Build 9920.
ii cprocsp-cpopenssl-110-devel 4.0.0-5 all Openssl-110 devel Build 9920.
ii cprocsp-cpopenssl-110-gost-64 4.0.0-5 amd64 OpenSSL-110 capi_gost engine. Build 9920.
ii cprocsp-curl-64 4.0.0-5 amd64 CryptoPro Curl shared library and binaris. Build 9914.
ii lsb-cprocsp-base 4.0.0-5 all CryptoPro CSP directories and scripts. Build 9914.
ii lsb-cprocsp-capilite-64 4.0.0-5 amd64 CryptoAPI lite. Build 9914.
ii lsb-cprocsp-kc1-64 4.0.0-5 amd64 CryptoPro CSP KC1. Build 9914.
ii lsb-cprocsp-kc2-64 4.0.0-5 amd64 CryptoPro CSP KC2. Build 9914.
ii lsb-cprocsp-rdr-64 4.0.0-5 amd64 CryptoPro CSP readers. Build 9914.
Проверка запуска nginx (/usr/sbin/nginx): Код:root@test-nginx:~# ps aux | grep nginx
root 4266 0.0 0.4 87340 7656 ? Ss 16:33 0:00 nginx: master process /usr/sbin/nginx
root 4267 0.0 0.5 87804 8496 ? S 16:33 0:00 nginx: worker process
root 4269 0.0 0.0 21292 988 pts/4 S+ 16:34 0:00 grep --color=auto nginx
Заключительный этапЕсли все проверки пройдены, то остается только зайти на сервер. Для этого надо запустить nginx и ввести в браузере: Inet addr можно узнать командой ifconfig. Если откроется страничка nginx, значит 80 порт работает. Теперь проверка 443 порта: Будет выдано сообщение о недействительности сертификата - можно игнорировать. Если сертификат правильно установлен, то откроется страничка nginx. Если это работает в браузере Internet Explorer, значит срабатывает гостовый сертификат. Если работает в другом браузере, например, Google Chrome, то и с сертификатом rsa все в порядке. Дополнительная информацияДобавление модулей в nginx (на примере geoip): ссылкаУстановка на Astra OS: ссылкаОсобенности работы в докере в случае KC2: ссылкаОсобенности openssl (в том числе на Ubuntu 18): ссылкаАвтотесты скриптов на travis: ссылкаОтредактировано модератором 27 июля 2021 г. 11:37:04(UTC)
| Причина: Инструкция устарела |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.04.2014(UTC) Сообщений: 31 Откуда: Москва Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Код:+ cd linux-amd64
+ ./install.sh
Installing lsb-cprocsp-base-4.0.0-5.noarch.rpm...
./install.sh: line 171: alien: command not found
Installation failed. LSB package may not be installed.
Install LSB package and reinstall CryptoPro CSP. If it does not help, please
read installation documentation or contact the manufacturer: support@cryptopro.ru.
+ exit 1
при выполнении install-nginx.sh на чистой Ubuntu требуется alien, может его тоже доустанавливать? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 31.08.2017(UTC) Сообщений: 49 Сказал(а) «Спасибо»: 1 раз Поблагодарили: 17 раз в 16 постах
|
Автор: ElenaS Код:+ cd linux-amd64
+ ./install.sh
Installing lsb-cprocsp-base-4.0.0-5.noarch.rpm...
./install.sh: line 171: alien: command not found
Installation failed. LSB package may not be installed.
Install LSB package and reinstall CryptoPro CSP. If it does not help, please
read installation documentation or contact the manufacturer: support@cryptopro.ru.
+ exit 1
при выполнении install-nginx.sh на чистой Ubuntu требуется alien, может его тоже доустанавливать? На ubuntu не требуется alien, это была ошибка. Спасибо, исправили. |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC) Сообщений: 1,506 Откуда: КРИПТО-ПРО
Сказал(а) «Спасибо»: 35 раз Поблагодарили: 474 раз в 338 постах
|
Автор: fullincome На ubuntu не требуется alien, это была ошибка. Спасибо, исправили. На чистом debian тоже работает. Проверено. Качаем CSP, запускаем первый скрипт, запускаем второй скрипт, заходим на страничку, profit. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.11.2011(UTC) Сообщений: 174
Сказал(а) «Спасибо»: 11 раз Поблагодарили: 1 раз в 1 постах
|
Код:./install-nginx.sh linux-amd64.tgz
CentOS Linux release 7.4.1708 (Core)
Derived from Red Hat Enterprise Linux 7.4 (Source)
+ wget https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-64_4.0.0-5_amd64.rpm
--2017-10-30 10:44:57-- https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-64_4.0.0-5_amd64.rpm
2017-10-30 10:44:57 ERROR 404: Not Found.
Подправьте пожалуйста скрипт чтобы он искал cprocsp-cpopenssl-110-64-4.0.0-5.x86_64.rpm вместо cprocsp-cpopenssl-110-64_4.0.0-5_amd64.rpm Код:+ wget https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-base_4.0.0-5_all.rpm
--2017-10-30 10:51:46-- https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-base_4.0.0-5_all.rpm
2017-10-30 10:51:46 ERROR 404: Not Found.
cprocsp-cpopenssl-110-base-4.0.0-5.noarch.rpm вместо cprocsp-cpopenssl-110-base_4.0.0-5_all.rpm Код:
+ wget https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-devel_4.0.0-5_all.rpm
--2017-10-30 10:54:08-- https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-devel_4.0.0-5_all.rpm
2017-10-30 10:54:08 ERROR 404: Not Found.
cprocsp-cpopenssl-110-devel-4.0.0-5.noarch.rpm вместо cprocsp-cpopenssl-110-devel_4.0.0-5_all.rpm Код:+ wget https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-gost-64_4.0.0-5_amd64.rpm
--2017-10-30 10:55:27-- https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-gost-64_4.0.0-5_amd64.rpm
2017-10-30 10:55:27 ERROR 404: Not Found.
cprocsp-cpopenssl-110-gost-64-4.0.0-5.x86_64.rpm вместо cprocsp-cpopenssl-110-gost-64_4.0.0-5_amd64.rpm Отредактировано пользователем 30 октября 2017 г. 10:57:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.11.2011(UTC) Сообщений: 174
Сказал(а) «Спасибо»: 11 раз Поблагодарили: 1 раз в 1 постах
|
В 1 скрипте неправильный порядок установки rpm Код:rpm -i cprocsp-cpopenssl-110-64-4.0.0-5.x86_64.rpm
error: Failed dependencies:
cprocsp-cpopenssl-110-base is needed by cprocsp-cpopenssl-110-64-4.0.0-5.x86_64
Если устанавливать в другом порядок, тогда rpm устанавливаются Код:[root@test-eps-nginx-cryptopro1 ~]# rpm -i cprocsp-cpopenssl-110-base-4.0.0-5.noarch.rpm
[root@test-eps-nginx-cryptopro1 ~]# rpm -i cprocsp-cpopenssl-110-64-4.0.0-5.x86_64.rpm
Исправленный участок кода Код:openssl_packages=(cprocsp-cpopenssl-110-base-4.0.0-5.noarch.rpm \
cprocsp-cpopenssl-110-64-4.0.0-5.x86_64.rpm \
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.11.2011(UTC) Сообщений: 174
Сказал(а) «Спасибо»: 11 раз Поблагодарили: 1 раз в 1 постах
|
Так же можно устанавливать необходимые пакеты Код:
if ! rpm -qa | grep -qw gcc; then
echo "Installing gcc"
yum -y install gcc
fi
Код:
if ! rpm -qa | grep -qw gcc-c++; then
echo "Installing gcc-c++"
yum -y install gcc-c++
fi
Отредактировано пользователем 30 октября 2017 г. 11:32:03(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.11.2011(UTC) Сообщений: 174
Сказал(а) «Спасибо»: 11 раз Поблагодарили: 1 раз в 1 постах
|
Код:nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] getpwnam("nginx") failed
nginx: configuration file /etc/nginx/nginx.conf test failed
После установки нужно создать пользователя Код:#!/bin/bash
getent group nginx >/dev/null || groupadd -r nginx
getent passwd nginx >/dev/null || \
useradd -r -g nginx -s /sbin/nologin \
-d /var/cache/nginx -c "nginx user" nginx
exit 0
Также нужно создать systemd (для Centos 7) файл service /usr/lib/systemd/system/nginx.service Код:[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
И перезагрузить systemd systemctl daemon-reload Отредактировано пользователем 30 октября 2017 г. 13:23:29(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.11.2011(UTC) Сообщений: 174
Сказал(а) «Спасибо»: 11 раз Поблагодарили: 1 раз в 1 постах
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.11.2011(UTC) Сообщений: 174
Сказал(а) «Спасибо»: 11 раз Поблагодарили: 1 раз в 1 постах
|
Вижу что скрипт установки поправили https://github.com/fulli...efa41e908969bc65c19cce04Но ошибки все равно есть Код:+ wget https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-base_4.0.0-5.noarch.rpm
--2017-10-30 14:50:28-- https://update.cryptopro.ru/support/nginx-gost/bin/164682/cprocsp-cpopenssl-110-base_4.0.0-5.noarch.rpm
2017-10-30 14:50:28 ERROR 404: Not Found.
Код:cprocsp-cpopenssl-110-base-4.0.0-5.noarch.rpm
cprocsp-cpopenssl-110-base_4.0.0-5.noarch.rpm
Разница в "-" и "_"
Код:cprocsp-cpopenssl-110-64_4.0.0-5.x86_64.rpm
cprocsp-cpopenssl-110-64-4.0.0-5.x86_64.rpm
Код:cprocsp-cpopenssl-110-devel_4.0.0-5.noarch.rpm
cprocsp-cpopenssl-110-devel-4.0.0-5.noarch.rpm
Код:cprocsp-cpopenssl-110-gost-64_4.0.0-5.x86_64.rpm
cprocsp-cpopenssl-110-gost-64-4.0.0-5.x86_64.rpm
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close