Автор: Дмитрий Пичулин Автор: Mikhail0101 Включил логирование CSP, перезапустил nginx - новых ошибок в логах (/var/log/nginx/error.log, /var/log/messages) не появилось...
Да, ошибка оказалась крепким орешком.
При типичном использовании nginx в качестве сервера, всегда есть ссылка на закрытый ключ через gostengy, поэтому криптографический модуль OpenSSL никогда не выгружается.
В вашей конфигурации нет ссылок на gostengy, так как у вас в конфигурации только клиентское соединение, не использующее закрытый ключ.
При такой конфигурации, мастер процесс nginx после запуска рабочих процессов делает cleanup, который освобождает неиспользуемые модули, что приводит к освобождению глобального контекста, который общий для всех процессов. После этого рабочие процессы не могут пользоваться контекстом, так как он был освобождён.
Это исправлено. Проверено. Скрипты обновлены.
Добрый день!
Использую ручную сборку Nginx на базе вашего скрипта, на всякий пожарный заодно его и пропатчил.
./configure --prefix=/opt/nginx.cp --with-http_ssl_module --with-cc-opt='-I/opt/cprocsp/cp-openssl-1.1.0/include/' --with-ld-opt='-L/opt/cprocsp/cp-openssl-1.1.0/lib/amd64/' --with-http_stub_status_module --with-debug --with-compat --with-file-aio --with-threads --with-http_addition_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module
# rpm -qa|grep cproc|sort
cprocsp-cpopenssl-110-64-5.0.11216-5
cprocsp-cpopenssl-110-base-5.0.11216-5
cprocsp-cpopenssl-110-devel-5.0.11216-5
cprocsp-cpopenssl-110-gost-64-5.0.11216-5
cprocsp-rdr-gui-gtk-64-4.0.9963-5
lsb-cprocsp-base-4.0.9963-5
lsb-cprocsp-capilite-64-4.0.9963-5
lsb-cprocsp-kc1-64-4.0.9963-5
lsb-cprocsp-kc2-64-4.0.9963-5
lsb-cprocsp-rdr-64-4.0.9963-5
# /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl engine
(dynamic) Dynamic engine loading support
(gostengy) CryptoPro GostEngy ($Revision: 180423 $)
# /opt/nginx.cp/sbin/nginx -V
nginx version: nginx/1.16.0
built by gcc 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux)
built with OpenSSL 1.1.0h 27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx.cp --with-http_ssl_module --with-cc-opt=-I/opt/cprocsp/cp-openssl-1.1.0/include/ --with-ld-opt=-L/opt/cprocsp/cp-openssl-1.1.0/lib/amd64/ --with-http_stub_status_module --with-debug --with-compat --with-file-aio --with-threads --with-http_addition_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module
# ldd /opt/nginx.cp/sbin/nginx
linux-vdso.so.1 => (0x00007fffc571a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fa91e1eb000)
librt.so.1 => /lib64/librt.so.1 (0x00007fa91dfe2000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa91ddc4000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fa91db89000)
libpcre.so.0 => /usr/lib64/libpcre.so.0 (0x00007fa91d959000)
libssl.so.1.1 => /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/libssl.so.1.1 (0x00007fa91d6ea000)
libcrypto.so.1.1 => /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/libcrypto.so.1.1 (0x00007fa91d265000)
libz.so.1 => /lib64/libz.so.1 (0x00007fa91d04f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa91ccd5000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa91e426000)
Подключаюсь openssl к ресурсу без проблем
# /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl s_client --connect gost2012.stable.dp.korona.net:443 -cipher GOST2012-GOST8912-GOST8912 -quiet
depth=2 C = RU, O = Center of Financial Technologies, CN = Primary CA
verify error:num=19:self signed certificate in certificate chain
Но nginx при проксировании запроса ломается с ошибкой
[crit] 3535#3535: *11 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,
Кусок конфигурации Nginx.
server {
listen 81;
location ~ ^/ {
proxy_ssl_verify off;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_ssl_ciphers GOST2012-GOST8912-GOST8912; #
proxy_pass
https://gost2012.stable.dp.korona.net;
proxy_set_header Host "gost2012.stable.dp.korona.net";
}
}
Что я делаю не так?
Отредактировано пользователем 29 мая 2019 г. 13:25:50(UTC)
| Причина: Не указана