我有一个可用的 OpenSSL RSA 引擎(即一个.so
文件)和一个配置为 SSL 模式的 Apache 服务器。
如何让 Apache 使用我的 RSA 引擎中的 RSA 实现?换句话说:我将引擎(.so
文件)放在哪里,如何修改openssl.cnf
文件以及如何构建 Apache?
2 回答
首先,我不完全理解你的问题。我想您的意思是您的系统上安装了 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/但可能有更好的选择您的特定平台。
对我有用的步骤:
1.从源安装 OpenSSL,指定-DOPENSSL_LOAD_CONF
何时运行./config
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 httpd-ssl.conf
.通过添加编辑SSLCryptoDevice engine_id
并确保执行时$ openssl engine
,说明engine_id
符出现在列表中。此外,您必须创建自签名证书和私钥,修改httpd.conf
文件,但这不是这个问题的主题。搜索:如何在 Apache 上配置 HTTPS。
3.$ httpd -k restart
仅此而已。
编辑
文件
的位置.so
(Openssl ENGINE)必须在openssl.cnf
.