SSL如何运作?
客户端(或浏览器?)和服务器(或Web服务器?)上安装的证书在哪里?
当您将URL输入浏览器并从服务器获取页面时,信任/加密/身份验证过程如何开始?
HTTPS协议如何识别证书?当所有信任/加密/身份验证工作的证书都工作时,为什么HTTP不能使用证书?
答案 0 :(得分:133)
答案 1 :(得分:46)
HTTPS是 HTTP 和 SSL(安全套接字层)的组合,用于在客户端(浏览器)和Web服务器之间提供加密通信(此处托管应用程序)。
为什么需要?
HTTPS加密通过网络从浏览器传输到服务器的数据。因此,没有人可以在传输过程中嗅探数据。
如何在浏览器和Web服务器之间建立HTTPS连接?
此流程可以通过下图表示:
答案 2 :(得分:3)
我写了一篇小博客文章,简要讨论了这个过程。请随便看看。
同样的小片段如下:
"客户端通过HTTPS向服务器发出请求。服务器发送其SSL证书+公钥的副本。在使用其本地可信CA存储库验证服务器的身份之后,客户端生成秘密会话密钥,使用服务器的公钥对其进行加密并发送。服务器使用其私钥解密秘密会话密钥,并向客户端发送确认。已建立安全通道。"
答案 3 :(得分:0)
Mehaase已经详细解释了它。我将把这2美分加到这个系列中。我有许多围绕SSL握手和证书的博客文章。虽然大部分内容围绕IIS Web服务器,但该帖子仍然与SSL / TLS握手有关。这里有一些供您参考:
不要对待证书& SSL 作为一个主题。将它们视为两个不同的主题,然后尝试查看它们的工作原理。这将有助于您回答这个问题。
通过证书存储建立通信方之间的信任
SSL / TLS通信仅基于信任。互联网上的每台计算机(客户端/服务器)都有一个它维护的根CA和中间CA的列表。这些是定期更新的。在SSL握手期间,这用作建立信任的参考。例如,在SSL握手期间,当客户端向服务器提供证书时。服务器将尝试确认颁发证书的CA是否存在于其CA列表中。当它无法执行此操作时,它声明无法进行证书链验证。 (这是答案的一部分。它还为此查看了 AIA 。)客户端也对它在Server Hello中收到的服务器证书进行了类似的验证。 在Windows上,您可以看到客户端和服务器的证书存储区。服务器通过PowerShell。从PowerShell控制台执行以下操作。
像Firefox和Opera这样的浏览器并不依赖于底层操作系统来进行证书管理。他们维护自己独立的证书商店。PS证书:> ls位置:CurrentUser StoreNames:{TrustedPublisher,ClientAuthIssuer,Root,UserDS ...}
位置:LocalMachine StoreNames:{TrustedPublisher, ClientAuthIssuer,远程桌面,Root ...}
SSL握手使用Symmetric& amp;公钥加密。默认情况下会发生服务器验客户端身份验证是可选的,取决于服务器端点是否配置为对客户端进行身份验证。请参阅我的博文,因为我已经详细解释了这一点。
最后针对此问题
HTTPS协议如何识别证书?当所有信任/加密/认证工作的证书是什么时,为什么HTTP不能使用证书?
证书只是一个文件,其格式由X.509标准定义。它是一个电子文档,证明了通信方的身份。 HTTPS = HTTP + SSL 是一种协议,它定义了2方如何相互通信的准则。
更多信息
如果完成上述活动,那么您将对证书和SSL有一个公平的理解。