Apache 서버의 SSL 암호 제품군에서 RC4 비활성화


17

제 답변에서 편집 섹션을 참조하십시오. 그들은이 수수께끼에 대한 설명을 담고있다 .

CentOS 6.5 VPS에서 실행되는 Apache 2.2.9 서버에 대해 RC4를 비활성화하려고하는데 성공할 수 없습니다.

최근에 구매 한 비즈니스 유효성 검사 인증서가 설치되고 SSL 연결이 제대로 실행되고 있지만 일부 자습서에서는 "보안을 강화"하기 위해 가능한 한 많이 구성하고 싶었습니다.

Qualys SSL Labs를 사용하여 구성을 확인하면 결과 페이지에 "이 서버는 RC4 암호를 허용합니다 (약한 등급입니다. 등급이 B로 제한됨").

그러나 이것을 ssl.conf에 넣었습니다.

 SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3

이 질문 에 대한 답변으로 제공된 스크립트를 test-ssl-ciphers.sh 파일에 저장하고 IP 주소를 루프백 주소로 변경했습니다. 결과는 ./test-ssl-ciphers.sh | grep -i "RC4"다음 과 같습니다.

Testing ECDHE-RSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ECDHE-ECDSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing AECDH-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ADH-RC4-MD5...NO (sslv3 alert handshake failure)
Testing ECDH-RSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ECDH-ECDSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing RC4-SHA...NO (sslv3 alert handshake failure)
Testing RC4-MD5...NO (sslv3 alert handshake failure)
Testing RC4-MD5...NO (sslv3 alert handshake failure)
Testing PSK-RC4-SHA...NO (no ciphers available)
Testing KRB5-RC4-SHA...NO (no ciphers available)
Testing KRB5-RC4-MD5...NO (no ciphers available)
Testing EXP-ADH-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-KRB5-RC4-SHA...NO (no ciphers available)
Testing EXP-KRB5-RC4-MD5...NO (no ciphers available)

이러한 각 줄에는 "NO"가 포함되는데, 이는 스크립트에 따라 서버가 지정된 암호 조합을 지원하지 않음을 의미합니다.

또한이 명령 grep -i -r "RC4" /etc/httpd은 위에서 언급 한 ssl.conf 파일 만 제공합니다.

또한 openssl ciphers -V내 암호 제품군 에서 실행 하면 RC4 암호가 전혀 표시되지 않으므로 구성 문자열이 적합합니다.

따라서 SSL 확인 웹 사이트에서 "서버가 RC4를 허용"한다고 알려주는 이유에 대해 어떻게 든 잃어 버렸습니다. 그들은 심지어 다음과 같은 암호를 받아 들인 것으로 나열합니다.

TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA

누구든지 가능한 설명이 있습니까? 내가 뭘 잘못하고 있니? RC4 또는 "수락"지원을 구성 할 수있는 다른 곳이 있습니까?

감사.

[ 편집 ] 집의 가상 머신에서 CentOS 6.6을 사용하면 루프백 주소 대신 도메인 이름을 사용하여 VPS에 대해 스크립트를 다시 실행했습니다. 이 설정은 암호 목록이 VM의 openssl 인스턴스에 의해 제공됨을 의미합니다. 그래도 YES를 생성하는 암호 중 RC4가 없습니다.

답변:


16

갱신 된 인증서를 설치하는 동안 ISPConfig에서 (도메인 및 각 하위 도메인에 대해) HTTPS에 필요한 전체 데이터 세트 (인증서, 개인 키, CA 체인 등)를 지정하여 문제점이 발생했음을 발견했습니다.

다르게 말하면, Qualys 테스트로 이어진 데이터 세트를 제거하여 도메인 A를 등급 지정하고 동시에 RC4에 대한 경고를 제거하십시오. 세부 정보를 다시 넣으면 경고가 다시 발생하고 등급이 다시 B로 제한되어 인과 ​​관계에 대한 의심의 여지가 없습니다.

마치 각 호스트에 대한 세부 정보를 제공하는 것이 어떻게 든 ssl.conf에서 지정한 암호 제품군을 일부 기본값으로 재정의하는 새로운 환경을 만든 것처럼 보입니다. 기묘한.

해결책은 각 vhost 에 대한 Apache 지시문 텍스트 영역에 SSLCipherSuite 스펙을 추가하는 것 입니다. 이것은 내가 A 등급을 얻는 구성에있는 것입니다.

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
# Compression is disabled by default on my distribution (CentOS 6)
# SSLCompression off 
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

편집 (2017-05-16) :이 문제에 대한 추가 발견 : 지정 SSLCipherSuite은 필수입니다. 서버 수준에서 지정되었지만 해당 특정 지시문이 가상 호스트 구성에 자동으로 적용되지 않는 이유를 이해할 수 없습니다 . CentOS 6.9에서 Apache 2.2.15를 실행하고 있습니다.

