아파치에서 TLS 1.0과 1.1을 어떻게 비활성화 할 수 있습니까?


31

아무도 내가 tls 1.0 및 tls1.1을 비활성화 할 수없는 이유를 알고 있습니까?

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

이 작업을 수행 한 후 아파치를 다시로드하고 ssllabs 또는 comodo ssl 도구를 사용하여 SSL 스캔을 수행하며 여전히 tls 1.1 및 1.0이 지원된다고 말합니다. 이것들을 제거하고 싶습니까?

답변:


45

여러 개의 TLS VirtualHost가 있고 SNI (Server Name Indication)를 사용하는 SSLProtocol 경우 각 VirtualHost에 대한 지시문 을 갖는 것은 허용되는 구문 이지만 실제로 IP VirtualHosts가없는 경우 SSLProtocol지시문 의 첫 번째 발생 설정 은 전체 서버에 사용됩니다. 및 / 또는 TLS를 지원하는 모든 이름 기반 VirtualHosts 1 .

따라서 지시문의 더 많은 발생에 대해서는 기본 httpd.conf(및 포함 된 모든 스 니펫 conf.d/*.conf및 유사한 포함)을 확인하십시오 SSLProtocol.

속 기법 을 확장 할 때 약간 개선 할 수 있다는 ezra-s의 대답에 동의하지만 구문은 정확 all합니다.

 SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

단순히 다음을 사용하여

 SSLProtocol TLSv1.2

이 모든 것이 의미가 있지만 나는 당신이 권장하는 것을했습니다. "SSLProtocol"의 모든 참조에 대해 / etc / httpd 디렉토리를 grep했습니다. 그런 다음 SSLProtocol TLSv1.2로 업데이트 한 다음 다시 시작했지만 여전히 tls 1.0 및 1.1이 지원됨을 보여줍니다. 또한 다른 서버 중 하나에서 동일한 문제를 시도했습니다. 어떤 아이디어?
David

1
거짓 경보, 이것은 실제로 코모도 및 ssllabs 보고서에 의해 캐시되었습니다. 지금 올바르게보고하는 것 같습니다. 고맙습니다.
David

3
원하지 않는 프로토콜에 대해 마이너스로 "all"을 사용하는 것이 좋습니다. 아파치의 미래 버전은 새로운 표준이 개발되고 오래된 표준이 안전하지 않은 것으로 판명 될 때 "모두"를 다르게 정의합니다.
bobpaul

Letsencrypt를 사용하는 경우 확인하는 것을 잊지 마십시오/etc/letsencrypt/options-ssl-apache.conf
Memes

9

지정한 것으로 충분하면 다른 프로토콜을 표시해서는 안됩니다. SSLLABS는 최근 테스트를 캐시합니다. 당신이했던 것처럼 그것을 정의하는 다른 프로토콜이 없다는 것을 아는 것은 의도적으로 복잡합니다.

어쨌든 당신은 그것을 사용하거나 간단하게 사용할 수 있습니다 :

SSLProtocol TLSv1.2

지정하면 차이가 -ALL +TLSv1.2있습니까?
Chazy Chaz

"모두"가 "+ SSLv3 + TLSv1 + TLSv1.1 + TLSv1.2"로 확장됩니다. "-All"을 사용하면 이점이 없습니다. 실제로 문서에서 "-all"이 유효한 구문인지는 확실하지 않습니다. [+/-] 프로토콜을 수행 할 수 있지만 모두 프로토콜은 아닙니다. httpd.apache.org/docs/2.4/mod/mod_ssl.html
bobpaul

6

이 문제로 고심하고 SSLProtocol있었으므로 지시문으로 구성을 수정 하지 못했습니다. 가상 호스트 구성에 다음을 추가했습니다.

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

완벽하게 작동했습니다. SSLOpenSSLConfCmd지시문 에 대한 자세한 내용은 여기를 참조하십시오 .


4

Apache에서 TLS1.0 버전을 비활성화하십시오.

여러 개의 가상 호스팅이있는 경우 모든 구성 파일을 업데이트해야합니다. 그렇지 않으면 ssl.conf이면 충분합니다.

TSL 지원 버전을 확인하려면 다음을 수행하십시오.

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.0:
|   TLSv1.1:
|   TLSv1.2:

Apache 구성 파일을 수정하여 vi /etc/httpd/conf.d/web.conf모든 TLS를 제거하고 TLS1.2 만 허용하십시오.

SSLProtocol TLSv1.2

수정 후 확인하십시오.

# grep SSLProtocol /etc/httpd/conf.d/web.conf
SSLProtocol TLSv1.2

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.2:
# service httpd restart

-1

변경 사항을 반영하려면 다음 명령을 사용하여 Apache 서비스를 다시 시작해야합니다.

sudo service apache2 restart

아래 코드가 제대로 작동하면이 기사를 확인하여 자세한 내용을 확인할 수 있습니다.

<VirtualHost *:443>
ServerName www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol +TLSv1.2
SSLCertificateFile /etc/apache2/certificates/certificate.crt
SSLCertificateKeyFile /etc/apache2/certificates/certificate.key 
SSLCertificateChainFile /etc/apache2/certificates/intermediate.crt
</VirtualHost>

이것은 아무것도 비활성화하지 않습니다. TLSv1.2 만 활성화합니다. 다시 시작하는 방법은 배포마다, 심지어 같은 배포판의 버전마다 다릅니다.
제랄드 슈나이더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.