logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

17 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline maxdm  
#1 Оставлено : 3 февраля 2015 г. 12:13:45(UTC)
maxdm


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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 4,816
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 11 раз
Поблагодарили: 407 раз в 370 постах
Обсуждаем настройку и использование.
Offline pd  
#2 Оставлено : 3 февраля 2015 г. 14:35:47(UTC)
pd


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

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

Сказал(а) «Спасибо»: 11 раз
Поблагодарили: 63 раз в 52 постах
FAQ (обновлено 15 июля 2016)

Что такое gost_capi?

gost_capi — это библиотека для OpenSSL, которая обеспечивает поддержку ключей и алгоритмов ГОСТ через вызовы КриптоПро CSP

В терминах OpenSSL, gost_capi — это криптографический модуль, ENGINE


Какие требования gost_capi?

Наличие КриптоПро CSP и OpenSSL

При использовании в nginx в Linux системах, необходимо использовать вариант КС2 (так как nginx использует fork).

При использовании антивирусов, убедитесь в поддержке ГОСТ алгоритмов при фильтрации HTTPS или добавьте соответствующие исключения.


Каков процесс развертывания gost_capi?

При соблюдении требований gost_capi достаточно обеспечить загрузку данной ENGINE в OpenSSL через настройку конфигурационного файла или динамически, например директивой ssl_engine в nginx или SSLCryptoDevice в Apache httpd


Как сконфигурировать OpenSSL?

Загрузку gost_capi через конфигурационный файл OpenSSL можно сделать так (обычно вставляется после "oid_section = new_oids"):

Код:
openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
gost_capi = gost_section

[gost_section]
engine_id = gost_capi
dynamic_path = /path/to/dll/or/so/gost_capi.dll
default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1


Как проверить работоспособность OpenSSL с gost_capi?

Проверить, что gost_capi загружается автоматически:

Код:
openssl engine

Примерный вывод команды:

Цитата:
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gost_capi) CryptoPro ENGINE GOST CAPI ($Revision: 114689 $)


Проверить возможность подписи (должно выполниться без ошибок):

Код:
openssl cms -sign -engine gost_capi -keyform ENGINE -inkey www.vpngost.ru -in "doc.txt" -out "doc.signed.txt" -outform PEM -CAfile /path/to/cert/www.vpngost.ru.cer -nodetach -signer /path/to/cert/www.vpngost.ru.cer


Какие операционные системы поддерживает gost_capi?

На текущий момент поддерживаются x86 и x64 системы семейства Linux и Windows


Для чего может быть использован gost_capi?

gost_capi в составе OpenSSL может быть использован для широкого круга задач, требующих поддержки ключей и алгоритмов ГОСТ, например для реализации защищенных SSL/TLS соединений в HTTP серверах, поддерживающих загрузку ключей из OpenSSL ENGINE, например nginx, и прочие варианты применения OpenSSL.


Какие версии TLS поддерживаются?

TLS 1.0 (при использовании нашей версии OpenSSL можно использовать до TLS 1.2 включительно)


Какие версии nginx поддерживаются?

Начиная с 1.7.9 возможно использовать наш криптографический модуль;
Начиная с 1.11.0 возможно использовать одновременную работу ГОСТ и RSA сертификатов.


Как сконфигурировать nginx?

Конфигурация nginx для работы с ГОСТ происходит согласно документации с некоторыми нюансами:

  • Пользователь рабочих потоков nginx не должен отличаться от пользователя запускающего nginx (см. user)

  • Для сервера должен быть включен ssl

  • Должен быть включен TLS 1.0 в ssl_protocols (при использовании нашей версии OpenSSL можно использовать до TLS 1.2 включительно)

  • Сертификат сервера конфигурируется директивой ssl_certificate

  • Ключ сертификата конфигурируется директивой ssl_certificate_key, но вместо файла указывается зарезервированное слово "engine:", после которого следует имя OpenSSL ENGINE, в нашем случае это "gost_capi", далее следует зарезервированный символ ':', за которым следует имя сертификата. Например для сертификата "www.vpngost.ru", значение ssl_certificate_key выглядело бы так: "engine:gost_capi:www.vpngost.ru"

  • Остальные директивы могут быть использованы по умолчанию