편집 (2018-06-18) : 자세한 내용. 방금 SSLCipherSuite지시문을 한 번만 지정할 수 있으며 모든 가상 호스트에 적용됨을 발견했습니다. 기본 mod_ssl 구성 파일 (CentOS 6의 경우 파일은에 있음)에서 /etc/httpd/conf.d/ssl.conf지시문을 외부 에 지정해야합니다. 기본 가상 호스트 Apache 2.2 문서에이 지시문의 기본값은 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP입니다. RC4 암호의 출처는 다음과 같습니다. 스펙이없는 경우 "글로벌"컨텍스트에 스펙이 없으므로 기본값이 적용됩니다. 이 이해는 나를 위해 미스터리였던 것을 끝냅니다. 아이러니하게도,이 설명을 발견하면 CentOS 7로 전환하려고합니다! HTH.


6
SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3
                                                                    ^^^^^^^

나쁜 생각. 모든 SSLv3 암호를 비활성화하면 TLS1.0 및 TLS1.1에서 사용할 수있는 암호가 비활성화되고 TLS1.2에서 새로 도입 된 몇 개의 암호 만 남습니다 (서버가 TLS1.2를 지원하는 경우)

따라서 SSL 확인 웹 사이트에서 "서버가 RC4를 허용"한다고 알려주는 이유에 대해 어떻게 든 잃어 버렸습니다. 그들은 심지어 다음과 같은 암호를 받아 들인 것으로 나열합니다.

로컬 테스트와 외부 테스트가 모두 동일한 서버 (IP 주소)에 액세스하는지 확인하십시오. example.com다른 호스트 www.example.com와 다른 사이트가 많으 므로 테스트가 다릅니다.


예. 루트 도메인과 해당 하위 도메인은 동일한 VPS에 있습니다. VPS와 관련된 하나의 IP 주소가 있으며 ISPConfig를 사용하여 관리합니다. 감사.
AbVog

SSLLabs를 사용하십시오 . 그들이 보여주는 IP와 시스템의 IP를 비교하십시오. 결과에 영향을 줄 수있는 다른 (역) 프록시 나 CDN이 없는지 확인하십시오.
Steffen Ullrich

"모든 SSLv3 암호를 비활성화하면 TLS1.0 및 TLS1.1에서 사용할 수있는 암호가 비활성화되고 TLS1.2에서 새로 도입 된 암호가 몇 개만 남습니다 (서버가 TLS1.2를 지원하는 경우). 그렇다면 적절한 해결책은 무엇입니까?
Rohn Adams

@RohnAdams : 목표가 '! RC4'부분보다 RC4를 비활성화하는 것이 좋습니다. 문제는 추가로 '! SSLv3'을 사용하여 오버 블로킹하는 것입니다. 유용한 암호는 Mozilla Cipher Generator를 참조하십시오 .
Steffen Ullrich

2

Qualys SSL 실험실은 기본 호스트 등에 매우 민감 해 보입니다. 해당 IP 주소의 모든 HTTPS VirtualHost가 인증서 파일을 제외하고 정확히 동일한 설정을 사용하는지 확인하십시오. 일부 Qualys 테스트가 대상 VirtualHost 및 일부 테스트는 기본 VirtualHost를 선택하는 것으로 보였습니다. 타겟 호스트는 단일 암호 만 활성화했지만 Qualys는 기본 호스트에서 훨씬 더 큰 목록을 찾았습니다.

나는 또한 더 나은 보이는 스크립트 발견 여기 SSL 테스트에 대한보다 철저한 정보를 제공합니다.


2

내 사이트 중 하나를 위해이 문제를 찾고있었습니다. @AbVog의 답변을 바탕으로 내 지시문이 실제로 기본 가상 호스트에만 있음을 발견했습니다. 지시문을 전역 컨텍스트로 옮길 때 모든 것이 좋았습니다.

제쳐두고, 나는 또한 https://cipherli.st/보았습니다. 여기에는 다양한 패키지에 대한 SSL 구성 목록이 있습니다. 아파치에 대한 현재 권장 사항은 다음과 같습니다.

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

# Requires Apache >= 2.4
SSLCompression off 
SSLSessionTickets Off
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 

0

Apache / 2.4.25가 포함 된 Fedora 25에서 암호는 암호화 정책에 의해 처리됩니다 (/ etc / cryptopolicies / backends 참조). 기본 설정은 RC4가 완전히 비활성화되어 있으므로 Apache 설정에서 암호를 변경하지 않아도됩니다. 최신 ssl.conf를 기본적으로 설치하지 않고 conf.d 디렉토리에 ssl.conf.rpmnew로 남겨 두는 것을 제외하고는 제외합니다.

SSL을 구성하기 위해 인증서, ServerName 및 DocumentRoot를 지정해야했습니다. 다람쥐 메일입니다.

SSLCertificateFile /etc/letsencrypt/live/mail.xxxx.dk/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.xxxx.dk/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/mail.xxxx.dk/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/mail.xxxx.dk/fullchain.pem
ServerName mail.xxxx.dk:443
DocumentRoot "/usr/share/squirrelmail"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.