RHEL6/CentOS/SL6의 Apache에서 TLSv1.2 지원을 얻는 방법은 무엇입니까?

RHEL6/CentOS/SL6의 Apache에서 TLSv1.2 지원을 얻는 방법은 무엇입니까?

내 Scientific Linux 6(RHEL6 재구축) 서버에서 Apache가 TLSv1.2를 지원하길 원합니다.

작동하도록 하는 일부 지원되는 방법이 있습니까? 최소한의 사용자 정의 재구축이 가장 좋습니다. 이제 SL6 저장소에 제공된 대로 open_ssl과 함께 mod_ssl을 사용하고 있습니다.

편집하다:TLSv1.2 지원이 가능해지면 Apache 구성이 잘 문서화되어 그다지 어렵지 않을 것입니다. 문제는 RHEL6이 TLS 버전 1.0 또는 1.1만 지원하는 OpenSSL 1.0.0과 함께 제공된다는 것입니다.

답변1

TLSv1.2 및 ECC 지원을 추가하기 위해 번들 1.0.0 버전을 교체하여 RHEL6 및 그 변형을 지원하기 위해 Fedora Core에서 OpenSSL 1.0.1 RPM을 백포트하는 방법에 대한 빠른 가이드를 작성했습니다. 2013년 9월 CentOS 6.4에 대해 구축 및 테스트되었습니다.

CentOS 6용 OpenSSL 1.0.1 RPM 가이드

참고: 여기에는 OpenSSL 및 OpenSSH의 최신 복사본이 보관되어 있습니다. CentOS 6.5의 개선 사항은 TLS1.2의 필요성을 크게 완화하고 2013년에도 영원히 해답으로 남을 Heartbleed와 같은 결함을 해결합니다. 다음 단계를 그대로 따르지 마십시오. 1.0.1g 이상을 실행해야 합니다.

이제 github에서:github/ptudor/centos6-openssl

이 가이드에서 참조할 패치를 제공했습니다.openssl-spec-patricktudor-latest.diff

먼저 빌드 환경을 준비합니다. (이미 EPEL이 설치되어 있는 경우 가장을 사용하십시오. 여기서는 간단하게 유지하십시오...)

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

다음으로, 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

이제 이전 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

빌드를 실행합니다.

time rpmbuild -ba openssl.spec

모든 일이 잘 진행되기를 바랍니다. 새 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

실제로 작동하는지 확인하세요.

openssl ciphers -v 'TLSv1.2' | head -4

내 웹사이트의 위 링크에 더 자세한 내용이 있지만 이것이 좋은 출발점이 될 것입니다.

감사하고 즐기세요.

20130819: 생가죽 버전이 14에서 15로 증가했습니다.

20130831: fc20 개정이 15에서 18로 증가되었습니다.

20130906: fc20 개정이 18에서 19로 증가되었습니다.

20140408: 1.0.1g 이후의 모든 항목은 내 사이트에 액세스할 수 있습니다.

답변2

TLSv1.2의 설정을 설명하는 ServerFault에서 이 링크를 찾았습니다. 질문과 답변 질문은 다음과 같습니다.Apache의 SSL/TLS 1.2 및 openssl 1.0.1.

다음 링크는 TLSv1.2 정보를 다룹니다.

httpd.confhttpd v2.2 이상 및 openssl 1.0.1c 이상이 있다고 가정하면 TLSv1.2 활성화 항목에 다음을 포함해야 합니다.

SSLProtocol all -SSLv2

여전히 CipherSuite를 설정해야 합니다. 이것이 혼란스러워지는 곳입니다. 위의 문서에 따르면 유일한강제 암호 제품군TLS 1.2의 경우 다음과 같습니다 TLS_RSA_WITH_AES_128_CBC_SHA.

Appendix C. Cipher Suite Definitions
Cipher Suite                            Key        Cipher         Mac
                                        Exchange
TLS_RSA_WITH_AES_128_CBC_SHA            RSA          AES_128_CBC  SHA

즉, 서버는 키 교환을 위해 RSA 인증서를 제공해야 하며 비밀번호는 AES_128_CBC 및 Mac SHA여야 합니다.

httpd mod_ssl 문서에서 이는 다음과 같이 번역됩니다.

SSLCipherSuite aRSA:kRSA:AES128-CBC:SHA  

당신은 읽을 수 있습니다httpd의 SSLCipherSuites, 여기.

과거에는 다음과 같은 제목의 블로그 게시물에 이것을 사용했습니다.Apache에서 SSLv2 잠금TLSv1.1에 대해 이 작업을 수행합니다. 이 페이지의 모든 내용은 여전히 ​​관련성이 있어야 하며 CipherSuites + 버전을 변경하기만 하면 됩니다 openssl.

답변3

나는 최근 친구를 위해 POODLE의 맥락에서 동일한 문제를 조사하고 있었습니다.

epel에서 2013년 10월 최신(AORN) httpd24 버전을 사용하는 경우 기본적으로 TLSv1.0 및 TLSv1.1을 받게 됩니다. 그러나 Apache에서 SSLProtocol을 다른 합리적인 값으로 설정하면 httpd24가 분명히 openssl 헤더용으로 구축되었기 때문에 이러한 프로토콜이 손실됩니다.

실제로 이는 SSlv2 또는 SSlv3을 명시적으로 비활성화하려고 하면 TLSv11 및 TLSv12가 암시적으로 비활성화된다는 것을 의미합니다.

이는 mod_ssl이 알고 있는 프로토콜이 정확히 1개에 도달할 때 발생하는 불행한 문제입니다.

RedHat "Software Collection"의 httpd24는 최근 빌드이며 이 문제가 발생하지 않습니다. 아마도 openssl의 이후 버전에 대해 빌드되었을 수 있습니다(또는 간단한 사용자 정의 패치가 있음).

관련 정보