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

我只是谈论没有任何SSL证书的服务器(自签名或授权)。

是否正常的网站,没有任何关于SSL(默认configuration,干净安装的Apache / Nginx的)返回Unable to connect (Firefox)或refused to connect (铬)如果通过https访问(例如https://example.com )?

我的服务器确实是configuration错误吗?

虽然我同意题目中的“非SSL”的其他答案,但在问题主体中实际上还有一个没有遮掩的中间; SSL / TLS确实有一些 不使用服务器证书的 密码套件 :一些完全未经身份validation(匿名),一些通过非证书方式(PSK或Kerberos)进行身份validation。 这些很less被使用 ,通常被禁止,有时未被实施。

作为SSL / TLS的一个应用程序(configuration文件),HTTPS不应该使用这些因为RFC2616指定将URL权限的主机身份与证书进行匹配,但在技术上是可行的。 浏览器(AFAIK全部)不实施他们,但一些其他客户做或可以。 AFAICT不可能configurationApache或nginx来select它们,但是其他服务器(或类似于ALG,IDS / IPS / DLP或前端/负载均衡器的准服务器)可能会很容易这样做在Java中,如果您使用的密钥库设置不正确(通常是由于遵循一些网站的不良build议),并启用所有支持的协议(遵循许多网站的错误build议,甚至stackexchange)。

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

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

是的,这是正常的。 HTTPS在不同的端口上工作,并且对于许多Web服务器,HTTPS版本的站点本质上是与HTTP版本不同的站点。 幸运的是,大多数pipe理员将configuration这两个网站来提供相同的内容。

如果您有部分站点需要身份validation,则只能在网站的HTTPS版本上访问它们。 通常,网站的HTTP版本会将这些请求redirect到网站的HTTPS版本。

某些Web服务器具有自签名证书,可用于testing您的HTTPS设置。 但是,这些生成证书警告,不适合公共场所。 您将需要用认可的证书颁发机构认可的证书来replace它们。
您可以从Let's Encrypt获取免费的证书。 这是一个旨在使自注册简单而安全的authentication机构。 该组织得到了许多组织的支持。

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

是的,如果你没有证书,你将无法连接。 这是密钥交换所必需的。 幸运的是获得一个自签名的并不是那么多的工作。 Nginx提供以下错误信息,

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

在这个链接的第一步,他们告诉你如何创build一个自签名证书https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-nginx-for-ubuntu -14-04