通过 HTTPS:// 访问非 SSL 站点时返回“无法连接”是否正常

通过 HTTPS:// 访问非 SSL 站点时返回“无法连接”是否正常

我只谈论没有任何 SSL 证书(自签名或由权威机构颁发)的服务器。

如果通过(例如)访问的网站没有关于 SSL 的任何信息(默认配置,全新安装的 apache/nginx),则返回Unable to connect(firefox)或refused to connect(chrome) ,这正常吗?httpshttps://example.com

这是真的吗?还是我的服务器配置错误?

答案1

虽然我同意标题中关于“非 SSL”的其他答案,但问题中实际上有一个不可排除的中间问题身体;SSL/TLS 确实有一些密码套件不要使用服务器证书:有些完全未经身份验证(匿名),有些通过非证书方式(PSK 或 Kerberos)进行身份验证。这些是几乎没有使用过,经常被禁止,有时甚至未实施。

HTTPS 作为 SSL/TLS 的一个应用程序(配置文件)不应该使用这些,因为 RFC2616 指定将 URL 颁发机构的主机标识与证书进行匹配,但这在技术上是可行的。浏览器(据我所知所有浏览器)都没有实现它们,但其他一些客户端会实现或可以实现。据我所知,无法配置 Apache 或 nginx 来选择它们,但其他服务器(或准服务器,如 ALG、IDS/IPS/DLP 或前端/负载均衡器)可能会这样做,并且如果您使用未正确设置的密钥库(通常是由于遵循某些网站的错误建议)并启用所有支持的协议(遵循许多网站,甚至是 stackexchange 的错误建议),则在 Java 中这样做相当容易。

在这种情况下,如果服务器正在监听 443 但没有证书

  • IE(11) 显示“无法显示页面...不支持的协议或密码...”
  • FF(47) 显示“您的连接不安全...网站[配置]不正确[NO_CYPHER_OVERLAP]”
  • Chrome(52) 显示“此网站无法提供安全连接...不支持的协议...ERR_SSL_VERSION_OR_CYPHER_MISMATCH”

答案2

是的,这是正常的。HTTPS 适用于不同的端口,并且对于许多 Web 服务器来说,网站的 HTTPS 版本与 HTTP 版本本质上是不同的。幸运的是,大多数管理员会将这两个网站配置为提供相同的内容。

如果网站中有需要身份验证的部分,则只能通过网站的 HTTPS 版本访问这些部分。网站的 HTTP 版本通常会将此类请求重定向到网站的 HTTPS 版本。

某些 Web 服务器提供自签名证书,以便您测试 HTTPS 设置。但是,这些证书会生成证书警告,不适合用于公共网站。您需要将其替换为公认证书颁发机构认可的证书。
您可以从以下网站获取免费证书让我们加密。这是一个旨在使自我注册变得简单和安全的证书颁发机构。该组织得到了许多组织的支持。

许多搜索引擎开始对未使用有效证书提供 HTTPS 服务的网站进行惩罚。(有效证书是由公认的证书颁发机构签署的未过期证书。)对于我的网站,Google 提供 HTTPS 链接而不是 HTTP 网站。这是在我从自签名证书切换到 Let's Encrypt 证书后开始的。

答案3

是的,如果您没有证书,您将无法连接。密钥交换需要证书。幸运的是,获取自签名证书并不需要太多工作。Nginx 给出以下错误消息,

no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking

在此链接的第一步中,他们向您展示了如何创建自签名证书 https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-nginx-for-ubuntu-14-04

相关内容