我可以使用 HAProxy 将 SSL 传递到与其他虚拟主机共享 IP 的虚拟主机吗?
我尝试
frontend https
bind *:443 #ssl
mode tcp
default_backend port_443
backend port_443
mode tcp
server web42 www.example.com
Run Code Online (Sandbox Code Playgroud)
但我看到默认的网络服务器,而不是 www.example.com
我可以在前端执行 SNI,但是如何对后端说 - 这是针对 www.example.com 域的?
server web1 www.example.com:443 sni str(www.example.com) verify none
Run Code Online (Sandbox Code Playgroud)
也不行。
为了明确起见,网络服务器 www.default.com、www.example.com、www.example.net 都具有相同的 IP 和端口,例如 10.0.1.10:443 Apache/ngix 使用 SNI 选择正确的虚拟主机。
问题仍然没有解决。这里有一些图形
--------------------
|(All 10.0.1.10:443)
www2.example.com:443 -> HaProxy ->|www.default.com <- Apache vhost default
|www.example.com
|www.example.net
--------------------
Run Code Online (Sandbox Code Playgroud)
我想访问 www.example.com(使用 tcp 模式)
如果我有 www.example.com 和 www.example.net 的私钥。我可以访问 www.example.net (当用户输入 www.example.com 时)而不会出现安全问题吗?
我已经运行 Postfix/Dovecot 邮件服务器一段时间了(Ubuntu 服务器 16.04),没有任何重大问题。我还有一个颁发给我的主机名的 Let's Encrypt 证书,我在/etc/dovecot/conf.d/10-ssl.conf. 运行良好,但您可能知道这些有效期只有 90 天。我有 certbot 设置来自动更新这些,这也工作正常。
突然,今天,我的 Thunderbird、客户 Thunderbird 和他的 iPhone 都开始抱怨证书无效。我检查了证书,certbot certificates发现我使用的证书完全有效,没有过期。通过 Thunderbird 检查证书告诉我该证书已在前一天过期,并显示了与当前证书不匹配的哈希值。
所以基本上,Dovecot 似乎正在从某种“缓存”中颁发过期的证书。重新启动 dovecot 只是“神奇地”修复了它,但我想了解这里发生了什么,因为我在 Dovecot 中对证书缓存或类似内容的 DDG 搜索没有得到任何结果。我在这里遗漏了一些明显的东西吗?似乎我忽略了一些显而易见的事情,但无法弄清楚是什么。
编辑 这基本上在这里得到了回答,但由于我的 certbot 在 systemctl 计时器而不是 cronjob 上更新,我将尝试在这里提供这种情况的答案,以供将来参考以及与我有相同情况的任何人。
目前,我们使用 HAProxy 来管理数千个域的 TLS 终止,所有这些域都有定期轮换的 Let's Encrypt 证书。
相关配置如下所示:
frontend https-in
bind *:443 ssl strict-sni no-sslv3 crt /usr/src/data/certs/
Run Code Online (Sandbox Code Playgroud)
并且/usr/src/data/certs/充满了一堆 .pem 文件。
SSL 证书一直在变化,因为它们单独需要续订,或者新域从我们的系统中添加/删除。现在,我们通过将所有证书批量写入/usr/src/data/certs/并执行 haproxy 的零停机重新加载来解决这个问题。这很麻烦,因为我们在重新加载期间会出现非常大的内存峰值,因为新实例会读取完整的证书负载,而旧实例会继续运行。
我们目前正在研究 HAProxy Unix Socket 命令的一些功能,并了解我们可以动态化的许多功能(ACL、映射等)。我想知道我们是否可以采取类似的方法来同步证书并避免不断的重新加载行为。
使用 HAProxy 1.9 进行实验,但我们并未为此选择任何特定版本。感谢您的任何帮助或建议!
更新我看到了bind 有关通过数据平面 API
进行操作的文档,但它没有明确指示如何或何时获取这些更改。由于它包含用于强制重新加载的布尔值(或默认为reload-delay设置的值),我猜测有一个假设需要重新加载。
如果有人有引用来证实这一假设,我将不胜感激。
我正在使用这个 SSL Conf:
SSLCipherSuite ALL:!RSA:!CAMELLIA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SHA1:!SHA256:!SHA384
Run Code Online (Sandbox Code Playgroud)
请帮忙!我无法找到任何解决方案。
当我使用 ssllabs.com 检查我的网站时,我的密码始终 <100%。所以,我听说禁用 128 位密码可以让我获得完整的 %。我希望尽可能安全。
考虑 nginx 的参数proxy_ssl_verify,proxy_ssl_trusted_certificate这些参数用于保护与上游服务器的通信。
# downstream server: nginx.conf
stream {
server {
# ...
proxy_ssl on;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /etc/nginx/ssl/upstream.example.com/chain.pem;
proxy_ssl_verify_depth 2;
}
}
Run Code Online (Sandbox Code Playgroud)
我的印象是,对于,proxy_ssl onnginx 会根据upstream.example.com.proxy_ssl_trusted_certificate
但是,我遇到了一个问题,nginx 无法与上游服务器建立安全连接,并报告上游 SSL 证书验证错误: (2:unable to get Issuercertificate) while SSL 与上游握手,同时使用以下命令验证证书openssl确实有效。
# fullchain.pem: certificate sent by the upstream server
# chain.pem: CA certificate for `proxy_ssl_trusted_certificate`
# openssl verify -CAfile chain.pem fullchain.pem
fullchain.pem: OK
Run Code Online (Sandbox Code Playgroud)
这让我想知道nginx实际上是如何进行验证的。有没有办法单独重现此问题,以便调试为什么会发生错误?
https://nginx.org/en/docs/http/ngx_http_proxy_module.html
proxy_ssl_verify 上 | 离开;启用或禁用代理 …
我需要在 NGINX 服务器上为我的网站添加 SSL 证书。
我的域名提供商给了我一个 zip 文件供我下载,其中包含:
domain.cert.pem
intermediate.cert.pem
private.key.pem
public.key.pem
Run Code Online (Sandbox Code Playgroud)
[为了清楚起见:我没有重命名“域”,它被称为domain.cert.pem]
我很困惑该怎么做,因为我可以在网上找到的所有教程都需要不同的文件,有些以 .crt 结尾。
有人有建议吗?
我的 nginx 配置:
server {
listen 80 default_server;
ssl on;
server_name mydomain.com;
ssl_certificate /usr/src/app/domain.cert.pem;
ssl_certificate_key /usr/src/app/private.key.pem;
# vue app & front-end files
location / {
root /usr/src/app/dist;
try_files $uri /index.html;
}
# node api reverse proxy
location /api/ {
proxy_pass http://localhost:4000/;
}
}
Run Code Online (Sandbox Code Playgroud)
重启nginx时出错:
nginx: [emerg] PEM_read_bio_X509("/usr/src/app/domain.ce
Run Code Online (Sandbox Code Playgroud) 几年前,我从使用 Thawte SSL(一家威瑞信公司)转向威瑞信,因为威瑞信提供了更好的名称识别。为此,我对它很满意,并相信它让我们的电子商务访问者在使用我们的网站时有更好的安全感。
现在使用 EV SSL(扩展验证 SSL),它会根据浏览器显示绿色条或文本。我想知道与从 DigiCert 或 GoDaddy 升级到 EV SSL 相比,继续使用 Verisign 只是为了他们的品牌知名度是否是正确的选择。DigiCert 和 GoDaddy 获得了客户的好评,并且都拥有与所有现代浏览器兼容的良好根证书。
EV SSL 价格(截至 2009 年 6 月)
几个月前,我对 Digicert 和 GoDaddy 进行了一些研究,它们似乎都享有良好的声誉和评论。他们的根证书应该和 verisign 一样好,DigiCert 甚至允许您在一个证书中使用您的域和 www 前缀。要通过 Verisign 获得它,您必须购买两个证书。
拥有 DigiCert 甚至 GoDaddy 的 EV SSL 是否比拥有威瑞信品牌的标准 SSL 更好?
要使用 SSL,我使用的Web 服务器需要单个 .pem 文件 (-ssl_cert xyz.pem) 的位置
我有 GoDaddy 颁发的证书。他们给了我文件:
香蕉.crt
前面的证书请求是使用我生成的私钥创建的
香蕉钥匙
谷歌搜索似乎表明创建 .pem 文件就像连接它们一样简单。
catbanana.keybanana.crt>banana.pem
不幸的是,用banana.pem 启动服务器,然后用Safari 访问它告诉我:
颁发者:Go Daddy Secure Certificate Authority
此证书由未知机构签署
怎么了?我或 GoDaddy 是否在创建证书时搞砸了一些事情,或者我是否必须以某种方式将某些内容从这里混合到我的 .pem 文件中?
我正在访问完全最新的 OS X Leopard + Safari 安装。
在 Apache2/Ubuntu 上托管的 Ruby on Rails 应用程序上设置 SSL 需要采取哪些步骤?
我们有一个即将到期的网站证书。当前证书颁发机构向我们收取的费用过高,我们想换一家新公司。
如果我们从另一家公司获得一个新证书(这将得到适当的认证),我们的用户会在他们的浏览器中收到任何警告吗?
ssl ×10
haproxy ×2
nginx ×2
apache-2.2 ×1
apache-2.4 ×1
certificate ×1
dovecot ×1
godaddy ×1
mongoose ×1
ubuntu ×1
web-server ×1