根据我的理解, 如果是客户端身份验证, 服务器从客户端请求证书,然后在证书验证握手发生后。
我只是想知道,Server在证书验证中做了什么: 1)它仅验证证书是否有效,即用户是证书的真正所有者。 2)它验证用户是证书的真正所有者,并检查身份验证和授权。
那么1还是2?
以简单的方式我的问题是:SSLAuthentication是握手的一部分还是握手后会出现的情况?
答案 0 :(得分:1)
如果在线上握手完成之前完成证书的完整验证,则由同行决定。通常,服务器证书验证在握手之前完成,如果完成并且客户端证书验证至少部分完成。
但特别是在客户端证书的情况下,可能是服务器上运行的Web应用程序有其他要求,例如证书不仅由特定CA签名,而且主题与在数据库,也许证书的指纹存储在数据库中。在这种情况下,验证通常仅在TLS握手完成后才完成,因为只有执行了Web应用程序特定逻辑。
...服务器在证书验证中做了什么:1)它只验证证书是否有效,即用户是证书的真正所有者。 2)它验证用户是证书的真正所有者,并检查身份验证和授权。
在TLS握手内部检查客户端是否拥有证书中公钥的私钥。通常还会检查证书是否由受信任的CA签名,尽管可能存在未执行此检查的情况,而是在握手后检查证书是否具有预期的指纹。通常不会在TLS握手内部检查授权,因为TLS堆栈通常不知道访问了哪种资源,以及证书验证的特定用户是否有权访问此资源。