Таким образом, простейшая конфигурация gost_capi в nginx должна содержать:

Код:
ssl on;
ssl_protocols TLSv1; 
ssl_certificate /path/to/cert/www.vpngost.ru.cer;
ssl_certificate_key engine:gost_capi:www.vpngost.ru.cer;


Как сконфигурировать nginx по шагам?

Подробное описание настройки по шагам в этой теме: http://www.cryptopro.ru/forum2/default.aspx?g=posts&m=57216#post57216


Как настроить одновременную работу ГОСТ и RSA в nginx?

Начиная с версии 1.11.0 в nginx возможно использовать несколько сертификатов для сервера одновременно.

Для типичной работы ГОСТ TLS в nginx (сначала ГОСТ потом RSA), следует использовать приоритеты шифросюит (сначала ГОСТ потом всё остальное), например так:

Код:
ssl_ciphers GOST2001-GOST89-GOST89:HIGH;


Можно ли использовать gost_capi в качестве прокси-сервера в nginx?



Как сконфигурировать Apache httpd?

К сожалению нам не удалось включить изменения позволяющие работать gost_capi в официальный репозиторий Apache httpd, конкретно в mod_ssl (историю рассмотрения патча можно посмотреть здесь).

Однако, вы можете самостоятельно собрать mod_ssl с нашим патчем: mod_ssl_gost_capi.zip (2kb) загружен 55 раз(а).

Настройка по смыслу аналогична настройке nginx, только вместо ssl_certificate_key в nginx используется SSLCertificateKeyFile в Apache.


Как сконфигурировать Apache httpd по шагам?

Подробное описание настройки по шагам в этой теме: http://www.cryptopro.ru/forum2/default.aspx?g=posts&t=9975


Какая лицензия используется gost_capi?

Использование серверных сертификатов требует наличия серверной лицензии у CSP


Как получить gost_capi?

Скачать архив: gost_capi_20161020.zip (673kb) загружен 275 раз(а).

Отредактировано пользователем 13 апреля 2017 г. 12:16:51(UTC)  | Причина: обновление FAQ

thanks 1 пользователь поблагодарил pd за этот пост.
Nikolay оставлено 03.11.2015(UTC)
Offline kropotin  
#3 Оставлено : 11 февраля 2015 г. 14:32:14(UTC)
kropotin

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

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

А как установить gost_capi (cprocsp-cpopenssl-gost-64-4.0.0-4.x86_64.rpm) в CentOS 7?
rpm -i cprocsp-cpopenssl-gost-64-4.0.0-4.x86_64.rpm
выдает ошибку:
cprocsp-cpopenssl-64 is needed by cpprocsp-cpopenssl-gost-64-4.0.0-4.x86_64

CryptoPro устанавливал в составе:
rpm -i cprocsp-compat-altlinux
rpm -i lsb-cprocsp-base
rpm -i lsb-cprocsp-rdr
rpm -i lsb-cprocsp-capilite
rpm -i lsb-cprocsp-kc1
Offline olin  
#4 Оставлено : 16 февраля 2015 г. 23:58:41(UTC)
olin


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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 334

Поблагодарили: 50 раз в 43 постах
Сейчас пакет cpopenssl-gost является частью нашего более крупного проекта - cpopenssl, поэтому зависит от него. Можно пробовать ставить его с игнорированием зависимостей:
Код:
rpm -i cprocsp-cpopenssl-gost-64-4.0.0-4.x86_64.rpm --nodeps

