首页 > 解决方案 > 了解证书在客户端-服务器交互中的工作方式

问题描述

所以,我试图了解证书是如何真正、真正起作用的——我无法在谷歌上找到我正在寻找的东西,所以我用我的方式来表达它......如果你有一个简单的链接认为可能对我有帮助 - 请发布它,我将删除这个问题。

我了解当客户端(例如浏览器)向网站发出请求时,它会通过检查其证书来验证网站的身份。不鼓励使用自签名证书,证书颁发机构(及其分支机构)的证书才是真正的交易。现在已经验证了身份,请求由服务器处理并将响应发送到客户端,现在用户(人类)可以在他们的浏览器上看到 URL 旁边的绿色锁标志。我是否正确总结了这一点?这个响应是加密的,会被浏览器/客户端解密吗?

在 SSO(单点登录)流的情况下——当 SAML 断言被“数字签名”时——这究竟意味着什么?上述证书对此有何帮助?

我刚刚把太多的概念都混在了脑海中,并且正在寻找清晰的理解系统、安全性和 TLS。

标签: httpscryptographycertificatetls1.2

解决方案


首先,这都是关于非对称密码学的。这允许使用一个密钥加密消息并使用另一个密钥解密。为什么这有帮助。

安全交互

您可以使用该服务器的公钥向您的服务器发送消息。因此,您可以确定没有其他人(该服务器除外)能够解密该消息

数字签名

您可以使用您的私钥加密消息摘要,任何人都可以通过使用您的公钥解密您的“签名”来检查那是否是您。

证书涉及到什么阶段

上述两种情况都有一个陷阱。您无法确定服务器提供给您的公钥是否真的是您信任的一方的密钥。签名也是一样。您无法确定您刚刚成功用于验证签名的公钥是否真的是您希望签署合同的人的密钥。

证书是公钥和密钥对持有者信息的捆绑包。此捆绑包使用 CA 的私钥进行数字签名。

什么是端到端流程

让我们考虑一下 https 的情况。您的客户对服务器说“嘿,我想使用 https 协议”。这就是涉及到非对称密码学的地方。您使用服务器的公钥来加密将用于加密流量的对称密钥(因为非对称加密有点昂贵,它仅在协商对称密钥时使用)。

但是您如何确定您可以信任该服务器。实际上,服务器向您发送的不仅仅是一个密钥,而是一个证书。您获取证书并验证证书中指定的服务器名称实际上是您在地址栏中使用的名称。您还可以使用 CA 的公钥验证 CA 的签名。

认证链

已签署服务器证书的 CA 的公钥也可能需要验证。以与上述相同的方式执行这种验证。链条最终必须停在您绝对信任的证书上。此类证书存储在所谓的信任库中。

这就是 ssl 的工作原理。数字签名的 SAML 断言以非常相似的方式工作。他们提供证书,您可以验证并使用从中提取的公钥来验证断言的签名。


推荐阅读