我刚修了两门关于计算机安全和互联网编程的大学课程。前几天我在想这个:
网络缓存代理服务器缓存来自网络服务器的流行内容。这很有用,例如,如果您的公司内部有 1 Gbps 网络连接(包括 Web 缓存代理服务器),但只有 100 Mbps 的 Internet 连接。Web 缓存代理服务器可以更快地为本地网络上的其他计算机提供缓存内容。
现在考虑 TLS 加密连接。可以以任何有用的方式缓存加密的内容吗?来自letsencrypt.org 的一项伟大举措旨在默认通过 SSL 加密所有互联网流量。他们通过让为您的网站获取 SSL 证书变得非常简单、自动化和免费(从 2015 年夏季开始)来实现这一目标。考虑到 SSL 证书的当前年度成本,免费真的很有吸引力。
我的问题是:HTTPS 流量最终会使 Web 缓存代理服务器过时吗?如果是这样,这将对全球互联网流量的负载造成什么影响?
我的目标是确保客户端连接到我的 nginx 的适当安全性。我正在按照Mozilla 的指南在我的 nginx 安装上正确配置 TLS,但我没有对实践中使用的实际协议/密码套件的概述。
我现在所拥有的:
server {
listen 443;
ssl on;
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_dhparam /path/to/dhparam.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'the_long_ciphersuite_listed_there';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我想记录用于连接的 SSL 协议以及在客户端/服务器协商后选择的密码套件。例如:
10.1.2.3 - - [13/Aug/2014:12:34:56 +0200] "GET / HTTP/1.1" 200 1234 "-" "User agent bla"
Run Code Online (Sandbox Code Playgroud)
到
10.1.2.3 - - [13/Aug/2014:12:34:56 +0200] ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 "GET / HTTP/1.1" 200 1234 "-" "User agent bla"
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以快速识别使用不支持 PFS 或其他相关安全启用技术的过时浏览器或自动化机器的客户端。
如何配置 nginx 以记录此信息?
我有一个奇怪的问题。将我的 LAMP 开发机器 (Debian) 更新为 PHP 7。之后我无法再通过 Curl 连接到特定的 TLS 加密 API。
有问题的 SSL 证书由 thawte 签名。
curl https://example.com
Run Code Online (Sandbox Code Playgroud)
给我
curl: (60) SSL certificate problem: unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)
然而
curl https://thawte.com
Run Code Online (Sandbox Code Playgroud)
当然,这也是 Thawte 作品的签名。
我可以在其他机器上通过 HTTPS 访问 API 站点,例如我的桌面通过 curl 和浏览器。所以证书绝对有效。SSL 实验室评级为 A。
从我的开发机器到其他 SSL 加密站点的任何其他 Curl 请求都有效。我的根证书是最新的。为了验证,我跑了update-ca-certificates。我什至将http://curl.haxx.se/ca/cacert.pem下载到 /etc/ssl/certs 并运行c_rehash.
还是一样的错误。
有什么方法可以调试验证过程并查看哪个本地颁发者证书 curl(或 openssl)正在寻找但未找到,即文件名?
更新
curl -vs https://example.com
Run Code Online (Sandbox Code Playgroud)
告诉我(IP+域名匿名)
* Hostname was NOT found in DNS cache
* Trying 192.0.2.1...
* …Run Code Online (Sandbox Code Playgroud) 我已经看到 Comodo 有一个椭圆曲线根(“COMODO ECC 证书颁发机构”),但我在他们的网站上没有看到提到 EC 证书。
Certicom 是否拥有阻止其他发行人提供 EC 证书的知识产权?广泛使用的浏览器是否不支持ECC?ECC 是否不适合像 Web 服务器身份验证这样的传统 PKI 使用?或者只是没有需求?
由于 NSA Suite B 的建议,我有兴趣切换到椭圆曲线。但对于许多应用程序来说似乎并不实用。
要领取奖金,答案必须提供一个链接,指向知名 CA 网站上的一个或多个页面,其中描述了他们提供的 ECC 证书选项、价格以及购买方式。在这种情况下,“众所周知”意味着在 Firefox 3.5 和 IE 8 中必须默认包含正确的根证书。如果提供了多个符合条件的答案(一个人可以希望!),一个来自无处不在的 CA 的最便宜的证书将赢得赏金。如果这不能消除任何联系(仍然希望!),我将不得不自行选择一个答案。
请记住,有人总是要求至少获得一半的赏金,因此即使您没有全部答案,也请试一试。
如今,OpenLDAP的需要与的ldapmodify CN =配置来配置,如描述在这里。但是我找不到您如何将其配置为仅接受 TLS 流量的方法。我刚刚确认我们的服务器接受未加密的流量(使用 ldapsearch 和 tcpdump)。
通常,我只会关闭带有 IP 表的非 SSL 端口,但显然不推荐使用 SSL 端口,所以我没有那个选项。
因此,使用 SSL 配置命令,如下所示:
dn: cn=config
changetype:modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/bla.key
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/bla.crt
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/ca.pem
Run Code Online (Sandbox Code Playgroud)
是否有强制 TLS 的参数?
编辑:我尝试了 olcTLSCipherSuite,但它不起作用。调试输出:
TLS: could not set cipher list TLSv1+RSA:!NULL.
main: TLS init def ctx failed: -1
slapd destroy: freeing system resources.
slapd stopped.
connections_destroy: nothing to destroy.
Run Code Online (Sandbox Code Playgroud)
Edit2(几乎固定):我能够通过加载来修复它:
# cat force-ssl.tx
dn: cn=config
changetype: modify
add: olcSecurity
olcSecurity: …Run Code Online (Sandbox Code Playgroud) 通常我根本不使用 Internet Explorer。我只在设计时将它用于接口测试(开发机器和未加密的 http)。每周我都会运行 SSL Labs 服务器测试,它说 IE11 能够访问我的网站。
今天,我发现我的第 3 方服务之一存在问题。某些特殊功能不适用于 Chrome 或 Firefox,因此我在 Windows 7 机器上启动了 IE11。IE11 向我展示了一个内置的错误页面,基本上只说“页面无法显示”。典型的虚拟 bla bla 喜欢检查 DNS 等等。整个错误页面上绝对没有加密相关问题的迹象(就像普通浏览器一样)。
几个月前,这个schannel问题阻止了启用 TLS1.2 的 IE 访问 HTTPS 站点。从那时起,我的“IE 的 WTF 检查表”包含“禁用 TLS1.2”作为检查点。我应该说些什么...在 IE 中禁用 TLS1.2 有效并且我的站点再次可用。但是我不能在我的访问者浏览器上这样做。
现在回到真正的问题:为什么在 IE 中启用了 TLS 1.2 时,为什么 Internet Explorer 11 无法连接到我的 HTTPS 站点?以及如何在服务器端修复它?SSL Labs 告诉我,我的网站上一切正常。
重要编辑:当启用 TLS1.2 时,IE11 似乎只能处理非前缀域,而不能处理带前缀的域。没有前缀 (www) 的域有效,而包含前缀 (www) 的域不起作用。
在服务器端我使用 …
我了解了针对 TLS 压缩的CRIME攻击(CVE-2012-4929,CRIME 是针对 ssl 和 tls 的 BEAST 攻击的继承者),我想通过禁用 SSL 压缩来保护我的网络服务器免受这种攻击,它已添加到 Apache 2.2.22(见错误 53219)。
我正在运行 Scientific Linux 6.3,它与 httpd-2.2.15 一起提供。httpd 2.2 上游版本的安全修复应该向后移植到这个版本。
# rpm -q httpd
httpd-2.2.15-15.sl6.1.x86_64
# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Feb 14 2012 09:47:14
Server's Module Magic Number: 20051115:24
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Run Code Online (Sandbox Code Playgroud)
我在我的配置中尝试关闭 SSLCompression,但这会导致以下错误消息:
# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: …Run Code Online (Sandbox Code Playgroud) TLS 是 SSL 的“新”版本吗?它添加了哪些功能,或者解决了哪些安全问题?
任何支持 SSL 的东西都可以支持 TLS 吗?进行转换会涉及什么?转机值得吗?
为什么通过“Opportunistic TLS”和通常称为 SSL VPN 的 VPN 发送电子邮件?技术上是否存在差异,也许为“TLS VPN”产品线创造了空间?
# LDAPTLS_CACERTDIR=/etc/ssl/certs/ ldapwhoami -x -ZZ -H ldaps://ldap.domain.tld
ldap_start_tls: Can't contact LDAP server (-1)
additional info: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user.
# openssl s_client -connect ldap.domain.tld:636 -CApath /etc/ssl/certs
<... successful tls negotiation stuff ...>
Compression: 1 (zlib compression)
Start Time: 1349994779
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
Run Code Online (Sandbox Code Playgroud)
openssl似乎认为证书没问题,但是openldap的库(pam_ldap表现出类似的行为,这就是我陷入困境的方式)不同意。
我究竟做错了什么?
我有一个运行 Apache 2.2.22 和 mod_ssl 和 OpenSSL v1.0.1 的 Ubuntu 12.04.2 LTS 服务器。
在我的虚拟主机配置(一切在其中表现为我所期望的),我有SSLProtocol跟线-all +SSLv3。
通过这种结构,TLS 1.1和1.2都启用并正确的工作-这是反直觉和我说话,我会认为只有SSLv3的将被启用考虑到的配置。
我可以很好地启用/禁用 TLSv1 -/+TSLv1,并且它按预期工作。但是+/-TLSv1.1并且+/-TLSv1.2不是有效的配置选项 - 所以我不能那样禁用它们。
至于我为什么要这样做 - 我正在处理一个第三方应用程序(我无法控制),它在启用 TLS 的服务器上有一些错误行为,我需要完全禁用它才能继续前进。