Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

39 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline Ефремов Степан  
#1 Оставлено : 2 сентября 2017 г. 17:16:58(UTC)
Ефремов Степан

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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) запустить скрипт:

Код:
./install-certs.sh



Вариант 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 и ввести в браузере:

Код:
http://<ваш inet addr>


Inet addr можно узнать командой ifconfig. Если откроется страничка nginx, значит 80 порт работает. Теперь проверка 443 порта:

Код:
https://<ваш inet addr>


Будет выдано сообщение о недействительности сертификата - можно игнорировать. Если сертификат правильно установлен, то откроется страничка nginx.
Если это работает в браузере Internet Explorer, значит срабатывает гостовый сертификат. Если работает в другом браузере, например, Google Chrome, то и с сертификатом rsa все в порядке.



Дополнительная информация


Добавление модулей в nginx (на примере geoip): ссылка

Установка на Astra OS: ссылка

Особенности работы в докере в случае KC2: ссылка

Особенности openssl (в том числе на Ubuntu 18): ссылка

Автотесты скриптов на travis: ссылка

Отредактировано модератором 27 июля 2021 г. 11:37:04(UTC)  | Причина: Инструкция устарела

Техническая поддержка здесь.
База знаний здесь.
Offline ElenaS  
#2 Оставлено : 19 сентября 2017 г. 18:41:33(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, может его тоже доустанавливать?
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Ефремов Степан  
#3 Оставлено : 20 сентября 2017 г. 16:06:33(UTC)
Ефремов Степан

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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, это была ошибка. Спасибо, исправили.
Техническая поддержка здесь.
База знаний здесь.
Offline Дмитрий Пичулин  
#4 Оставлено : 23 сентября 2017 г. 16:31:18(UTC)
pd

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,440
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 31 раз
Поблагодарили: 410 раз в 305 постах
Автор: fullincome Перейти к цитате
На ubuntu не требуется alien, это была ошибка. Спасибо, исправили.

На чистом debian тоже работает. Проверено.

Качаем CSP, запускаем первый скрипт, запускаем второй скрипт, заходим на страничку, profit.
Знания в базе знаний, поддержка в техподдержке
Offline chemtech  
#5 Оставлено : 30 октября 2017 г. 10:50:14(UTC)
chemtech

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline chemtech  
#6 Оставлено : 30 октября 2017 г. 11:24:03(UTC)
chemtech

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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 \

Offline chemtech  
#7 Оставлено : 30 октября 2017 г. 11:29:41(UTC)
chemtech

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline chemtech  
#8 Оставлено : 30 октября 2017 г. 11:49:20(UTC)
chemtech

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline chemtech  
#9 Оставлено : 30 октября 2017 г. 14:35:12(UTC)
chemtech

Статус: Активный участник

Группы: Участники
Зарегистрирован: 01.11.2011(UTC)
Сообщений: 174

Сказал(а) «Спасибо»: 11 раз
Поблагодарили: 1 раз в 1 постах
Раз уж вы выкладываете rpm в интернет, вы можете сделать полноценный репозиторий для пакетов
https://update.cryptopro.../support/nginx-gost/bin/ ??

Репозиторий делается всего лишь одной командой
Код:
createrepo путь_до_репо

Отредактировано пользователем 30 октября 2017 г. 14:37:40(UTC)  | Причина: Не указана

Offline chemtech  
#10 Оставлено : 30 октября 2017 г. 15:03:13(UTC)
chemtech

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
39 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.