所以我们必须在网页上使用TLS1.1,但目前正在运行OpenSSL0.9.8za。所以必须将OpenSSL升级到至少1.0.2。
操作系统MacOS 10.12.6 Sierra。
Apache 2.2.34版本
我使用安装文件中的快速方法安装了OpenSSL:./ config - >制作 - >进行测试 - > make install 它安装没有问题,我可以看到。
然而,当我尝试使用:
构建一个新的mod_ssl.so时sudo /usr/local/apache2/bin/apxs -c -D HAVE_OPENSSL=1 -i -I /usr/local/ssl/include/openssl mod_ssl.c
在没有-D HAVE_OPENSSL = 1的情况下出现了很多错误,但是我得到了2个警告:
mod_ssl.c:275:5:警告:' ERR_remove_state'已弃用
mod_ssl.c:302:5:警告:隐含的功能声明' CRYPTO_malloc_init'在C99 [-Wimplicit-function-declaration]
中无效
但它在/usr/local/apache2/modules/mod_ssl.so中创建了一个mod_ssl.so,它应该是。但是当我启动服务器时,我收到以下错误消息:
httpd:/usr/local/apache2/conf/httpd.conf第97行的语法错误:无法将/usr/local/apache2/modules/mod_ssl.so加载到服务器:dlopen(/ usr / local / apache2 / modules / mod_ssl.so,10):找不到符号:_ssl_cmd_SSLCACertificateFile \ n引用自:/usr/local/apache2/modules/mod_ssl.so\n预期:flat namespace \ n在/ usr / local / apache2 / modules / mod_ssl.so
第97行是加载命令:
LoadModule ssl_module modules / mod_ssl.so
旧的mod_ssl.so大小为335K,现在构建的大小为26K。我不知道这是否意味着什么。
我尝试使用包含直接来自下载的OpenSSL文件夹的mod包含mod_ssl.so,结果相同。
我已经在网上浏览了两天,但我无法找到任何解决方案。什么想法我做错了什么?
---编辑---
我试过了:
sudo /usr/local/apache2/bin/apxs -c -D HAVE_OPENSSL=1 -i -I /usr/local/ssl/include/ -L /usr/local/ssl/lib -Wl,-rpath=/usr/local/ssl/lib mod_ssl.c
路径应该是这样的吗?这个编译没有任何警告,并创建一个大约26k但无法运行的mod_ssl.so文件。尝试启动服务器会显示与上面相同的错误消息。
我还尝试编译Apache服务器以查看服务器是否可以使用以下命令自行编译:
./configure --enable-mods-shared="all" --enable-so --enable-ssl --with-ssl=/usr/local/ssl
然而这会产生错误:
configure:error:...错误,SSL / TLS库缺失或无法使用
并直接链接到/ usr / local / ssl / lib文件夹:
./configure --enable-mods-shared="all" --enable-so --enable-ssl --with-ssl=/usr/local/ssl/lib
然而,在安装的make步骤失败之前,这会产生10个警告和错误。
第一次警告:
ssl_engine_init.c:374:13: warning: implicit declaration of function 'SSLv2_client_method' is
invalid in C99 [-Wimplicit-function-declaration]
最终错误:
ssl_engine_init.c:992:42: error: incomplete definition of type 'struct dh_st' BN_num_bits(dhparams->p), vhost_id,
答案 0 :(得分:0)
在构建mod_ssl
时遇到了类似的情况(在Ubuntu上,但是原理应该相同)。我发现,如果我告诉mod_ssl.so
处理该目录中C语言源文件的所有 all ,则可以得到一个适当大小的apxs
文件,该文件如下:
apxs2 -c *.c
sudo apxs2 -i mod_ssl.la
(因此,安装时只需要提及mod_ssl.la
文件,但编译时必须包括所有源文件。)