Tag: tls1.2

Openssl:在SSL_CTX_load_verify_locations API中使用CApath参数时,证书validation失败

我正在尝试与服务器计算机建立TLS连接。 我使用openssl CLI命令创建了根CA证书和服务器证书。 我创建了服务器证书,其通用名称与其IP地址相同。 根CA证书的通用名称是服务器的FQDN。 我正在使用openssl库API建立与服务器的连接。 我正在使用API int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath) 用于设置CA文件查找路径。 当我使用CAfile参数指定我的CA文件的路径时,一切正常,将CApath参数保留为NULL。 但是,如果我使用CApath参数指定包含CA文件的目录的路径,将CAfile参数保留为NULL,则由于证书validation错误,连接将失败。 当我使用wireshark捕获数据包时,我发现我的客户端代码正在从服务器发送“服务器问候”的TLS响应“未知CA”。 我使用了在成功连接中使用的相同CA证书文件。 根据我在探索openssl库源代码时的观察,我推断,在我的情况下,CA文件不被认为是有效的,因此由于某些未知原因而未被库API加载。 有人可以告诉我原因,如果可能的话,可以解决这个问题吗?