我正在使用openssl库创建一个c++安全客户端服务器应用程序。我仍然不清楚SSLHandshake过程的某些方面
我已经启用了相互TLS顺序验证这两个对等点是可信的。我有两套证书和私钥。这两个集合具有相同的根证书,但具有不同的中间签名者。
根CA ->中间CA1
根CA ->中间CA2
在这两个应用程序中,我都用VERIFY_PEER_CERT设置了VERIFY_PEER_CERT。我还没有确定核查的深度。
服务器调用堆栈
--开始证书--域证书1--结束证书
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_cert3.服务器加载私钥
客户调用堆栈
--开始证书--域证书2--结束证书
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_cert3.客户端加载私钥
双方将遵循SSLHandshake,我需要澄清以下几点。
发布于 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会话。
https://security.stackexchange.com/questions/230755
复制相似问题