我只是谈论没有任何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上侦听,但没有证书 :
是的,这是正常的。 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