【问题标题】:Configure Apache server to use specific OpenSSL Engine配置 Apache 服务器以使用特定的 OpenSSL 引擎
【发布时间】:2016-08-06 05:41:17
【问题描述】:

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

【问题讨论】:

标签: apache openssl mod-ssl openssl-engine


【解决方案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 中指定。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 2014-08-07
    • 2010-11-10
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 2020-08-25
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多