При этом может быть недоступна библиотека libcrypto.so.1.0.0:
Код:
[root@Test-X64-Altlinux-KC2 ~]# rpm -qa|grep cpopenssl
cprocsp-cpopenssl-gost-64-4.0.0-4
[root@Test-X64-Altlinux-KC2 ~]# rpm -ql cprocsp-cpopenssl-gost-64-4.0.0-4
/opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.la
/opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.so
/opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.so.0
/opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.so.0.0.0
/opt/cprocsp/lib/hashes/cprocsp-cpopenssl-gost-64
[root@Test-X64-Altlinux-KC2 ~]# ldd /opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.so.0.0.0
        libcrypto.so.1.0.0 => not found
        libcapi20.so.4 => /opt/cprocsp/lib/amd64/libcapi20.so.4 (0x00002aaaaabd3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaaae31000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaab04c000)
        libcpext.so.4 => /opt/cprocsp/lib/amd64/libcpext.so.4 (0x00002aaaab384000)
        libcapi10.so.4 => /opt/cprocsp/lib/amd64/libcapi10.so.4 (0x00002aaaab520000)
        liburlretrieve.so.4 => /opt/cprocsp/lib/amd64/liburlretrieve.so.4 (0x00002aaaab631000)
        libcpasn1.so.4 => /opt/cprocsp/lib/amd64/libcpasn1.so.4 (0x00002aaaab73b000)
        libcplib.so.4 => /opt/cprocsp/lib/amd64/libcplib.so.4 (0x00002aaaab8ee000)
        librdrsup.so.4 => /opt/cprocsp/lib/amd64/librdrsup.so.4 (0x00002aaaaba05000)
        libasn1data.so.4 => /opt/cprocsp/lib/amd64/libasn1data.so.4 (0x00002aaaabb40000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaac378000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002aaaac57d000)
        libm.so.6 => /lib64/libm.so.6 (0x00002aaaac87d000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002aaaacafe000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
        libcpalloc.so.0 => /opt/cprocsp/lib/amd64/libcpalloc.so.0 (0x00002aaaacd0d000)
        libjemalloc.so.0 => /opt/cprocsp/lib/amd64/libjemalloc.so.0 (0x00002aaaace0e000)
[root@Test-X64-Altlinux-KC2 ~]# ldconfig -p|grep crypto
        libxmlsec1-mscrypto.so.1 (libc6,x86-64) => /opt/cprocsp/lib/amd64/libxmlsec1-mscrypto.so.1
        libxmlsec1-mscrypto.so (libc6,x86-64) => /opt/cprocsp/lib/amd64/libxmlsec1-mscrypto.so
        libk5crypto.so.3 (libc6,x86-64) => /lib64/libk5crypto.so.3
        libcrypto.so.6 (libc6,x86-64) => /lib64/libcrypto.so.6
        libcrypto.so (libc6,x86-64) => /usr/lib64/libcrypto.so

Подойдёт библиотека из родного openssl 1.0.0+: на этой машине её нет:
Код:

[root@Test-X64-Altlinux-KC2 ~]# rpm -qa|grep openssl
openssl-0.9.8d-alt4
cprocsp-cpopenssl-gost-64-4.0.0-4
[root@Test-X64-Altlinux-KC2 ~]# rpm -ql openssl-0.9.8d-alt4|grep crypto

А тут - порядок:
Код:

[root@test-x86-centos6 ~]# ldd /opt/cprocsp/cp-openssl/lib/ia32/engines/libgost_capi.so.0.0.0
        linux-gate.so.1 =>  (0x00e27000)
        libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00406000)
        libcapi20.so.4 => /opt/cprocsp/lib/ia32/libcapi20.so.4 (0x00110000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00f1b000)
        libc.so.6 => /lib/libc.so.6 (0x00592000)
        libdl.so.2 => /lib/libdl.so.2 (0x0025f000)
        libz.so.1 => /lib/libz.so.1 (0x00264000)
        libcpext.so.4 => /opt/cprocsp/lib/ia32/libcpext.so.4 (0x00278000)
        libcapi10.so.4 => /opt/cprocsp/lib/ia32/libcapi10.so.4 (0x00e78000)
        liburlretrieve.so.4 => /opt/cprocsp/lib/ia32/liburlretrieve.so.4 (0x00c41000)
        libcpasn1.so.4 => /opt/cprocsp/lib/ia32/libcpasn1.so.4 (0x00300000)
        libcplib.so.4 => /opt/cprocsp/lib/ia32/libcplib.so.4 (0x003a4000)
        librdrsup.so.4 => /opt/cprocsp/lib/ia32/librdrsup.so.4 (0x00c9b000)
        libasn1data.so.4 => /opt/cprocsp/lib/ia32/libasn1data.so.4 (0x00f36000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00722000)
        libm.so.6 => /lib/libm.so.6 (0x0080f000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00839000)
        /lib/ld-linux.so.2 (0x003cc000)
        libcpalloc.so.0 => /opt/cprocsp/lib/ia32/libcpalloc.so.0 (0x003b7000)
        libjemalloc.so.0 => /opt/cprocsp/lib/ia32/libjemalloc.so.0 (0x00857000)
