配置 Apache 服务器以使用特定的 OpenSSL 引擎
Posted
技术标签:
【中文标题】配置 Apache 服务器以使用特定的 OpenSSL 引擎【英文标题】:Configure Apache server to use specific OpenSSL Engine 【发布时间】:2016-08-06 05:41:17 【问题描述】:我有一个可用的 OpenSSL RSA 引擎(即一个 .so
文件)和一个配置为 SSL 模式的 Apache 服务器。
如何让 Apache 使用我的 RSA 引擎中的 RSA 实现?换句话说:我将引擎放在哪里(.so
文件),如何修改openssl.cnf
文件以及如何构建 Apache?
【问题讨论】:
Custom OpenSSL engine when running within Apache via mod_ssl 在 Unix 和 Linux Stack Exchange 上,Integrating Apache with PKCS#11 device via engine_pkcs11 and OpenSSL 在服务器故障上。 您好 jww,我已经阅读了您提供的第一个链接,但我不知道如何修改openssl.cnf
文件。你认为this 会是一个好的开始吗?
@jww 我修改了openssl.cnf
文件,并按照我在上一条评论中提供的链接中的说明添加了我的引擎。 Apache documentation 说“要发现支持哪些引擎名称,请运行命令“openssl engine””,但我的引擎 ID 没有出现在列表中。我该如何解决这个问题?
【参考方案1】:
首先,我不完全理解您的问题。我想您的意思是您的系统上安装了 Apache 正在使用的 OpenSSL 版本,并且您想使用您也下载并安装的其他版本(可能是更高版本)?
这实际上取决于哪个平台(Windows 或 Linux),如何安装 Apache(预安装在系统上,通过 yum 或 apt-get 等包管理器,或从源代码手动安装)。
像 Windows 安装和包管理器中的预构建包倾向于使用系统默认的 SSL 库,并且不是最容易更改的(尽管老实说我对它们都不够熟悉)。
因此,最简单的方法是从源代码安装 Apache,而不是从预构建的包中安装。
你通常需要在编译时设置这个,下载源代码后,使用 --with-ssl 选项进行配置,然后再使用 make 构建代码:
./configure --with-ssl=/usr/local/ssl --enable-ssl --enable-so
如果您之前没有从源代码安装,那么这可能有点吓人。我已经在一篇关于 HTTP2 的博客文章中给出了详细说明,介绍了如何从 linux 上的源代码下载和安装最新的 OpenSSL 和 Apache:https://www.tunetheweb.com/performance/http2/,但在您的特定平台上可能有更好的选择。
【讨论】:
我觉得我不是很了解。因此,当我尝试安装 Apache 时,我应该使用您在上述答案中所说的内容吗? 我扩展了我的答案。 我不想使用不同的 OpenSSL 版本。我只想集成一个OpenSSL engine,以便使用不同的 RSA 算法实现 在 Linux 中,OpenSSL 引擎是一个.so
文件,可以这样使用,例如:$ openssl speed rsa -engine pwd/my_engine.so
。基本上我需要知道如何将这个.so
文件与Apache 集成,以便使用我自己的RSA 实现。我知道我需要从其源文件构建 Apache,但我不知道下一步该做什么。
我想说按照 jww 的链接使用 conf 文件创建客户构建,然后按照我的回答使用该自定义构建构建 Apache。【参考方案2】:
对我有用的步骤:
1.从源安装OpenSSL,运行./config
时指定-DOPENSSL_LOAD_CONF
1.1.创建/构建您的 OpenSSL 引擎并将其添加到您的 openssl.cnf
文件
2.使用以下命令从源安装 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.通过添加SSLCryptoDevice engine_id
编辑httpd-ssl.conf
并确保在执行$ openssl engine
时,engine_id
说明符出现在列表中。此外,您必须创建自签名证书和私钥,修改httpd.conf
文件,但这不是本问题的主题。搜索:如何在 Apache 上配置 HTTPS。
3.$ httpd -k restart
仅此而已。
编辑.so
文件(Openssl ENGINE)的位置必须在openssl.cnf
中指定。
【讨论】:
以上是关于配置 Apache 服务器以使用特定的 OpenSSL 引擎的主要内容,如果未能解决你的问题,请参考以下文章