Статус: Сотрудник
Группы: Участники
Зарегистрирован: 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) скачать данный скрипт и выставить права на запуск: 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) скачать скрипт и выставить права на запуск: 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: Проверка установки 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: ссылкаОтредактировано модератором 4 года назад
| Причина: Инструкция устарела |
|