2016-04-14 98 views
0

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

+2

[在Unix和Linux Stack Exchange上通过mod_ssl在Apache中运行时自定义OpenSSL引擎](http://unix.stackexchange.com/q/180343)和[通过engine_pkcs11和OpenSSL将Apache与PKCS#11设备集成] (http://serverfault.com/q/711580)在服务器故障。 – jww

+0

嗨jww,我已经阅读过你提供的第一个链接,但我不知道如何修改'openssl.cnf'文件。你认为[this](https://www.openssl.org/docs/manmaster/apps/config.html)会是一个好的开始吗? –

+0

@jww我修改了'openssl。cnf'文件,并按照我在前面的评论中提供的链接中所述添加了我的引擎。 [Apache文档](http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcryptodevice)说:“要发现支持哪些引擎名称,运行命令”openssl engine“”,但我的引擎ID不会出现在列表中。我怎样才能解决这个问题? –

回答

0

的步骤,为我工作:从源

1.安装OpenSSL的,运行./config
1.1.Create /建立你的OpenSSL引擎和它添加到您的openssl.cnf文件
2.安装的httpd时指定-DOPENSSL_LOAD_CONF源,使用以下命令:

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就是这样。

EDIT
.so文件(Openssl的ENGINE)的地方必须在openssl.cnf指定。

1

首先,我不完全理解你的问题。我假定你的意思是你的系统上安装了Apache正在使用的OpenSSL版本,并且你想使用另外一个(也许是后来的版本),你也下载并安装了这个版本?

这真的取决于该平台(Windows或Linux),你怎么安装的Apache(预装系统,通过的软件包管理器像百胜或易于得到,或者手动从源代码安装)。

像Windows安装和软件包管理器那样的预先构建的软件包倾向于使用系统默认的SSL库,并且不是最容易改变的(尽管我对它们都不太熟悉)。

因此,最简单的方法是从源代码而不是从预编译的软件包安装Apache。

您通常需要使用make来构建你的代码之前设置这个在编译时,下载源后,使用--with-SSL选项来配置:

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

如果您还没有安装从源头之前,这可能有点吓人。我在HTTP2的博客文章中给出了关于如何从Linux上的源代码下载和安装最新的OpenSSL和Apache的详细说明:https://www.tunetheweb.com/performance/http2/,但在您的特定平台上可能会有更好的选择。

+0

我不认为我理解得很好。所以当我尝试安装Apache时,我应该使用你在上面的答案中陈述的内容。 –

+0

我扩大了我的答案。 –

+0

我不想使用不同的OpenSSL版本。我只想集成一个[OpenSSL引擎](https://www.openssl.org/docs/manmaster/crypto/engine.html),以便使用不同的RSA算法实现。 –