所以我们必须在网页上使用 TLS1.1,但目前正在运行 OpenSSL0.9.8za。所以必须将 OpenSSL 升级到至少 1.0.2。
操作系统 MacOS 10.12.6 Sierra。
阿帕奇版本 2.2.34
我使用安装文件中的快速方法安装了 OpenSSL:./config -> make -> make test -> 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): Symbol not found: _ssl_cmd_SSLCACertificateFile\n 引用自:/usr/local/apache2/modules/mod_ssl.so\n 预期在:flat namespace\n in /usr/local/apache2/modules/mod_ssl.so
第 97 行是加载命令:
LoadModule ssl_module 模块/mod_ssl.so
旧的 mod_ssl.so 大小为 335K,现在构建的大小为 26K。我不知道这是否意味着什么。
我尝试使用直接从下载的 OpenSSL 文件夹中包含的内容构建 mod_ssl.so,结果相同。
我已经在网上浏览了 2 天,但找不到任何解决方案。任何想法我做错了什么?
- - 编辑 - -
我试过了:
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
但是这会产生错误:
配置:错误:...错误,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,