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

Уведомление

Icon
Error

39 Страницы«<910111213>»
Опции
К последнему сообщению К первому непрочитанному
Online Дмитрий Пичулин  
#101 Оставлено : 10 августа 2018 г. 13:23:39(UTC)
pd

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

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

Сказал(а) «Спасибо»: 31 раз
Поблагодарили: 410 раз в 305 постах
Автор: sturi7l Перейти к цитате
Да я и не в претензии. Просто в инструкции об этом ни слова, в свое время потратил на это какое-то количество времени. Может быть, имеет смысл отразить?

Что именно необходимо отразить?

Скрипты в данной теме полностью рабочие. Мы их проверяем.

У пользователя может быть множество нюансов, если он действует самостоятельно.

Знания в базе знаний, поддержка в техподдержке
Offline Mikhail0101  
#102 Оставлено : 29 августа 2018 г. 9:44:22(UTC)
Mikhail0101

Статус: Участник

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 2 раз в 1 постах
Добрый день, коллеги.

Стоит задача настроить nginx таким образом, чтобы на вход приходили данные по протоколу HTTP и проксировались на другой сервер по протоколу HTTPS + GOST2012-GOST8912-GOST8912.

Возникает ошибка:
Код:
[crit] 30199#30199: *19 SSL_do_handshake() failed (SSL: error:80005022:lib(128):gng_support_create_pubkey_3410:CryptImportPublicKeyInfo error:0B09407D:x509 certificate routines:x509_pubkey_decode:public key decode error error:1416F0EF:SSL routines:tls_process_server_certificate:unable to find public key parameters) while SSL handshaking to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "https://x.x.x.x:3000/", host: "localhost:3000"


При этом, если попытаться сделать запрос с помощью curl, который идет в поставке CSP, напрямую на целевой сервер по HTTPS - всё ок.
Nginx и CSP устанавливались с помощью скрипта.

Код:
CentOS Linux release 7.5.1804 (Core)


Код:
[root@test-sandbox-1 ~]# yum list | grep cprocsp
cprocsp-cpopenssl-110-64.x86_64   5.0.11099-5            installed
cprocsp-cpopenssl-110-base.noarch 5.0.11099-5            installed
cprocsp-cpopenssl-110-devel.noarch
cprocsp-cpopenssl-110-gost-64.x86_64
cprocsp-curl-64.x86_64            5.0.11128-5            installed
lsb-cprocsp-base.noarch           5.0.11128-5            installed
lsb-cprocsp-ca-certs.noarch       5.0.11128-5            installed
lsb-cprocsp-capilite-64.x86_64    5.0.11128-5            installed
lsb-cprocsp-kc1-64.x86_64         5.0.11128-5            installed
lsb-cprocsp-kc2-64.x86_64         5.0.11128-5            installed
lsb-cprocsp-rdr-64.x86_64         5.0.11128-5            installed


Код:
[root@test-sandbox-1 ~]# nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.1.0h  27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/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='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'


Код:
[root@test-sandbox-1 ~]# ldd /usr/sbin/nginx
        linux-vdso.so.1 =>  (0x00007ffd3ac70000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fefc5f1d000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fefc5d01000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fefc5aca000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fefc5868000)
        libssl.so.1.1 => /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/libssl.so.1.1 (0x00007fefc55fa000)
        libcrypto.so.1.1 => /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/libcrypto.so.1.1 (0x00007fefc5175000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fefc4f5f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fefc4b92000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fefc647a000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007fefc498f000)


Код:
[root@test-sandbox-1 ~]# /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gostengy) CryptoPro GostEngy ($Revision: 174535 $)


Конфигурация nginx:
Код:
    server {
        listen 3000;

        location / {
            proxy_pass https://x.x.x.x:3000;
            proxy_ssl_verify off;
            proxy_ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH;
            proxy_ssl_protocols TLSv1.2;
        }
    }


В чем может быть проблема?

Online Дмитрий Пичулин  
#103 Оставлено : 29 августа 2018 г. 10:27:54(UTC)
pd

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

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

Сказал(а) «Спасибо»: 31 раз
Поблагодарили: 410 раз в 305 постах
Автор: Mikhail0101 Перейти к цитате
Стоит задача настроить nginx таким образом, чтобы на вход приходили данные по протоколу HTTP и проксировались на другой сервер по протоколу HTTPS + GOST2012-GOST8912-GOST8912.

