HTTP 与 HTTPS 有什么区别,SSL 到底发生了什么?

HTTP vs HTTPS what is the difference and what is actually going on with SSL?

我刚才问了一个关于 What is the difference between requiring an SSL cert and accepting an SSL cert?

的问题

在很大程度上消除了两者之间的差异,但是我对这个话题还是有点不清楚。

我对这张图片有几个问题:

也在阅读这篇文章:Why SSL? The Purpose of using SSL Certificates 虽然我确实在特定页面上设置了要求 SSL 和忽略客户端证书,但我没有看到地址栏的以下更改:

我对此提出质疑的原因是因为最近,在尝试将 HTML 动态加载到我的网站时,我使用 Javascript 和 HTTPS 进行加载 url,但是我收到域错误,说它不是来自同一来源...

http://www.example.com & https://www.example.com - 我不明白 为什么我会收到一条错误消息说不是同一个来源? 更不用说我也在使用带有 HTTPS 的页面(这就是地址栏中的内容)。同时,将 link 更改为 HTTP 似乎修复了该错误。

Require SSL - What exactly does this mean from a client standpoint?

documentation有点不清楚。它要么意味着:

  • 当向服务器发出纯 HTTP 请求时,它会响应说 "The resource you want is at this HTTPS URL, go there to get it"
  • 它完全关闭了纯 HTTP 支持

如果您有支持 SSL 的 IIS 服务器(我不支持),这很容易测试,我认为它是第一个选项。


Client Certificates - I get that this all comes from the client, but is it something that I, as a webserver, would issue? What would be a particular situation where you would require a Client certificate?

一般情况下,您会以 "someone running a webserver, but possibly also other systems, which require a client certificate" 的身份发布它们。

你用这些代替 username/password。


while I do have Require SSL and Ignore Client certificates setup on specific pages, I don't see the below changes to the address bar

如果您不向我们展示您在自己网站上看到的内容,则很难判断问题出在哪里。


i.e. http://www.example.com & https://www.example.com - I don't get why I would get an error saying not the same origin?

原产地规则相当严格。

  • 主机名必须相同(它是)
  • 端口必须相同(不是,你有 80 和 443,这是 HTTP 和 HTTPS 的默认值)
  • 方案必须相同(HTTP和HTTPS不一样)

您应该通过在任何地方使用 SSL 来缓解这种情况。不要对某些事物使用纯 HTTP 而对其他事物使用 HTTPS。

浏览器未通知连接安全(如上一节所述)可能是因为您通过 HTTP 将其他资源加载到页面中,但如果没有测试用例,则很难做到告诉.