- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
警告:请仅使用以下答案中的 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>
我必须做什么才能支持完全前向保密?如何默认启用 SSL 完美前向保密?我怎么能强制执行它?
最佳答案
怎么样:
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
请注意添加 -SSLv3 标志以禁用 SSLv3。添加此内容是为了防止 POODLE attack .
这将更喜欢完美的前向保密,但不会以易受 BEAST 攻击为代价。由于 Apache 缺少基于协议(protocol)版本配置密码首选项的方法,因此我通过引用仅在较新协议(protocol)中可用的密码来伪造它。具体来说,在 TLSv1.2 之前,AES 仅适用于 SHA1 哈希。因此,该列表以 TLSv1.2 临时 Diffie-Hellman 密码开始,然后是 RC4(首先是临时 DH,然后没有),最后是易受 BEAST 攻击的 AES 选项。最后排除无身份验证/弱加密/弱散列只是为了良好的卫生并且可以省略,因为没有引入这样的密码。如果性能是一个问题,请仅使用 EECDH 并忽略 EDH。
根据 https://www.ssllabs.com/ssltest/analyze.html 结合 Apache 2.2(因此没有 @Bruno 所说的 EECDH) ,这仅实现了 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 是 mostly mitigated client-side now ),而更强调完美的前向保密性。他们在不同程度上也对 GCM 有更强烈的偏好,而更不愿意接受 RC4。
我认为,特别值得注意的是以下建议:
就我个人而言,我会选择 Mozilla OpSec。他们的页面上很好地解释了他们的推理。值得注意的是,他们更喜欢 AES128 而不是 AES256。用他们的话说:“[AES128] 提供了良好的安全性,速度非常快,而且似乎更能抵抗定时攻击。”
Ivan Ristic 和 Geoffroy Gramaize 的建议中值得注意的是禁用 SSLv3。我认为这主要只是破坏了 IE6,尽管 SSLv3 和 TLS v1.0 之间的一些安全相关差异是 mentioned on Wikipedia .
还有之前没说CRIME和 BREACH .为防止犯罪,请禁用 SSL 压缩。这包含在链接的示例中。要防止 BREACH,您需要在 HTTP 级别禁用压缩。对于 Apache 2.4,只需全局执行一次:
<Location />
SetEnvIfExpr "%{HTTPS} == 'on'" no-gzip
</Location>
对于旧版本的 Apache,将其放置在 SSLEngine 打开的每个 VirtualHost 中:
<Location />
SetEnv no-gzip
</Location>
2014-10-14 更新:Mozilla OpSec 指南现在分为旧/中/现代兼容性建议。使用中级或现代的设置,您最终会禁用 SSLv3。这将防止 POODLE 攻击。
关于apache - 如何在 Apache 上默认启用完全前向保密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308690/
我是一名优秀的程序员,十分优秀!