以前にも同様の質問がありましたが、configureスクリプトのフラグが変更されたため、回答は適用されなくなったようです。 x86とx64の両方でUbuntu14.04.5のgitソースからOpenVPNをコンパイルしようとしています。 OpenSSL1.0.1tをビルドして/ usr/local/sslにインストールしました。設定オプションのさまざまな組み合わせを試しましたが、コンパイラはそれ以来認識しているようです
./configure OPENSSL_LIBS="-L/usr/local/ssl/ -lssl -lcrypto" OPENSSL_CFLAGS="-I/usr/local/ssl/include/"
エラーなしで終了しますが、./configure OPENSSL_LIBS="-L/usr/local/ssl/" OPENSSL_CFLAGS="-I/usr/local/ssl/include/"
結果はconfigure: error: openssl check failed
。 makeとmakeinstallを実行すると、OpenSSLのシステムバージョンが報告されます。
root@anonymous:/usr/local/src/openvpn# openvpn --version
OpenVPN 2.3_git [git:master/d1bd37fd508ee046] x86_64-unknown-linux-gnu [SSL (OpenSSL)]
[LZO] [LZ4] [EPOLL] [MH] [IPv6] built on Aug 16 2016
library versions: OpenSSL 1.0.1f 6 Jan 2014, LZO 2.06
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <[email protected]>
Compile time defines: enable_async_Push=no enable_comp_stub=no enable_crypto=yes
enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dlopen=unknown
enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes
enable_fragment=yes enable_iproute2=no enable_libtool_lock=yes enable_lz4=yes
enable_lzo=yes enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no
enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=yes
enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no
enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no
enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=no
enable_werror=no enable_win32_dll=yes enable_x509_alt_username=no with_crypto_library=openssl
with_gnu_ld=yes with_mem_check=no with_plugindir='$(libdir)/openvpn/plugins' with_sysroot=no
システムOpenSSL:
root@anonymous:/usr/local/src/openvpn# openssl version
OpenSSL 1.0.1f 6 Jan 2014
コンパイルされたOpenSSL:
root@anonymous:/usr/local/ssl/bin# ./openssl version
OpenSSL 1.0.1t 3 May 2016
単純なものでなければならないことはわかっていますが、OpenVPNフォーラムで他のユーザーがこれについて質問しているのを見て、まだ回答がありません。
以下は、OpenSSL1.0.2でOpenVPNを構築するために使用した手順です。 OpenSSL 1.0.1 vs。 1.0.2 vs。 1.1.0は重要ではありません。ただし、1.1.0はOPENSSL_init_ssl
ではなくSSL_library_init
を使用するため、一部のConfigureスクリプトはOpenSSL1.1.0で停止します。 LinuxでのRPATHの使用に注意してください(OS Xは別の手法を使用します)。
OpenSSL構成オプションは、ほとんどの場合、wikiの コンパイルとインストール|オプションの構成 に記載されています。私はnot OpenVPNで同様のものを見つけましたが、./configure --help
はあまり役に立ちませんでした。多くの場合、Autoolsプロジェクトの場合、--with-ssl=<path to ssl root>
する必要がありますが、OpenVPNにはそのオプションがないようです。 OpenVPNの場合、以下のプロセスはAutools CFLAGS
を使用してアドホックになりました。
情報が漏洩する可能性があるため、どちらのライブラリも圧縮を無効にしました。詳細については、 可能であれば私を見つけてください:暗号化されたVoIP会話で話されたフレーズを明らかにする を参照してください。問題は可変ビットレートエンコーディングであり、基本的な設計は他の圧縮ライブラリ(zlibなど)で普及しています。
OpenSSL 1.0.2
$ wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
$ tar xzf openssl-1.0.2h.tar.gz
$ cd openssl-1.0.2h
$ ./config shared no-ssl2 no-ssl3 no-comp enable-ec_nistp_64_gcc_128 -Wl,-rpath=/usr/local/ssl/lib --prefix=/usr/local/ssl
$ make -j 4
$ make test
$ Sudo make install
# clear program cache
$ hash -r
openssl
プログラムが、期待される共有オブジェクトを使用していることを確認できます。
$ ldd /usr/local/ssl/bin/openssl
linux-vdso.so.1 => (0x00007ffc36578000)
libssl.so.1.0.0 => /usr/local/ssl/lib/libssl.so.1.0.0 (0x00007f94b48fb000)
libcrypto.so.1.0.0 => /usr/local/ssl/lib/libcrypto.so.1.0.0 (0x00007f94b448b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f94b40c6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f94b3ec2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f94b4b6c000)
次の方法で、新しいopenssl
がパス上にあることを確認することもできます。ただし、問題には必要ありません。
$ Sudo ln -s /usr/local/ssl/bin/openssl /usr/local/bin/openssl
$ hash -r
$ command -v openssl
/usr/local/bin/openssl
OpenVPN 2.3.11
$ wget https://swupdate.openvpn.org/community/releases/openvpn-2.3.11.tar.gz
$ tar xzf openvpn-2.3.11.tar.gz
$ cd openvpn-2.3.11
$ CFLAGS="-I/usr/local/ssl/include -Wl,-rpath=/usr/local/ssl/lib -L/usr/local/ssl/lib" ./configure --disable-lzo
$ make -j 4
次に、OpenVPNプログラムをチェックして、リンク先を確認します。
$ find . -type f -name openvpn
./src/openvpn/openvpn
$ ldd ./src/openvpn/openvpn
linux-vdso.so.1 => (0x00007ffc8bfc4000)
libssl.so.1.0.0 => /usr/local/ssl/lib/libssl.so.1.0.0 (0x00007f74f49f3000)
libcrypto.so.1.0.0 => /usr/local/ssl/lib/libcrypto.so.1.0.0 (0x00007f74f4583000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f74f437f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f74f3fba000)
/lib64/ld-linux-x86-64.so.2 (0x00007f74f4c64000)
次に、セルフテストを実行します。
$ make check
...
make[3]: Entering directory `/home/jwalton/openvpn-2.3.11/tests'
./t_client.sh: cannot find 't_client.rc' in build dir ('..')
./t_client.sh: or source directory ('.'). SKIPPING TEST.
SKIP: t_client.sh
Testing cipher AES-128-CBC... OK
Testing cipher AES-128-CFB... OK
Testing cipher AES-128-CFB1... OK
...
テストがOKの場合は、OpenVPNをインストールします。
$ Sudo make install
$ hash -r
$ command -v openvpn
/usr/local/sbin/openvpn
最後に、それを確認してください:
$ /usr/local/sbin/openvpn --version
OpenVPN 2.3.11 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [EPOLL] [MH] [IPv6] built on Aug 17 2016
library versions: OpenSSL 1.0.2h 3 May 2016
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <[email protected]>
...
興味があれば、プロセスを自動化するビルドスクリプトを Noloader | Build-Scripts で見つけることができます。 OpenVPN用のものが含まれています。
OpenVPNはランタイムライブラリのバージョンを報告するので、ここに表示されているのはリンク/ダイナミックライブラリの動作です。おそらく、ld.so.confは/usr/lib/.so/usr/local/lib/。soを優先するように設定されています
私がうまく使用したソリューションの1つは、OpenVPN build-system です。
generic/build.vars
でOpenSSLソースバージョンを変更し、手放すだけです(文書化されているとおり)
--dynamicbase
や--nxcompat
などのオプションで問題が発生した場合は、generic/build.vars
でこれらのフラグも無効にしてください。