Возникает ошибка:
Код:
[crit] 30199#30199: *19 SSL_do_handshake() failed (SSL: error:80005022:lib(128):gng_support_create_pubkey_3410:CryptImportPublicKeyInfo error:0B09407D:x509 certificate routines:x509_pubkey_decode:public key decode error error:1416F0EF:SSL routines:tls_process_server_certificate:unable to find public key parameters) while SSL handshaking to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "https://x.x.x.x:3000/", host: "localhost:3000"


...

Конфигурация nginx:
Код:
    server {
        listen 3000;

        location / {
            proxy_pass https://x.x.x.x:3000;
            proxy_ssl_verify off;
            proxy_ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH;
            proxy_ssl_protocols TLSv1.2;
        }
    }


В чем может быть проблема?

А что за сервер https? Как нам воспроизвести ошибку?

Знания в базе знаний, поддержка в техподдержке
Offline Mikhail0101  
#104 Оставлено : 29 августа 2018 г. 11:00:47(UTC)
Mikhail0101

Статус: Участник

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 2 раз в 1 постах
Цитата:
А что за сервер https? Как нам воспроизвести ошибку?


HTTPS сервер на базе MS IIS и КриптоПро CSP 4.x

Код:
[root@test-sandbox-1 ~]$ /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl s_client -connect x.x.x.x:3000
CONNECTED(00000005)
depth=0 CN = xxxxxxxxx
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = xxxxxxxxx
verify error:num=21:unable to verify the first certificate
verify return:1
---

...

---
No client certificate CA names sent
---
SSL handshake has read 1583 bytes and written 413 bytes
Verification error: unable to verify the first certificate
---
New, TLSv1.0, Cipher is GOST2012-GOST8912-GOST8912
Server public key is 512 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : GOST2012-GOST8912-GOST8912
    Session-ID: E58378F2F15683D6AD17B4FCB050D7957CB8E0A2A8AC928C8663AAED9CED10D9
    Session-ID-ctx:
    Master-Key: DFDB7E1DF021E2C8CFE642F1BC07D765399DE748A04C0255ECA162FE93D65F60FEDC106A3AAA39967D9CF8C21C1770FA
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1535528772
    Timeout   : 7200 (sec)
    Verify return code: 21 (unable to verify the first certificate)
    Extended master secret: no
---

Online Дмитрий Пичулин  
#105 Оставлено : 29 августа 2018 г. 14:23:13(UTC)
pd

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

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

Сказал(а) «Спасибо»: 31 раз
Поблагодарили: 410 раз в 305 постах
Автор: Mikhail0101 Перейти к цитате
Цитата:
А что за сервер https? Как нам воспроизвести ошибку?


HTTPS сервер на базе MS IIS и КриптоПро CSP 4.x

Всё должно работать без проблем, не видим ошибок со своей стороны.

Давайте включим логирование на уровне CSP и посмотрим полученные логи.

Код:
cpconfig -loglevel cpcsp -mask 0x3F
cpconfig -loglevel capi10 -mask 0x3F
cpconfig -loglevel cpext -mask 0x3F
cpconfig -loglevel capi20 -mask 0x3F
cpconfig -loglevel capilite -mask 0x3F
cpconfig -loglevel cryptsrv -mask 0x3F

cpconfig -loglevel cpcsp_fmt -mask 0x7F
cpconfig -loglevel capi10_fmt -mask 0x7F
cpconfig -loglevel cpext_fmt -mask 0x7F
cpconfig -loglevel capi20_fmt -mask 0x7F
cpconfig -loglevel capilite_fmt -mask 0x7F
cpconfig -loglevel cryptsrv_fmt -mask 0x7F


Знания в базе знаний, поддержка в техподдержке
Offline Mikhail0101  
#106 Оставлено : 29 августа 2018 г. 16:11:31(UTC)
Mikhail0101

Статус: Участник

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 2 раз в 1 постах
Включил логирование CSP, перезапустил nginx - новых ошибок в логах (/var/log/nginx/error.log, /var/log/messages) не появилось...
Online Дмитрий Пичулин  
#107 Оставлено : 30 августа 2018 г. 16:34:46(UTC)
pd

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

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

Сказал(а) «Спасибо»: 31 раз
Поблагодарили: 410 раз в 305 постах
Автор: Mikhail0101 Перейти к цитате
Включил логирование CSP, перезапустил nginx - новых ошибок в логах (/var/log/nginx/error.log, /var/log/messages) не появилось...

