LINUX.ORG.RU

Сборка openvpn из сырцов


0

1

Доброго дня! Пытаюсь собрать openvpn-2.1.4 из src.rpm. В spec файл прописываю следующие параметры конфигурации:

%configure \
    --enable-pthread \
    --enable-password-save \
    --enable-iproute2 \
    --with-ifconfig-path=/sbin/ifconfig \
    --with-iproute-path=/sbin/ip \
    --with-route-path=/sbin/route \
    --with-ssl-headers=/usr/include/openssl/ \
    --with-ssl-lib=/usr/lib/openssl/ \
    --with-lzo-headers=/usr/include/lzo \
    --with-lzo-lib=/usr/lib/ CFLAGS=-DALLOW_NON_CBC_CIPHERS \

Сборка вылетает со следующей ошибкой:

gcc -DHAVE_CONFIG_H -I.   -I/usr/include/openssl/ -I/usr/include/lzo -I.  -DALLOW_NON_CBC_CIPHERS -D_REENTRANT -pthread -MT buffer.o -MD -MP -MF .deps/buffer.Tpo -c -o buffer.o buffer.c
mv -f .deps/buffer.Tpo .deps/buffer.Po
gcc -DHAVE_CONFIG_H -I.   -I/usr/include/openssl/ -I/usr/include/lzo -I.  -DALLOW_NON_CBC_CIPHERS -D_REENTRANT -pthread -MT crypto.o -MD -MP -MF .deps/crypto.Tpo -c -o crypto.o crypto.c
In file included from crypto.c:29:
crypto.h:29:1: warning: "ALLOW_NON_CBC_CIPHERS" redefined
<command-line>: warning: this is the location of the previous definition
crypto.c: In function 'init_key_type':
crypto.c:654: error: 'ASN1_PKEY_MAC' undeclared (first use in this function)
crypto.c:654: error: (Each undeclared identifier is reported only once
crypto.c:654: error: for each function it appears in.)
make[2]: *** [crypto.o] Error 1
make[2]: Leaving directory `/home/paul/rpmbuild/BUILD/openvpn-2.1.4'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/paul/rpmbuild/BUILD/openvpn-2.1.4'
make: *** [all] Error 2
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.rckEem (%build)
Чем лечить? Заранее благодарен.


Ответ на: комментарий от adriano32

Пытаюсь пропатчить последний openvpn 2.2 патчем с криптокома, ошибка:

[root@centos openvpn-2.2.1]# patch -p1 < openvpn.diff 
patching file crypto.c
Hunk #1 succeeded at 158 (offset -7 lines).
Hunk #2 succeeded at 181 (offset -7 lines).
Hunk #3 succeeded at 204 (offset -7 lines).
Hunk #4 succeeded at 257 (offset -7 lines).
Hunk #5 succeeded at 304 (offset -7 lines).
Hunk #6 succeeded at 469 (offset -7 lines).
Hunk #7 succeeded at 538 (offset -7 lines).
Hunk #8 succeeded at 561 (offset -7 lines).
Hunk #9 succeeded at 578 (offset -7 lines).
Hunk #10 succeeded at 618 (offset -7 lines).
Hunk #11 succeeded at 741 (offset -7 lines).
Hunk #12 succeeded at 781 (offset -7 lines).
Hunk #13 succeeded at 994 (offset -7 lines).
Hunk #14 succeeded at 1006 (offset -7 lines).
Hunk #15 succeeded at 1037 (offset -7 lines).
Hunk #16 succeeded at 1112 (offset -7 lines).
Hunk #17 succeeded at 1158 (offset -7 lines).
Hunk #18 succeeded at 1615 (offset -2 lines).
Hunk #19 succeeded at 1639 (offset -2 lines).
Hunk #20 succeeded at 1664 (offset -2 lines).
Hunk #21 succeeded at 1800 (offset -2 lines).
patching file crypto.h
Hunk #1 succeeded at 194 (offset 2 lines).
Hunk #2 succeeded at 242 (offset 2 lines).
Hunk #3 FAILED at 398.
1 out of 3 hunks FAILED -- saving rejects to file crypto.h.rej
patching file openvpn.h
Hunk #1 succeeded at 528 (offset 12 lines).
patching file ssl.c
Hunk #1 succeeded at 2753 (offset 606 lines).
Hunk #2 succeeded at 2829 (offset 606 lines).
Hunk #3 succeeded at 2857 (offset 606 lines).

arbyz ()
Ответ на: комментарий от arbyz

Ну так надо бы тред начинать с того, что тебе поддержка ГОСТ нужна в OpenVPN. Я это ещё в первом своём посте предполагал, а ты только сейчас признался.

Версия OpenSSL какая у тебя сейчас. Автор GOST в OpenSSL и владелец Криптоком один и тот же человек если что.

о поддержке в OpenVPN GOST из коробки в ченджлоге я не видел. Можешь собрать и проверить openvpn --show-ciphers

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

[code] openvpn --show-ciphers|grep gost [/code]

выдает пустоту

OpenSSL собрал корректно, отучил от fips, приучил к ГОСТ, в итоге

[code=bash]openssl version OpenSSL 1.0.0 29 Mar 2010[/code]

[code=bash] openssl ciphers | tr -t ":" «\\n» | sort | grep GOST GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 [/code]

Как вот теперь ВПН приучить к Гостам? Советовали патчичть вот этим [url=http://www.cryptocom.ru/opensource/openvpn.html[/url] ... но как раз выходит ошибка, отраженная в сабже.

arbyz ()
Ответ на: комментарий от arbyz

выдает пустоту
а полный выхлоп лень смотреть?

Ошибка та же? Грепай сорцы по названию ASN1_PKEY_MAC и ALLOW_NON_CBC_CIPHERS, анализируй, почему первое не объявлено, а второе переобъявлено.

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

Капец...я не кодер (((( Ок, посмотрю. Лечить нужно в любом случае.

arbyz ()
Ответ на: комментарий от arbyz
 

grep -r ASN1_PKEY_MAC /usr/src/openvpn-2.1.4/*
/usr/src/openvpn-2.1.4/crypto.c:		if (!(flags & ASN1_PKEY_MAC))
/usr/src/openvpn-2.1.4/openvpn-2.1.4.diff:+		if (!(flags & ASN1_PKEY_MAC))

Судя по этому данная функция только в двух файлах - crypto.c и патче, причем в первом случае встречается только один раз


if (!(flags & ASN1_PKEY_MAC))
			msg(M_SSLERR, "PKEY alg %s is not MAC algorithm",algname);

Как же ее объявить то? Не шарю....(((

arbyz ()

А подскажите, openssl собирали или ставили пакет с демкой? Если собирали, то как?

Если делать последовательно согласно инструкциям

http://www.cryptocom.ru/opensource/openssl098.html

http://www.cryptocom.ru/opensource/openvpn.html

, все работает.

В принципе, пакеты с демками openvpn-ГОСТ есть на странице http://www.cryptocom.ru/demo/openvpn.html

И еще, с этим патчем openvpn с openssl1.0.0 работать не будет. Новый патч будет доступен несколько позже. Поэтому пока что рекомендую собирать с openssl0.9.8e или писать свой патч для openvpn.

cryptocom ()
Ответ на: комментарий от cryptocom

OK, downgrade openssl до 0.9.8 сделать я думаю не проблема. Но что делать с openvpn? Беру «чистый» 2.1.4 с офсайта, накладываю патч для той версии получаю -

In file included from crypto.c:29:
crypto.h:29:1: warning: "ALLOW_NON_CBC_CIPHERS" redefined
<command-line>: warning: this is the location of the previous definition
crypto.c: In function 'init_key_type':
crypto.c:654: error: 'ASN1_PKEY_MAC' undeclared (first use in this function)
crypto.c:654: error: (Each undeclared identifier is reported only once
crypto.c:654: error: for each function it appears in.)
make[2]: *** [crypto.o] Error 1
make[2]: Leaving directory `/home/paul/rpmbuild/BUILD/openvpn-2.1.4'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/paul/rpmbuild/BUILD/openvpn-2.1.4'
make: *** [all] Error 2
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.rckEem (%build)