[root@test-x86-centos6 ~]# rpm -qa|grep openssl
cprocsp-cpopenssl-gost-4.0.0-4.i486
openssl-devel-1.0.0-20.el6_2.1.i686
openssl-1.0.0-20.el6_2.1.i686
[root@test-x86-centos6 ~]# rpm -ql openssl-1.0.0-20.el6_2.1.i686|grep crypto
/usr/lib/.libcrypto.so.1.0.0.hmac
/usr/lib/.libcrypto.so.10.hmac
/usr/lib/libcrypto.so.1.0.0
/usr/lib/libcrypto.so.10
[root@test-x86-centos6 ~]# ldconfig -p|grep libcrypto
        libcrypto.so.10 (libc6) => /usr/lib/libcrypto.so.10
        libcrypto.so (libc6) => /usr/lib/libcrypto.so

Русев Андрей, ООО "КРИПТО-ПРО"
Offline kropotin  
#5 Оставлено : 17 февраля 2015 г. 9:07:29(UTC)
kropotin

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

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

Как быть в моем случае? OpenSSL более свежий.
CentOS 7 x64.
Код:

ldd /opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.so.0.0.0
  linux-vdso.so.1 =>  (0x00007fffeebfe000)
  libcrypto.so.1.0.0 => not found
  libcapi20.so.4 => /opt/cprocsp/lib/amd64/libcapi20.so.4 (0x00007f8859019000)
  libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8858dfd000)
  libc.so.6 => /lib64/libc.so.6 (0x00007f8858a3c000)
  libcpext.so.4 => /opt/cprocsp/lib/amd64/libcpext.so.4 (0x00007f88588d3000)
  libcapi10.so.4 => /opt/cprocsp/lib/amd64/libcapi10.so.4 (0x00007f88587bf000)
  liburlretrieve.so.4 => /opt/cprocsp/lib/amd64/liburlretrieve.so.4 (0x00007f88586bb000)
  librdrsup.so.4 => /opt/cprocsp/lib/amd64/librdrsup.so.4 (0x00007f8858594000)
  libasn1data.so.4 => /opt/cprocsp/lib/amd64/libasn1data.so.4 (0x00007f8857e3d000)
  libpkivalidator.so.4 => /opt/cprocsp/lib/amd64/libpkivalidator.so.4 (0x00007f8857d15000)
  libdl.so.2 => /lib64/libdl.so.2 (0x00007f8857b10000)
  libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f8857809000)
  libm.so.6 => /lib64/libm.so.6 (0x00007f8857507000)
  libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f88572f0000)
  /lib64/ld-linux-x86-64.so.2 (0x00007f885933c000)
  libcpalloc.so.0 => /opt/cprocsp/lib/amd64/libcpalloc.so.0 (0x00007f88571ef000)
  libjemalloc.so.0 => /opt/cprocsp/lib/amd64/libjemalloc.so.0 (0x00007f88570d6000)
  libcplib.so.4 => /opt/cprocsp/lib/amd64/libcplib.so.4 (0x00007f8856fc5000)
  libocsp.so.4 => /opt/cprocsp/lib/amd64/libocsp.so.4 (0x00007f8856e79000)
  libcpasn1.so.4 => /opt/cprocsp/lib/amd64/libcpasn1.so.4 (0x00007f8856d00000)

