我们的 PCI 合规性供应商要求我们在 Web 服务器上禁用除 RC4 加密之外的所有加密。目前我们的 apache 配置文件如下所示:
SSLHonorCipherOrder On
SSLCipherSuite RC4-SHA:HIGH:!ADH:!AES256-SHA:!ECDHE-RSA-AES256-SHA384:!AES128-SHA:!DES-CBC:!aNull:!eNull:!LOW:!SSLv2
Run Code Online (Sandbox Code Playgroud)
但是,https://www.ssllabs.com报告允许使用以下密码:
如何配置 apache 只允许 RC4?
我一直在尝试让 rsyslog 通过 TLS 传输,但到目前为止还没有成功。
我的配置似乎有问题,但我无法确定它。
这是我的服务器配置文件:
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
$ModLoad immark # provides --MARK-- message capability
$ModLoad imgssapi # provides GSSAPI syslog reception
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 10514
$InputTCPServerStreamDriverMode 1 # run driver …Run Code Online (Sandbox Code Playgroud) 三个问题:
smtpd_tls_mandatory_ciphers=> 传入强制 TLS 加密的smtpd_tls_ciphers设置 => 传入机会性 TLS 加密的smtp_tls_mandatory_ciphers设置 => 传出强制 TLS 加密的smtp_tls_ciphers设置 => 传出机会性 TLS 加密的设置smtpd_tls_security_level和smtp_tls_security_level,may那么只有机会主义设置是相关的,这意味着我在强制性设置中设置了什么无关紧要?如果我想制作一个安全但仍然是公共的邮件服务器,以下配置(关于使用的密码学)是否可以?我不太确定目前有多少服务器支持 TLS 或一般的安全级别,但我仍然希望能够与大多数服务器进行通信。
smtpd_tls_mandatory_ciphers = high
smtp_tls_mandatory_ciphers = high
smtpd_tls_ciphers = high
smtp_tls_ciphers = high
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_exclude_ciphers = aNULL, DES, RC4, MD5
smtpd_tls_exclude_ciphers = aNULL, DES, RC4, …Run Code Online (Sandbox Code Playgroud)最近我一直在尝试使用 Nginx 重定向到 HTTPS,但是在我尝试在浏览器中访问我的网站后,我不断收到重定向循环。这是我的完整服务器块配置文件:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl;
root /var/www;
index index.php index.html index.htm home.html contact.html projects.html;
# Make site accessible from http://localhost/
server_name melone.co;
return 301 https://$host$request_uri;
ssl_certificate /path/to/ssl;
ssl_certificate_key /path/to/ssl;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 404 /404.html;
# redirect server error pages to the …Run Code Online (Sandbox Code Playgroud) 我们正在运行具有 Xeon CPU、32GB RAM 和运行 Centos 6 的 RAID SSD 的相当强大的专用服务器。然而,我们仍然看到 HTTPS 使我们的页面下载时间增加了 100 毫秒以上。有什么我们可以做的甚至可以加快 20 毫秒的速度吗?
以下是 Apache 设置:
SSLHonorCipherOrder on
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-EC$
SSLProxyCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECD$
SSLProtocol all -SSLv3 -SSLv2
SSLProxyProtocol all -SSLv3 -SSLv2
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/var/run/ssl_scache(5120000)"
SSLSessionCacheTimeout 300
SSLUseStapling On
SSLStaplingCache "shmcb:/var/run/ssl_stapling(128000)"
SSLStaplingReturnResponderErrors off
SSLStaplingStandardCacheTimeout 3600
SSLStaplingErrorCacheTimeout 600
SSLStaplingResponderTimeout 5
Run Code Online (Sandbox Code Playgroud) 在使用中间 CA(自创建)时,我在 nginx 的客户端身份验证方面遇到了一些困难。
尽管相同的证书包(单个 .pem 文件中的中间 + 根证书)适用于 IMAP(dovecot)和 SMTP(后缀)中的客户端身份验证,但我似乎无法让它与 nginx 一起使用。相反,我收到以下错误:
[info] 23383#23383: *14583139 client SSL certificate verify error: (27:certificate not trusted) while reading client request headers, client: 82.39.81.156, server: <hostname>, request: "GET /mailboxes HTTP/1.1", host: "<hostname>"
Run Code Online (Sandbox Code Playgroud)
据我了解,来自 openssl 的错误类型 27 是X509_V_ERR_CERT_UNTRUSTED,或者证书出于特定目的不受信任的某种问题,但是我无法进一步详细说明。
个人证书和捆绑证书似乎都可以正确验证openssl verify(我可以根据中间证书或捆绑证书验证客户端证书,并且中间证书针对根证书进行验证,即 - 在我能想到的每个组合中都是有效的)。
我的根和中间 CA 应该使用正确的扩展名设置以验证我的客户端证书,这是我的自定义openssl.conf文件的相关示例:
[ v3_ca ]
# Extensions for a typical CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = …Run Code Online (Sandbox Code Playgroud) 似乎在为 HTTPS 连接上的主机名路由配置 HAProxy 时,包含一个tcp-request inspect-delay指令“让 HAProxy 有机会查看连接”至关重要。有没有办法让 NGINX 达到同样的效果,还是我应该开始打包并将我的整个服务器移动到 HAProxy?
(作为参考,这个问题来自我之前在这里表达的误解)
编辑
迈克尔,在评论中:
他似乎想在不实际终止 TLS 连接的情况下从客户端的握手尝试中“嗅探”SNI,以便做出下层连接代理决策,并盲目地将有效负载传送到后续机器以终止 TLS,因为对于出于某种原因,他不希望代理上的 TLS 证书和密钥,或者让代理根本不执行 TLS——只需嗅探 SNI 并使用从其内容派生的规则建立向内 TCP 连接。
理由是我需要后端应用程序中的证书和密钥(有些出于某种原因需要这样做),所以我必须向他们提供这些。必须在代理中设置它们本质上会使维护工作和出错的机会加倍。如果我可以不维护对代理的证书的访问权限,这将使我的架构更容易,并减少出错的机会。
我在负载平衡器后面运行一对 2012R2 RODC,用于对某些应用程序(主要在 Linux 上)进行身份验证。LDP.exe 可以很好地进行查找,但是我们遇到了 Postgres 问题,它似乎想要使用 Active Directory 不支持的 TLS 版本。问题是我似乎找不到关于 SSL/TLS Active Directory 支持哪些版本的任何文档。
有没有人对此有比我的研究确定的更好的见解?
我已在 Windows Server 2008 R2 上配置 IIS 以不允许使用 TLS 1.0。我通过设置这些 reg 键并重新启动来完成此操作:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\DisabledByDefault set to 1 (as a DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\Enabled set to 0 (as a DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\DisabledByDefault set to 1 (as a DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\Enabled set to 0 (as a DWORD)
Run Code Online (Sandbox Code Playgroud)
在客户端,我使用 FireFox 48.0 和 IE 9 进行测试。(我无法使用更高版本的 IE,因为网络管理员已锁定设置)。这就是我配置 IE 以强制使用 TLS 1.0 的方式:
这是我配置 FireFox 以强制使用 TLS 1.0 的方式:
我正在使用 WireShark 来确认正在使用的协议。这是我在浏览器中强制使用 TLS 1.0 时的样子:

我还使用了下面建议的 OpenSSL 命令来确认仍在使用 TLS 1.0:
openssl s_client -tls1 -connect mysite.com:443
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中强制使用 …
我正在构建个人服务器。我希望能够从任何地方访问该服务器,并且我不希望该服务器被阻止。我的理解是 HTTPS 加密了我的流量,但我也听说它没有完全加密它。我听说如果你访问一个有域的网站,DNS 查找是在没有加密的情况下执行的,因此 ISP 可以找出我的个人服务器所在的域(以及它的 IP 是什么)。但是如果我从它的 IP 地址访问我的服务器呢?
问题:如果我通过访问服务器的 IP 地址来访问服务器,并且我使用 HTTPS(因此 URL 类似于https://###.###.###.###/),是否任何人(包括 ISP 和“与我在同一路由器后面”的人)都可以弄清楚我正在访问的服务器的 IP 地址?如果是这样,我应该使用 SSL1/SSL2/SSL3 还是应该使用 TLS1/TLS1.1/TLS1.2 或者这无关紧要?
顺便说一下,服务器的证书将是自签名的,并且只能在端口 443 (HTTPS) 上访问此服务器。
tls ×10
ssl ×7
https ×3
nginx ×3
301-redirect ×1
apache-2.2 ×1
apache-2.4 ×1
centos ×1
encryption ×1
haproxy ×1
iis ×1
ip-address ×1
isp ×1
ldap ×1
pci-dss ×1
performance ×1
postfix ×1
rsyslog ×1
smtp ×1
sni ×1
ubuntu ×1