Или это исключительно потому, что версия openssl в системе >=1?

arbyz ()
Ответ на: комментарий от arbyz

Для сборки воспользуйтесь инструкциями, которые я обозначил выше. При этом исходные коды необходимо брать с официальных сайтов openssl и openvpn.

Кстати странно, что openvpn-2.2 у Вас пропатчился с ошибкой. Должен патчиться, хоть это и не предполагалось.

Проблема при сборке, судя по всему, действительно возникает из-за использования openssl >= 1. Однако такая же проблема наблюдается, если использовать openssl нужной версии без ГОСТов.

cryptocom ()
Ответ на: комментарий от cryptocom

Буду пробовать, как бы еще в виде rpm пакетов все это дело оформить....

arbyz ()
Ответ на: комментарий от arbyz

После всех волшебных манипуляций получаем

paul@centos i686]$ rpm -Uvh --test --oldpackage openssl-0.9.8e-1.i686.rpm 
ошибка: Неудовлетворенные зависимости:
	libcrypto.so.10 нужен для (установлен)openldap-2.4.19-15.el6.i686
	libcrypto.so.10 нужен для (установлен)qt-1:4.6.2-16.el6.i686
	libcrypto.so.10 нужен для (установлен)libarchive-2.8.3-2.el6.i686
	libcrypto.so.10 нужен для (установлен)libssh2-1.2.2-7.el6.i686
	libcrypto.so.10 нужен для (установлен)wget-1.12-1.4.el6.i686
	libcrypto.so.10 нужен для (установлен)bind-libs-32:9.7.0-5.P2.el6.i686
	libcrypto.so.10 нужен для (установлен)mysql-libs-5.1.47-4.el6.i686
	libcrypto.so.10 нужен для (установлен)fipscheck-1.2.0-4.1.el6.i686
	libcrypto.so.10 нужен для (установлен)net-snmp-libs-1:5.5-27.el6.i686
	libcrypto.so.10 нужен для (установлен)python-2.6.5-3.el6.i686
	libcrypto.so.10 нужен для (установлен)wpa_supplicant-1:0.6.8-10.el6.i686
	libcrypto.so.10 нужен для (установлен)python-ldap-0:2.3.10-1.el6.i686
	libcrypto.so.10 нужен для (установлен)bind-utils-32:9.7.0-5.P2.el6.i686
	libcrypto.so.10 нужен для (установлен)tcpdump-14:4.0.0-3.20090921gitdf3cb4.1.el6.i686
	libcrypto.so.10 нужен для (установлен)openssh-5.3p1-20.el6.i686
	libcrypto.so.10 нужен для (установлен)evolution-data-server-2.28.3-10.el6.i686
	libcrypto.so.10 нужен для (установлен)openssh-clients-5.3p1-20.el6.i686
	libcrypto.so.10 нужен для (установлен)hplip-libs-3.9.8-33.el6.i686
	libcrypto.so.10 нужен для (установлен)net-snmp-1:5.5-27.el6.i686
	libcrypto.so.10 нужен для (установлен)certmonger-0.24-4.el6.i686
	libcrypto.so.10 нужен для (установлен)cyrus-sasl-2.1.23-8.el6.i686
	libcrypto.so.10 нужен для (установлен)postfix-2:2.6.6-2.el6.i686
	libcrypto.so.10 нужен для (установлен)gnome-vfs2-2.24.2-6.el6.i686
	libcrypto.so.10 нужен для (установлен)ntp-4.2.4p8-2.el6.i686
	libcrypto.so.10 нужен для (установлен)gnome-vfs2-smb-2.24.2-6.el6.i686
	libcrypto.so.10 нужен для (установлен)hpijs-1:3.9.8-33.el6.i686
	libcrypto.so.10 нужен для (установлен)openssh-server-5.3p1-20.el6.i686
	libcrypto.so.10 нужен для (установлен)xorg-x11-server-Xorg-1.7.7-26.el6.i686
	libssl.so.10 нужен для (установлен)openldap-2.4.19-15.el6.i686
	libssl.so.10 нужен для (установлен)qt-1:4.6.2-16.el6.i686
	libssl.so.10 нужен для (установлен)libssh2-1.2.2-7.el6.i686
	libssl.so.10 нужен для (установлен)wget-1.12-1.4.el6.i686
	libssl.so.10 нужен для (установлен)mysql-libs-5.1.47-4.el6.i686
	libssl.so.10 нужен для (установлен)python-2.6.5-3.el6.i686
	libssl.so.10 нужен для (установлен)wpa_supplicant-1:0.6.8-10.el6.i686
	libssl.so.10 нужен для (установлен)python-ldap-0:2.3.10-1.el6.i686
	libssl.so.10 нужен для (установлен)evolution-data-server-2.28.3-10.el6.i686
	libssl.so.10 нужен для (установлен)certmonger-0.24-4.el6.i686
	libssl.so.10 нужен для (установлен)postfix-2:2.6.6-2.el6.i686
	libssl.so.10 нужен для (установлен)gnome-vfs2-2.24.2-6.el6.i686
	libssl.so.10 нужен для (установлен)gnome-vfs2-smb-2.24.2-6.el6.i686

