以下是我使用OpenSSL 1.0.2构建OpenVPN的过程。OpenSSL 1.0.1 与 1.0.2 与
1.1.0无关紧要。但是,某些配置脚本在OpenSSL
1.1.0上终止,因为1.1.0使用
OPENSSL_init_ssl而不是
SSL_library_init。注意在Linux上使用RPATH(OS
X将使用另一种技术)。
OpenSSL配置选项大部分记录在《编译和安装》中。在其Wiki上配置选项。我并
没有 找到OpenVPN的相似,
./configure --help是不是非常有帮助。通常,对于Autools项目,您需要
--with-ssl=<path to sslroot>,但是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.shTesting cipher AES-128-CBC... OKTesting cipher AES-128-CFB... OKTesting cipher AES-128-CFB1... OK...如果测试正常,请安装OpenVPN:
$ sudo make install$ hash -r$ command -v openvpn/usr/local/sbin/openvpn
最后,检查一下:
$ /usr/local/sbin/openvpn --versionOpenVPN 2.3.11 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [EPOLL] [MH] [IPv6] built on Aug 17 2016library versions: OpenSSL 1.0.2h 3 May 2016Originally developed by James YonanCopyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>...
如果有兴趣,您可以在Noloader | Java中找到一个构建脚本来自动执行该过程。构建脚本。它包括一个用于OpenVPN的服务器。



