답변:
여러 개의 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
/etc/letsencrypt/options-ssl-apache.conf
지정한 것으로 충분하면 다른 프로토콜을 표시해서는 안됩니다. SSLLABS는 최근 테스트를 캐시합니다. 당신이했던 것처럼 그것을 정의하는 다른 프로토콜이 없다는 것을 아는 것은 의도적으로 복잡합니다.
어쨌든 당신은 그것을 사용하거나 간단하게 사용할 수 있습니다 :
SSLProtocol TLSv1.2
-ALL +TLSv1.2
있습니까?
이 문제로 고심하고 SSLProtocol
있었으므로 지시문으로 구성을 수정 하지 못했습니다. 가상 호스트 구성에 다음을 추가했습니다.
SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"
완벽하게 작동했습니다. SSLOpenSSLConfCmd
지시문 에 대한 자세한 내용은 여기를 참조하십시오 .
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
변경 사항을 반영하려면 다음 명령을 사용하여 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>