rpm -qa|grep openssl
	openssl-libs-1.0.1e-34.el7_0.7.x86_64
	openssl-1.0.1e-34.el7_0.7.x86_64
	cprocsp-cpopenssl-gost-64-4.0.0-4.x86_64

rpm -ql openssl-libs-1.0.1e-34.el7_0.7.x86_64 | grep crypto
	/usr/lib64/.libcrypto.so.1.0.1e.hmac
	/usr/lib64/.libcrypto.so.10.hmac
	/usr/lib64/libcrypto.so.1.0.1e
	/usr/lib64/libcrypto.so.10

ldconfig -p|grep libcrypto
	libcrypto.so.10 (libc6,x86-64) => /lib64/libcrypto.so.10

Отредактировано пользователем 17 февраля 2015 г. 9:09:06(UTC)  | Причина: Не указана

Offline olin  
#6 Оставлено : 17 февраля 2015 г. 19:35:21(UTC)
olin


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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 334

Поблагодарили: 50 раз в 43 постах
Можно попробовать создать символическую ссылку и обновить кэш ldconfig, однако приложения, которым нужна libcrypto именно версии 1.0.0 могут крэшиться или работать неверно:
Код:

ln -s /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.1.0.0
/sbin/ldconfig /usr/lib64
Русев Андрей, ООО "КРИПТО-ПРО"
Offline kropotin  
#7 Оставлено : 20 февраля 2015 г. 14:40:35(UTC)
kropotin

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

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

Можно примеры конфигов, как подключать gost_capi в linux через openssl и nginx?
Offline kropotin  
#8 Оставлено : 20 февраля 2015 г. 15:10:10(UTC)
kropotin

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

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

Прописал ssl_engine в nginx.conf. При запуске nginx выдает:
Код:

Feb 20 06:55:13 localhost.localdomain nginx[882]: nginx: [warn] ENGINE_by_id("gost_capi") failed (SSL: error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:filename(/usr/lib64/openssl/engines/libgost_capi.so): /usr/lib64/openssl/engines/libgost_capi.so: cannot open shared object file: No such file or directory error:25070067:DSO support routines:DSO_load:could not load the shared library error:260B6084:engine routines:DYNAMIC_LOAD:dso not found error:2606A074:engine routines:ENGINE_by_id:no such engine:id=gost_capi)
Feb 20 06:55:13 localhost.localdomain nginx[882]: nginx: configuration file /etc/nginx/nginx.conf test failed
Feb 20 06:55:13 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1
Feb 20 06:55:13 localhost.localdomain systemd[1]: Failed to start nginx - high performance web server.
Feb 20 06:55:13 localhost.localdomain systemd[1]: Unit nginx.service entered failed state.

Кинул библиотеку libgost_capi.so.0.0.0 по данному путим, сделал символическую ссылку libgost_capi.so:
Код:

