首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPS和证书

HTTPS和证书
EN

Stack Overflow用户
提问于 2011-04-09 05:18:25
回答 2查看 2.2K关注 0票数 4

HTTPS在接受证书方面是如何工作的?

EN

回答 2

Stack Overflow用户

发布于 2011-04-09 08:17:19

的小故事

Client:(连接到服务器,伸出手来)“你好!这是我的加密细节。” 服务器:(接过客户端)“你好。这是我的加密细节。这是我的证书。”(握手谈判完成。客户检查证书) Client:太好了,这是我的钥匙!所以从现在开始一切都是用这个密钥加密的。好的? 服务器:好的!(SSL握手完成) Client:太好了,我的数据是通过HTTP来的!

证书SSL握手中使用。服务器交给客户端的证书是由类似于署名证书管理机构 (CA)指定的,并且是特定于服务器的。SSL握手中有各种检查。需要了解的重要问题之一是证书的公共名称属性必须与服务器的主机/ DNS名称匹配。

客户端拥有CA的公共证书(钥匙)副本,因此可以使用它(例如,用SHA1计算)来查看服务器的证书是否仍然正常。

票数 8
EN

Stack Overflow用户

发布于 2011-04-09 06:35:13

首先,我们需要区分服务器端证书和客户端证书。

在大多数情况下,只使用服务器端证书。它用于让客户端通过验证服务器的证书来验证客户端连接到的服务器的真实性(验证过程将在下面描述)。这样做可以防止中间人(MITM)的攻击。

当我们需要将对服务器的访问仅限于某些用户组时,就会使用客户端证书。为此,客户端使用证书对自己进行身份验证。由于用户集通常是有限的(根据某些标准,它在现实生活中可能相当大),验证过程通常与服务器证书验证过程略有不同。

接下来,关于验证本身。

在客户端上验证服务器的证书时,客户端将执行以下步骤:

  1. 查找颁发者(CA)证书,并使用颁发者证书检查服务器证书的签名(跳过技术细节)。
  2. 检查证书有效期(从何时接受证书到何时接受证书)。
  3. 检查证书的预期使用情况(每个证书只能用于某些目的)。
  4. 检查服务器所在的域名(或IP地址)是否已颁发证书。
  5. 检查证书是否已被CA取消(撤销)。这是通过检查证书撤销列表(CRL)和使用OCSP协议发送实时请求来实现的。
  6. 由于CRLs和OCSP响应是使用证书签名的,因此它们的签名也会如前所述得到验证。
  7. 对于步骤(1)中提到的CA证书,将重复此过程,直到您获得受信任的根CA证书(假定客户端有一组受信任的根证书)。

当服务器验证客户端证书时,上述过程通常是简化的,因为相同的系统是CA,服务器访问是经过验证的。在这种情况下,证书可以直接与允许的证书列表相匹配,或者以上大多数步骤都是不必要的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5603052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档