如何在 RHEL6/CentOS/SL6 上的 Apache 中获得 TLSv1.2 支持?

Mic*_*and 7 rhel openssl scientific-linux apache-httpd

我想在我的 Scientific Linux 6(RHEL6 重建)服务器上的 Apache 中获得 TLSv1.2 支持。

是否有一些半支持的途径来让这个工作?最好使用最少的自定义重建。现在我正在使用 mod_ssl 和 open_ssl,如 SL6 存储库中提供的那样。

编辑:一旦 TLSv1.2 支持可用,Apache 配置就会有据可查,并且不会太难。问题是 RHEL6 附带 OpenSSL 1.0.0,它只支持 TLS 到 1.0 或 1.1。

小智 10

我编写了一份快速指南,介绍了从 Fedora Core 向后移植 OpenSSL 1.0.1 RPM 以通过替换捆绑的 1.0.0 版本来支持 RHEL6 和变体以添加 TLSv1.2 和 ECC 支持。2013 年 9 月针对 CentOS 6.4 构建和测试:

CentOS 6 的 OpenSSL 1.0.1 RPM 指南

请注意:这是我将自己的 OpenSSL 和 OpenSSH 副本保持最新的地方。CentOS 6.5 的改进在很大程度上减轻了对 TLS1.2 的需求,Heartbleed 等缺陷在那里得到解决,而这个答案将永远停留在 2013 年。不要逐字执行以下步骤,您必须运行 1.0.1g 或更新版本.

现在有了 github:github/ptudor/centos6-openssl

我已经提供了一个补丁,我将在本指南中引用:openssl-spec-patricktudor-latest.diff

首先,准备您的构建环境。(如果你已经安装了 EPEL,请使用 mock。在这里保持简单......)

yum -y groupinstall "Development tools" 
yum -y install rpm-build zlib-devel krb5-devel
mkdir -p $HOME/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir $HOME/redhat/" > ~/.rpmmacros
Run Code Online (Sandbox Code Playgroud)

接下来,获取用于 OpenSSL 的 Fedora Core 20 SRPM 和完整的 OpenSSL 源代码。

rpm -Uvh http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/o/openssl-1.0.1e-42.fc21.src.rpm
cd ~/redhat/SOURCES/
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.sha1
openssl dgst -sha1 openssl-1.0.1g.tar.gz ; cat openssl-1.0.1g.tar.gz.sha1
Run Code Online (Sandbox Code Playgroud)

现在应用旧的 secure_getenv 语法并应用补丁:

cd ~/redhat/SOURCES/
sed -i -e "s/secure_getenv/__secure_getenv/g" openssl-1.0.1e-env-zlib.patch
cd ~/redhat/SPECS/
wget http://www.ptudor.net/linux/openssl/resources/openssl-spec-patricktudor-fc20-19.diff
patch -p1 < openssl-spec-patricktudor-latest.diff
Run Code Online (Sandbox Code Playgroud)

运行构建:

time rpmbuild -ba openssl.spec
Run Code Online (Sandbox Code Playgroud)

希望一切顺利,所以让我们安装新的 RPM:

cd ~/redhat/RPMS/x86_64/
sudo rpm -Fvh openssl-1.0.1g-*.rpm openssl-libs-1.0.1g-*.rpm openssl-devel-1.0.1g-*.rpm
Run Code Online (Sandbox Code Playgroud)

确保它确实有效:

openssl ciphers -v 'TLSv1.2' | head -4
Run Code Online (Sandbox Code Playgroud)

我网站上的链接有更多详细信息,但这应该是一个很好的起点。

谢谢,享受。

20130819:生皮修订版从 14 增加到 15。

20130831:fc20 修订版从 15 增加到 18。

20130906:fc20 修订版从 18 增加到 19。

20140408:1.0.1g 之后的任何内容都可以访问我的网站。