有爹知道 https 双向认证时候,服务端使用客户端证书干了什么么?

291 天前
 main1234

在单向认证时候,服务端发给客户端证书,客户端校验证书然后用证书里面的公钥加密了一个 random ,服务端收到 random 后用私钥解密,为双方的第三个 random

那么在双向认证时候,客户端发给服务端证书,服务端到底用客户端证书干了什么???查了一些博客,现在有几种说法

1.只验证 2.验证+服务端用客户端公钥加密了加密套件,客户端用私钥解密加密套件 3.验证+服务端用客户端公钥加密 random-S

在第二种说法中,加密套件不是 client hello 时候客户端发过去的么?在 server hello 后服务端会选择一个加密方案,双向认证时候,加密套件在客户端验证完服务端证书后发送??

6914 次点击
所在节点    程序员
50 条回复
ydpro
291 天前
双向 SSL 就是服务器和客户端相互验证以增强安全性 。,客户端和服务器交换证书以验证彼此的身份。客户端证书由服务器信任的证书颁发机构( CA )创建,而服务器证书由客户端信任的 CA 创建。这种相互验证确保了更强大的安全设置,双方在建立安全连接之前验证彼此的证书。双向 SSL 在组织希望将其平台的访问限制在特定用户的场景中特别有用,降低了在线交易中欺诈的风险
https://cheapsslsecurity.com/p/what-is-2-way-ssl-and-how-does-it-work/
zbowen66
291 天前
sleepybear1113
291 天前
学到了,下次如果我也遇到一些问题,学 op 问爹找解决方案,回复友好还更多
ydpro
291 天前
@ydpro 浏览器向服务器:嗨,老哥,这是我支持的加密方式和兼容的 SSL/TLS 版本,我们可以这样安全地聊天吗?(客户端发送“客户端问候”消息,包含支持的密码套件和兼容的 SSL/TLS 版本信息)

服务器回复浏览器:嘿,听起来不错,这是我的名片(公钥证书),我也想知道你的信息,我们才能更好地交流。(服务器回应“服务器问候”消息,提供自己的公证书,并请求客户端的证书)

浏览器查看服务器的名片,确认这是个值得信赖的老哥,然后回应:好的,我查了一下,你的名片(证书)没问题,现在轮到我了,这是我的名片(客户端证书)。(浏览器验证服务器证书后,发送自己的 SSL 证书给服务器)

服务器仔细检查浏览器的名片,确认无误后说:很好,你的名片(证书)我也认可了,现在我们可以安心地交流了。(服务器验证客户端证书后,建立安全连接)
huangqihong
291 天前
这是我最近一年看过回复最友好,最积极的帖子了
yujianwjj
291 天前
我要向楼主学习提问的技巧
magicZ
291 天前
学会了,提问的艺术
oneKnow
291 天前
建议 op 出本书,就叫《提问的艺术》
corcre
291 天前
@oneKnow 已经有了, 但是我觉得可以给 op 单独开一章🐶
shawndev
291 天前
两个独立的问题。

1. 你描述中的第一句,只在部分条件下适用。TLS 1.2 之前是支持 PSK 方式的预共享密钥。TLS 1.2 及之后只支持密钥协商。
2. 双向校验的核心是,HTTPS 的安全是建立在对于 CA 机构证书链的信任。双向校验的核心是,服务端只信任预置证书的客户端,客户端只信任指定的 CA 证书。
yangzzz
291 天前
@zbowen66 保存了,你这张图很清晰
mosliu
291 天前
《提问的艺术》 rev. 2.0
somebody1
291 天前
你这么提问,评论区很难不开心啊
main1234
291 天前
@zbowen66 @FaiChou 两位尊父大人给的文章有出入,zbowen66 大人的图在第一步 client hello 时候发送了加密套件,并在 server hello 时候返回了明文的加密套件选择方案; FaiChou 大人的文章再 client 校验完 server 证书时候将加密套件发送给 server ,server 校验完 client 证书后将选择的方案用 client 公钥加密了


以上就是我一直纠结的点
dzdh
291 天前


看了看 go 的。

- 验证是否是合法的证书(可以指定自签名 CA )
- 是否在合法时间内
- 证书 KeyExtendUsage 是否允许 客户端认证
dzdh
291 天前
@dzdh 都验证过了就没有其他的了,把客户端证书信息解析后放到当前请求就没有然后了。
j6711
291 天前
学会了,提问的艺术
tool2d
291 天前
@main1234 似乎你的纠结点在于服务器用了客户端证书,具体干嘛。

1. 客户端角度看,证书分公钥和私钥两部分。公钥是发给服务器作为验证的,私钥确实是本地加密数据后发给服务器,但不是加密 random 随机数,也不是 masterkey ,就仅仅是加密了 hash (因为正式加密通讯之前,任何数据都有可能被篡改,需要数字签名)

2. 图上有一个 change cipher spec ,名字很容易误导,你以为可能是二次协商密钥。其实包里啥也没干,就是一个加密开始的 confirm 。
holulu
291 天前
传客户端证书就相当于传登录密码一样。
wang4012055
291 天前
本质就是利用非对称加密,获取其他人(中间人攻击)无法获取的密钥进行对称加密交流.
叶文洁想要联系三体人,但是怕被罗辑知道并篡改内容,由于三体人在太阳老哥这注册过,叶文洁就问太阳老哥要到了三体人的公钥,把信息用公钥加密发给了三体人,三体人收到用三体人私钥解密后,确认是叶文洁发来的,就用在太阳老哥注册的叶文洁公钥加密信息发回去,这样双方都有了双方才知道信息,从而生成密钥进行对称加密交流.而罗辑只能干瞪眼.🤣

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023857

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX