首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端如何验证由不同中间CA签名的服务器提供的证书

客户端如何验证由不同中间CA签名的服务器提供的证书
EN

Security用户
提问于 2020-04-29 12:23:43
回答 1查看 856关注 0票数 0

我正在使用openssl库创建一个c++安全客户端服务器应用程序。我仍然不清楚SSLHandshake过程的某些方面

我已经启用了相互TLS顺序验证这两个对等点是可信的。我有两套证书和私钥。这两个集合具有相同的根证书,但具有不同的中间签名者。

根CA ->中间CA1

根CA ->中间CA2

在这两个应用程序中,我都用VERIFY_PEER_CERT设置了VERIFY_PEER_CERT。我还没有确定核查的深度。

服务器调用堆栈

  1. 服务器获取根CA并将其添加到受信任的证书存储区。
  2. 服务器然后以以下格式获取PEM编码的证书字符串

--开始证书--域证书1--结束证书

代码语言:javascript
复制
 Server reads the Domain certificate 1 from the PEM string and call the SSL_CTX_use_certificate
 Server reads the Intermediate certificate from the string and add it to the extra_chain_certs using SSL_CTX_add_extra_chain_cert

3.服务器加载私钥

客户调用堆栈

  1. 客户端获取根CA并将其添加到受信任的证书存储区。
  2. 客户端然后以以下格式获取PEM编码的证书字符串

--开始证书--域证书2--结束证书

代码语言:javascript
复制
 Client reads the Domain certificate 2 from the PEM string and call the SSL_CTX_use_certificate
 Client reads the Intermediate certificate 2 from the string and add it to the extra_chain_certs using SSL_CTX_add_extra_chain_cert

3.客户端加载私钥

双方将遵循SSLHandshake,我需要澄清以下几点。

  1. 客户机/服务器会使用可信证书和额外证书来完成is证书链吗?
  2. 在SSLHandshake期间,同侪将出现什么?只有域证书还是整个链?
  3. 由于对等方的中间CA不存在于本地证书存储中,SSLHandshake会成功吗?
  4. 是否只有根CA存储足以验证对等方提供的证书链?
  5. 如果我要从同一个应用程序创建多个客户端,我是否可以使用使用set 2初始化的相同上下文来连接由同一个根CA签名的多个服务器?
EN

回答 1

Security用户

发布于 2020-04-29 13:26:40

客户机/服务器会使用可信证书和额外证书来完成is证书链吗?

是的,SSL_CTX_use_certificate将加载证书,SSL_CTX_add_extra_chain_cert将加载链证书,并在TLS握手期间将这两个证书发送给对等方。

在SSLHandshake期间,同侪将出现什么?只有域证书还是整个链?

证书和链。

由于对等方的中间CA不存在于本地证书存储中,SSLHandshake会成功吗?

由于对等方将链证书发送到受信任的根,因此不需要预先知道对等链证书,也就是说,如果没有信任,握手就会成功。

是否只有根CA存储足以验证对等方提供的证书链?

是的,看最后一点。

如果我要从同一个应用程序创建多个客户端,我是否可以使用使用set 2初始化的相同上下文来连接由同一个根CA签名的多个服务器?

我不太清楚这意味着什么。但是,相同的上下文可以用于多个对等点,即创建多个TLS会话。

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

https://security.stackexchange.com/questions/230755

复制
相关文章

相似问题

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