Jan*_*hem 66 apache ssl cryptography
警告:请仅使用以下答案中的Apache配置建议.对于要使用的密码 - 安全规范会随着时间的推移而改变,下面的一些安全建议已经过时了.
在最近发生的事件之后,我一直在重新考虑我的Apache设置.目前,我的apache站点配置看起来像这样:
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName example.com
DocumentRoot /var/www-wordpress
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www-wordpress>
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来支持完美的前瞻性保密?如何默认启用SSL完美前向保密?我怎么能强制执行呢?
Lor*_*rin 93
怎么样:
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5
Run Code Online (Sandbox Code Playgroud)
请注意添加-SSLv3标志以禁用SSLv3.添加此项是为了防止POODLE攻击.
这将更倾向于完美的前向保密,但不以牺牲易受BEAST攻击为代价.由于Apache缺乏基于协议版本配置密码首选项的方法,我通过引用仅在较新协议中可用的密码来伪造它.具体来说,AES只能在TLSv1.2之前使用SHA1散列.因此,列表以TLSv1.2短暂的Diffie-Hellman密码开始,然后是RC4(首先是短暂的DH,然后是没有),最后是BEAST易受攻击的AES选项.排除最后没有auth /弱加密/弱哈希只是为了良好的卫生,可以省略,因为没有引入这样的密码.如果需要考虑性能,请仅使用EECDH并省略EDH.
结合Apache 2.2(因此没有像@Bruno所说的EECDH),根据https://www.ssllabs.com/ssltest/analyze.html,这只能实现iOS Safari的PFS.IE和Firefox是TLSv1.0所以他们得到RC4以避免BEAST.(唉,没有EDH RC4这样的东西,所以没有EECDH,你放弃了PFS).我认为,对于Apache 2.2上的浏览器,这是最好的.Chrome是唯一一个服务不佳的人,因为它支持TLSv1.1并且可以使用EDH AES而不会受到BEAST的攻击.相反,它获得了像Firefox和IE一样的RC4-RSA.升级Apache以启用EECDH RC4应该获得适用于Firefox,IE和Chrome的PFS.
更新2013-11-09:
我在网上发现了一些备用建议.他们不太重视BEAST保护(也许是明智的;现在BEAST 主要是缓解客户端),更强调完美的前向保密.他们在不同程度上对GCM有更强的偏好,更不愿意接受RC4.
我认为特别值得注意的是以下建议:
就个人而言,我将选择Mozilla OpSec.他们的推理在他们的页面上有很好的解释.值得注意的是,他们更喜欢AES128而不是AES256.用他们的话说:" [AES128]提供了良好的安全性,非常快,而且似乎更能抵抗时间攻击. "
值得注意的是Ivan Ristic和Geoffroy Gramaize的建议是SSLv3被禁用.我认为这主要是打破了IE6,尽管维基百科上提到了 SSLv3和TLS v1.0之间的一些安全相关的差异.
在此之前我还没有谈到CRIME和BREACH.要防止CRIME,请禁用SSL压缩.这包含在链接的示例中.要防止BREACH,您需要在HTTP级别禁用压缩.对于Apache 2.4,只需在全局执行一次:
<Location />
SetEnvIfExpr "%{HTTPS} == 'on'" no-gzip
</Location>
Run Code Online (Sandbox Code Playgroud)
对于旧版本的Apache,将其放在SSLEngine所在的每个VirtualHost中:
<Location />
SetEnv no-gzip
</Location>
Run Code Online (Sandbox Code Playgroud)
更新2014-10-14: Mozilla OpSec指南现在分为旧/中/现代兼容性建议.使用中间或现代设置,最终会禁用SSLv3.这将防止POODLE攻击.
从我自己的理解,你需要激活SSLHonorCipherOrder
,并在前面加上SSLCipherSuite
与ECDHE
和DHE
从密码openssl ciphers -v
从我的/etc/apache2/mods-available/ssl.conf
:
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES128-SHA:RC4-SHA:HIGH:!aNULL:!MD5:!ADH
Run Code Online (Sandbox Code Playgroud)
要测试您的网站,您可以使用:https://www.ssllabs.com/ssltest
注意:Eliptic Curve DHE似乎只适用于Apache 2.3.3或更高版本(参见source和Bruno的评论).
归档时间: |
|
查看次数: |
67133 次 |
最近记录: |