Feb 20 06:58:52 localhost.localdomain capi20[2072]: sup_lib 06:58:52.679516 support_n_dlopen:45 p:2072 t:0x0x7fea713031d0 support_n_dlopen(/opt/cprocsp/lib/amd64/libcsp.so, 1) = (nil) fail Unknown error -1(-1)
Feb 20 06:58:52 localhost.localdomain capi20[2072]: sup_lib 06:58:52.679529 support_n_dlopen:45 p:2072 t:0x0x7fea713031d0 Info: detect support_n_dlopen() retry=14 errno = Unknown error -1(-1)
Feb 20 06:58:52 localhost.localdomain capi20[2072]: sup_lib 06:58:52.679667 support_n_dlopen:45 p:2072 t:0x0x7fea713031d0 support_n_dlopen(/opt/cprocsp/lib/amd64/libcsp.so, 1) = (nil) fail Unknown error -1(-1)
Feb 20 06:58:52 localhost.localdomain capi20[2072]: sup_lib 06:58:52.679681 support_n_dlopen:45 p:2072 t:0x0x7fea713031d0 Info: detect support_n_dlopen() retry=15 errno = Unknown error -1(-1)
Feb 20 06:58:52 localhost.localdomain capi20[2072]: sup_lib 06:58:52.679804 support_n_dlopen:45 p:2072 t:0x0x7fea713031d0 support_n_dlopen(/opt/cprocsp/lib/amd64/libcsp.so, 1) = (nil) fail Unknown error -1(-1)
Feb 20 06:58:52 localhost.localdomain nginx[2072]: nginx: [warn] ENGINE_set_default("gost_capi", ENGINE_METHOD_ALL) failed (SSL: error:8006A041:lib(128):CAPI_INIT:malloc failure error:260B806D:engine routines:ENGINE_TABLE_REGISTER:init failed)
Offline olin  
#9 Оставлено : 25 февраля 2015 г. 14:39:23(UTC)
olin


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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 334

Поблагодарили: 50 раз в 43 постах
Вы не установили КриптоПро CSP - см. FAQ выше.
Русев Андрей, ООО "КРИПТО-ПРО"
Offline kropotin  
#10 Оставлено : 26 февраля 2015 г. 11:52:26(UTC)
kropotin

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

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

CryptoPro CSP установлен.

Конфиг /etc/nginx/conf.d/example_ssl.conf
Код:

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/nginx/nginx.cer;
    ssl_certificate_key  engine:gost_capi:/etc/nginx/nginx.cer;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

Конфиг /etc/pki/tls/openssl.cnf
Код:

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
gost_capi = gost_section

[gost_section]
engine_id = gost_capi
dynamic_path = /opt/cprocsp/cp-openssl/lib/ia32/engines/libgost_capi.so
default_algorithms = ALL

Серверный сертфикат установлен:
Код:

su -s /bin/bash -l nginx
-bash-4.1$ ./cryptcp -creatrqst -provtype 75 -ex -cont "\\\\.\\HDIMAGE\\nginx" -dn "CN=172.16.74.1, O=nginx, C=RU, E=admin@nginx.ru" -certusage "1.3.6.1.5.5.7.3.1" /tmp/nginx.csr
...
-bash-4.1$ ./certmgr -inst -store uMy -file /etc/nginx/nginx.cer

Сертификат и СОС УЦ установлены:
Код:

./certmgr -inst -store mRoot -file /tmp/nginx/uc-cert.cer
./certmgr -inst -store mCa -file /tmp/nginx/uc-cert.crl -crl

Запускаю nginx:
Код:

service nginx start
Starting nginx: nginx: [emerg] SSL_CTX_use_certificate("/etc/nginx/nginx.cer") failed (SSL: error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm error:0B07706F:x509 certificate routines:X509_PUBKEY_get:unsupported algorithm error:140BF10C:SSL routines:SSL_SET_CERT:x509 lib)
Offline pd  
#11 Оставлено : 26 февраля 2015 г. 13:54:42(UTC)
pd


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

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