Да, ошибка оказалась крепким орешком.

При типичном использовании nginx в качестве сервера, всегда есть ссылка на закрытый ключ через gostengy, поэтому криптографический модуль OpenSSL никогда не выгружается.

В вашей конфигурации нет ссылок на gostengy, так как у вас в конфигурации только клиентское соединение, не использующее закрытый ключ.

При такой конфигурации, мастер процесс nginx после запуска рабочих процессов делает cleanup, который освобождает неиспользуемые модули, что приводит к освобождению глобального контекста, который общий для всех процессов. После этого рабочие процессы не могут пользоваться контекстом, так как он был освобождён.

Это исправлено. Проверено. Скрипты обновлены.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил pd за этот пост.
Mikhail0101 оставлено 16.09.2018(UTC)
Offline Mikhail0101  
#108 Оставлено : 31 августа 2018 г. 6:56:48(UTC)
Mikhail0101

Статус: Участник

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 2 раз в 1 постах
Дмитрий, спасибо за помощь и, особенно, за оперативность.

Проверил на своей стороне - теперь всё работает. На всякий случай, оставлю пример конфигурации nginx в качестве прокси к серверу по протоколу https/tls с алгоритмами ГОСТ 2012, вдруг кому пригодится:

Код:
user  root;
worker_processes  1;
 
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    sendfile        on;
    keepalive_timeout  65;
 
    server {
      listen xxxx;
 
      location / {
        proxy_pass https://x.x.x.x:xxxx;
 
        proxy_ssl_verify off;
        proxy_ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH;
        proxy_ssl_protocols TLSv1.2;
        
        # Если предполагается двухсторонний TLS, то нужно указать клиентский сертификат и приватный ключ параметрами proxy_ssl_certificate и proxy_ssl_certificate_key соответственно
        # proxy_ssl_certificate /etc/nginx/client.pem;
        # proxy_ssl_certificate_key engine:gostengy:client;
       }
    }
}
thanks 2 пользователей поблагодарили Mikhail0101 за этот пост.
pd оставлено 31.08.2018(UTC), jjjbushjjj оставлено 15.09.2018(UTC)
Offline jjjbushjjj  
#109 Оставлено : 15 сентября 2018 г. 21:25:35(UTC)
jjjbushjjj

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.09.2018(UTC)
Сообщений: 7
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: Mikhail0101 Перейти к цитате
Дмитрий, спасибо за помощь и, особенно, за оперативность.

Проверил на своей стороне - теперь всё работает. На всякий случай, оставлю пример конфигурации nginx в качестве прокси к серверу по протоколу https/tls с алгоритмами ГОСТ 2012, вдруг кому пригодится:

Код:
user  root;
worker_processes  1;
 
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    sendfile        on;
    keepalive_timeout  65;
 
    server {
      listen xxxx;
 
      location / {
        proxy_pass https://x.x.x.x:xxxx;
 
        proxy_ssl_verify off;
        proxy_ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH;
        proxy_ssl_protocols TLSv1.2;
        
        # Если предполагается двухсторонний TLS, то нужно указать клиентский сертификат и приватный ключ параметрами proxy_ssl_certificate и proxy_ssl_certificate_key соответственно
        # proxy_ssl_certificate /etc/nginx/client.pem;
        # proxy_ssl_certificate_key engine:gostengy:client;
       }
    }
}



Михаил, не могли бы вы показать как вы сгенерили клиентский сертификат? Если вы это делали (То что закоментировано).
Я никак не могу сделать сертификат который бы принимали удаленные сервера. Конфиг у меня +- такойже.
Offline Mikhail0101  
#110 Оставлено : 16 сентября 2018 г. 11:17:14(UTC)
Mikhail0101

Статус: Участник

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 2 раз в 1 постах
Автор: jjjbushjjj Перейти к цитате

Михаил, не могли бы вы показать как вы сгенерили клиентский сертификат? Если вы это делали (То что закоментировано).
Я никак не могу сделать сертификат который бы принимали удаленные сервера. Конфиг у меня +- такойже.


Клиентский сертификат для тестовых нужд генерил через тестовый УЦ КриптоПро по второй ссылке на странице https://www.cryptopro.ru/solutions/test-ca

Нужно также убедиться, что сертификат имеет кодировку PEM, как указано здесь https://www.cryptopro.ru...ts&m=83282#post83282

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
39 Страницы«<910111213>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.