Стоинт ЦентОС 6,0, видимо придется возвращаться на 5.6 и пробовать снова.

arbyz ()
Ответ на: комментарий от arbyz

Дело в том, что в CentOS 6 системным является openssl версии 1.0.0 Версию 0.9.8 надо ставить в отдельное место, и при сборке пакетов, которые должны работать с ГОСТами, указывать опции линковки с правильными библиотеками.

cryptocom ()
Ответ на: комментарий от cryptocom

ок, спасибо!

Вопрос в следующем:

нга CentOS 6.0 строго по инструкции собираю openssl-0.9.8e, строго по иструкции собираю openvpn-2.1.4, все патчится и собирается. НО

/opt/openvpn/sbin/openvpn --show-ciphers|grep gost 

выдает пустоту.

arbyz ()
Ответ на: комментарий от arbyz

Так получается из-за того, что используется внешний энджин (gost). Если в конфиге openssl и openvpn прописали все верно, как сказано в инструкции, у Вас будут ГОСТы в ВПН.

cryptocom ()
Ответ на: комментарий от cryptocom

Блин, сколько костылей!

cd easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
mkdir /etc/openvpn cp ../sample-config-files/server.conf /etc/openvpn/

редактирую server.conf

cp /home/paul/cp_src/openvpn-2.1.4/sample-scripts/openvpn.init /etc/rc.d/init.d/openvpn
service openvpn start
Запускается openvpn:/etc/init.d/openvpn: line 154: --daemon: команда не найдена [СБОЙ]

Где я протупил?

arbyz ()
Ответ на: комментарий от arbyz

Я предлагал Вам скачать запакетированную демо-версию. Стоит понимать, что если Вы собираете софт руками, то скорее всего с ним придется повозиться.

Этот набор конфигов и скриптов входит в стандартный OpenVPN, так что костыли не наши, да и не костыли это вовсе. Рекомендую заглянуть в init-скрипт, в 154 строку, а потом посмотреть на ошибку и в мануал openvpn.

cryptocom ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.