配置 Apache 服务器以使用特定的 OpenSSL 引擎

Configure Apache server to use specific OpenSSL Engine

我有一个可用的 OpenSSL RSA 引擎(即 .so 文件)和一个配置为 SSL 模式的 Apache 服务器。
如何让 Apache 使用我的 RSA 引擎中的 RSA 实现?换句话说:我应该把引擎放在哪里(.so 文件),如何修改 openssl.cnf 文件以及如何构建 Apache?

首先我不完全理解你的问题。我想你的意思是你的系统上安装了 Apache 正在使用的 OpenSSL 版本,你想使用你也下载并安装的不同版本(可能是更新版本)?

这实际上取决于哪个平台(Windows 或 Linux),您如何安装 Apache(预安装在系统上,通过 yum 或 apt-get 等包管理器,或手动安装源)。

像 Windows 安装和包管理器中的预构建包倾向于使用系统默认的 SSL 库并且不是最容易更改的(尽管我对它们都不够熟悉说实话) .

所以最简单的方法是从源代码而不是从预构建的包安装 Apache。

您通常需要在编译时进行设置,下载源代码后,使用 --with-ssl 选项进行配置,然后再使用 make 构建您的代码:

./configure --with-ssl=/usr/local/ssl --enable-ssl --enable-so

如果您之前没有从源代码安装过,那么这可能有点吓人。我在博客 post here on HTTP2 上给出了关于如何从 linux: https://www.tunetheweb.com/performance/http2/ 上的源代码下载和安装最新的 OpenSSL 和 Apache 的详细说明,但您的网站上可能有更好的选择具体平台。

对我有用的步骤:

1.Install 来自源的 OpenSSL,在 运行 ./config
时指定 -DOPENSSL_LOAD_CONF 1.1.Create/build 您的 OpenSSL 引擎并将其添加到您的 openssl.cnf 文件
2.Install 来自源的 httpd,使用这些命令:

CFLAGS='-DSSL_EXPERIMENTAL_ENGINE -DSSL_ENGINE -DOPENSSL_LOAD_CONF' ./configure --enable-ssl --with-ssl=/usr/local/ssl --with-pcre=/usr/local/pcre --enable-so      
make       
make install

2.1.Edit httpd-ssl.conf 通过添加 SSLCryptoDevice engine_id 并确保在执行 $ openssl engine 时,engine_id 说明符出现在列表中。此外,您必须创建自签名证书和私钥,修改 httpd.conf 文件,但这不是本题的主题。搜索:如何在 Apache 上配置 HTTPS。
3.$ httpd -k restart 仅此而已。

编辑
.so 文件 (Openssl ENGINE) 的位置必须在 openssl.cnf.

中指定