Apache的SSL:“过时的密钥交换(RSA)”

问题描述:

我有一个网站https://warsoftheheroes.eu/它使用Apache与咱们加密certyficate SSL主持。在开发工具的Chrome/Chromium浏览器 - >安全我看到这条消息:Apache的SSL:“过时的密钥交换(RSA)”

Obsolete Connection Settings 

The connection to this site uses a strong protocol (TLS 1.2), an obsolete key exchange (RSA), and a strong cipher (AES_128_GCM). 

,这里是我的Apache SSL配置:

<IfDefine SSL> 
<IfDefine SSL_DEFAULT_VHOST> 
<IfModule ssl_module> 
Listen 443 

<VirtualHost _default_:443> 
    ServerName localhost 
    Include /etc/apache2/vhosts.d/default_vhost.include 
    ErrorLog /var/log/apache2/ssl_error_log 
    <IfModule log_config_module> 
      TransferLog /var/log/apache2/ssl_access_log 
    </IfModule> 
    SSLEngine on 
    SSLProtocol ALL -SSLv2 -SSLv3 
    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!RC4:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK 
    SSLHonorCipherOrder On 
    SSLCertificateFile /home/wof/ssl/fullchain1.pem 
    SSLCertificateKeyFile /home/wof/ssl/privkey1.pem 
    <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
      SSLOptions +StdEnvVars 
    </FilesMatch> 
    <Directory "/var/www/localhost/cgi-bin"> 
      SSLOptions +StdEnvVars 
    </Directory> 
    <IfModule setenvif_module> 
      BrowserMatch ".*MSIE.*" \ 
        nokeepalive ssl-unclean-shutdown \ 
        downgrade-1.0 force-response-1.0 
    </IfModule> 
    <IfModule log_config_module> 
      CustomLog /var/log/apache2/ssl_request_log \ 
        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 
    </IfModule> 
</VirtualHost> 
</IfModule> 
</IfDefine> 
</IfDefine> 

# vim: ts=4 filetype=apache 

我应该在这个配置文件更改为摆脱这个过时的密钥交换?

+0

您的服务器似乎没有选择基于ECDHE的密码套件。你使用的是什么版本的Apache和openssl? –

+1

Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://*.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参见[我在哪里张贴关于开发行动的问题?(http://meta.stackexchange.com/q/134306) – jww

+1

当我通过谷歌寻找一些地方要问我的问题(阿帕奇,stackexchange)大部分的结果指向了*。我很惊讶,但我追求多数。 –

根据SSLLabs test您的站点不支持任何ECDHE密码,即使看起来您已在服务器配置中配置了这些密码。由于TLS 1.2支持(你有)和ECDHE支持(你没有)在OpenSSL 1.0.1中都被添加了,我猜测你有一个OpenSSL版本,它不支持ECC(因此也支持ECDHE) 。

据我所知旧版本的RHEL(从而CentOS的太)和Fedora得到了附带ECC支持专利的原因除去,从而你可能会检查是否正在使用受影响的系统之一。 openssl ciphers -V的输出为您提供支持的密码,您应该检查ECDHE是否受支持。

+0

问题是OpenSSL的出现/与bindist USE标志(Gentoo的)编译。谢谢你指出我朝着正确的方向。 –

对不起,我错更早。混合了一些东西。

这是怎么看都支持一台服务器上,并在它们是优选的什么顺序什么密码:

nmap --script ssl-enum-ciphers -p 443 warsoftheheroes.eu 

Starting Nmap 7.40 (https://nmap.org) at 2017-05-10 17:23 CEST 
Nmap scan report for warsoftheheroes.eu (81.163.204.80) 
Host is up (0.051s latency). 
rDNS record for 81.163.204.80: pppoe-static-a-80.interblock.pl 
PORT STATE SERVICE 
443/tcp open https 
| ssl-enum-ciphers: 
| TLSv1.0: 
|  ciphers: 
|  TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A 
|  compressors: 
|  NULL 
|  cipher preference: server 
| TLSv1.1: 
|  ciphers: 
|  TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A 
|  compressors: 
|  NULL 
|  cipher preference: server 
| TLSv1.2: 
|  ciphers: 
|  TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A 
|  TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A 
|  TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A 
|  TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A 
|  TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A 
|  TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A 
|  TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A 
|  TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A 
|  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A 
|  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A 
|  compressors: 
|  NULL 
|  cipher preference: server 
|_ least strength: A 

正如你所看到的,对于TLSv1.2工作的第三个选项是TLS_RSA_WITH_AES_128_GCM_SHA256这是“部分AES128',这是您在配置中启用的。

斯特芬·乌尔里希可能是正确的关于失踪ECDHE支持,这可能是为什么与RSA密钥交换的密码是在第三的位置。我认为如果支持ECDHE密码将是首选。

+1

*“所以在你的情况下,RSA是首选的密钥交换方法。”* - 这是错误的。像ECDHE-RSA-AES128-GCM-SHA256这样的第一个条目使用RSA进行认证,但使用ECDHE进行密钥交换。参见'openssl ciphers -V',它显示了认证(Au = ...)和密钥交换(Kx = ...)。 –

+0

是的,我删除了所有RSA条目从的SSLCipherSuite并没有什么改变,消息仍然存在 –