Сказал(а) «Спасибо»: 11 раз
Поблагодарили: 63 раз в 52 постах
Для простой проверки работоспособности openssl + gost_capi можно выполнить две команды:

  1. Проверка загрузки engine — должны увидеть "CryptoPro ENGINE GOST CAPI"

    Код:
    openssl engine

    с приблизительно таким выводом:

    Цитата:
    (rdrand) Intel RDRAND engine
    (dynamic) Dynamic engine loading support
    (gost_capi) CryptoPro ENGINE GOST CAPI ($Revision: 114689 $)


  2. Проверка возможности подписи — должны успешно подписать

    Код:
    openssl cms -sign -engine gost_capi -keyform ENGINE -inkey www.vpngost.ru -in "doc.txt" -out "doc.signed.txt" -outform PEM -CAfile /path/to/cert/www.vpngost.ru.cer -nodetach -signer /path/to/cert/www.vpngost.ru.cer


Если эти команды проходят успешно — openssl корректно работает c gost_capi, тогда при ошибках в работе nginx можно предположить, что он работает с каким-то другим openssl, который настроен некорректно или не настроен вообще.

Отредактировано пользователем 26 февраля 2015 г. 13:56:29(UTC)  | Причина: fix

Offline kropotin  
#12 Оставлено : 27 февраля 2015 г. 10:08:45(UTC)
kropotin

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

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

Код:
[root@tls-nginx ~]# openssl engine
(dynamic) Dynamic engine loading support


Код:
[root@tls-nginx ~]# openssl engine gost_capi
3077641964:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:187:filename(/usr/lib/openssl/engines/libgost_capi.so): /usr/lib/openssl/engines/libgost_capi.so: cannot open shared object file: No such file or directory
3077641964:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
3077641964:error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:450:
3077641964:error:2606A074:engine routines:ENGINE_by_id:no such engine:eng_list.c:417:id=gost_capi

Ок, скопировал библиотеку /opt/cprocsp/cp-openssl/lib/ia32/engines/libgost_capi.so.0.0.0 в /usr/lib/openssl/engines/libgost_capi.so

Код:
[root@tls-nginx ~]# openssl engine gost_capi
(gost_capi) CAPIlite (CryptoAPI) gost ENGINE


Openssl видит gost_capi, но только тогда, когда явно укажешь, openssl engine снова говорит:
Код:
[root@tls-nginx engines]# openssl engine
(dynamic) Dynamic engine loading support


Код:
[root@tls-nginx ~]# service nginx configtest
nginx: [emerg] SSL_CTX_use_certificate("/etc/nginx/nginx.cer") failed (SSL: error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm error:0B07706F:x509 certificate routines:X509_PUBKEY_get:unsupported algorithm error:140BF10C:SSL routines:SSL_SET_CERT:x509 lib)
nginx: configuration file /etc/nginx/nginx.conf test failed


Может nginx не понимает сертифкат в Base64 кодировке?
Генерируем новый в DER-кодировке, удаляем старый, устанавливаем, сбрасываем пароль на контейнер:
Код:
[root@tls-nginx tmp]# service nginx configtest
nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/nginx.cer") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: configuration file /etc/nginx/nginx.conf test failed


Так как же правильно прописать КриптоПро в OpenSSL?
Offline kropotin  
#13 Оставлено : 27 февраля 2015 г. 10:13:57(UTC)
kropotin

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

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

Попытка зашифровать файл дает тот же результат:
Код:
[root@tls-nginx tmp]# openssl cms -sign -engine gost_capi -keyform ENGINE -inkey qwerty -in "test.txt" -out "test.signed.txt" -outform PEM -CAfile /etc/nginx/nginx.cer -nodetach -signer /etc/nginx/nginx.cer
engine "gost_capi" set.
unable to load certificate
3078264556:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE


Что-то не то с сертификатом?
Offline kropotin  
#14 Оставлено : 27 февраля 2015 г. 11:02:58(UTC)
kropotin

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

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

Модифицировал openssl.cnf: строку
Код:
openssl_conf = openssl_def

перенес в самое начало, остальные блоки в конец конфигурационного файла.
Результат:
Код:
[root@tls-nginx tmp]# openssl engine
(dynamic) Dynamic engine loading support
(gost_capi) CAPIlite (CryptoAPI) gost ENGINE

