Please, see the EDIT sections in my own answer; they contain an explanation to this conundrum.
I'm trying to disable RC4 for an Apache 2.2.9 server running on a CentOS 6.5 VPS and I can't seem to succeed.
A recently purchased business-validated certificate is installed and SSL connections are running fine but I wanted to configure things as well as possible, to "harden the security" as some tutorials put it.
Checking the configuration with Qualys SSL Labs, the results page shows "This server accepts the RC4 cipher, which is weak. Grade capped to B."
However, I have put this in ssl.conf:
SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3
I have saved the script given in the answer to this question in a file named test-ssl-ciphers.sh and changed the IP address to a loopback address. This is the result of ./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)
Each of these lines contains "NO", which, according to the script, means that the server does not support the specified cipher combination.
Moreover, the command grep -i -r "RC4" /etc/httpd gives me only the above-mentioned ssl.conf file.
Also, running openssl ciphers -V on my cipher suite shows no RC4 ciphers at all, which makes sense given the configuration string.
I am therefore somehow lost as to why the SSL check websites are telling me that "the server accepts RC4". They even list the following ciphers as being accepted:
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
Does anyone have a possible explanation? What am I doing something wrong? Maybe there's another place where that support of RC4 or "acceptance" be configured?
Thanks.
[EDIT] Using a CentOS 6.6 in a virtual machine at home, I ran the script again against my VPS using its domain name instead of the loopback address. This setup implies that the list of ciphers is provided by the openssl instance in the VM: I still don't have RC4 among the ciphers that yield YES.