Но один фиг:
Код:
[root@tls-nginx tmp]# openssl cms -sign -engine gost_capi -keyform ENGINE -inkey qwerty -in "test.txt" -out "test.signed.txt" -outform PEM -CAfile /etc/nginx/nginx.cer -nodetach -signer /etc/nginx/nginx.cer
engine "gost_capi" set.
unable to load certificate
3078481644:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Offline Iniki  
#15 Оставлено : 27 февраля 2015 г. 11:59:59(UTC)
Iniki

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

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

У меня та же проблема
Код:
failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

Отредактировано пользователем 27 февраля 2015 г. 12:02:56(UTC)  | Причина: Не указана

Offline kropotin  
#16 Оставлено : 27 февраля 2015 г. 12:06:08(UTC)
kropotin

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

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

После множественных манипуляций все заблочилось и отпал sshd (видать с шифрованием что-то):
Код:
Starting sshd: support_mutex_open("registry_lock") failed:: Permission denied
Offline Iniki  
#17 Оставлено : 27 февраля 2015 г. 12:06:27(UTC)
Iniki

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

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

Автор: kropotin Перейти к цитате
Модифицировал openssl.cnf: строку
Код:
openssl_conf = openssl_def

перенес в самое начало, остальные блоки в конец конфигурационного файла.
Результат:
Код:
[root@tls-nginx tmp]# openssl engine
(dynamic) Dynamic engine loading support
(gost_capi) CAPIlite (CryptoAPI) gost ENGINE

Но один фиг:
Код:
[root@tls-nginx tmp]# openssl cms -sign -engine gost_capi -keyform ENGINE -inkey qwerty -in "test.txt" -out "test.signed.txt" -outform PEM -CAfile /etc/nginx/nginx.cer -nodetach -signer /etc/nginx/nginx.cer
engine "gost_capi" set.
unable to load certificate
3078481644:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE


А у вас доступ по SSH не поломался после вынесения
Код:
openssl_conf = openssl_def
в самый вверх конфига openssl.cnf ??
Offline kropotin  
#18 Оставлено : 27 февраля 2015 г. 12:08:24(UTC)
kropotin

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

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

Автор: Iniki Перейти к цитате

А у вас доступ по SSH не поломался после вынесения
Код:
openssl_conf = openssl_def
в самый вверх конфига openssl.cnf ??


От оно чо!

Действительно, после того как закомментировал
Код:
openssl_conf = openssl_def
, sshd поднялся.

Отредактировано пользователем 27 февраля 2015 г. 12:11:24(UTC)  | Причина: Не указана

Offline pd  
#19 Оставлено : 27 февраля 2015 г. 13:27:03(UTC)
pd


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

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

Сказал(а) «Спасибо»: 11 раз
Поблагодарили: 63 раз в 52 постах
представленные в FAQ строчки начинающиеся c "openssl_conf = openssl_def" из логики конфига, должны быть после глобальных определений, обычно глобальные определения заканчиваются "oid_section = new_oids", то есть вставлять наш кусок конфига следует после них.

Отредактировано пользователем 27 февраля 2015 г. 13:28:02(UTC)  | Причина: fix

Offline kropotin  
#20 Оставлено : 27 февраля 2015 г. 13:32:01(UTC)
kropotin

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

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

Автор: pd Перейти к цитате
представленные в FAQ строчки начинающиеся c "openssl_conf = openssl_def" из логики конфига, должны быть после глобальных определений, обычно глобальные определения заканчиваются "oid_section = new_oids", то есть вставлять наш кусок конфига следует после них.


Ок, с этим разобрались. как быть с
Код:
[root@tls-nginx tmp]# openssl cms -sign -engine gost_capi -keyform ENGINE -inkey qwerty -in "test.txt" -out "test.signed.txt" -outform PEM -CAfile /etc/nginx/nginx.cer -nodetach -signer /etc/nginx/nginx.cer
engine "gost_capi" set.
unable to load certificate
3078485740:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
17 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.