OpenSSL和可信系统证书
OpenSSL and Trusted System Certifcates
所以我已经知道如何使用SSL_CTX_load_verify_locations()
指定受信任证书的位置。现在文件上写着:
SSL_CTX_load_verify_locations()指定CTX的位置,位于用于验证目的的CA证书位于哪个位置。这个通过CAfile和CApath可用的证书是可信的。
还说:
在查找CA证书时,OpenSSL库将首先进行搜索CAfile中的证书,然后是CApath中的证书。
没关系。但是没有提及驻留在OPENSSLDIR中的受信任系统证书。
- CAfile和CApath都失败后,是否检查了系统证书
- 对
SSL_CTX_set_default_verify_paths()
的调用是否覆盖SSL_CTX_load_verify_locations()
?或者它们是并排工作的,即受信任的系统证书和CAfile和CApath指定的证书 - 如果使用
SSL_CTX_get_cert_store()
手动将证书添加到证书存储,即根本不调用SSL_CTX_load_verify_locations()
,在这种情况下会发生什么?是否只检查了商店证书?无论如何,在这种情况下禁用/启用检查受信任的系统证书
好的。。所以我尝试了一下,发现了我需要知道的东西
设置:
-简单的客户端和服务器,双方都启用了对等验证
-我创建了两个CA。让我们称它们为SS(自签名)和TR(可信)
-SS用于创建客户端(SS_C)和服务器(SS_S)证书
-TR用于创建客户端(TR_C)和服务器(TR_S)证书
-TR CA被散列并添加到默认CA目录中。
食品安全测试:
-SS_C和SS_S的openssl verify
失败,除非我指定CAfile
-TR_C和TR_S的openssl verify
成功
结果如预期
客户端/服务器基本测试:
-无验证路径调用:SS失败--TR失败
-调用SSL_CTX_set_default_verify_paths
:SS失败--TR成功
-以SS为CA文件调用SSL_CTX_load_verify_locations
:SS成功--TR失败
结果如预期
现在,让我们进入更有趣的内容
同时调用SSL_CTX_set_default_verify_paths
和SSL_CTX_load_verify_locations
:
在这种情况下,对SSL_CTX_load_verify_locations
的调用总是使用SS作为CA文件
-TR成功--无论调用的顺序如何
-SS成功--无论调用的顺序如何
有趣的结果——至少对我来说
现在,我可以预期使用证书存储也会起作用
使用X509_STORE
而不是SSL_CTX_load_verify_locations
:
在这种情况下,我创建了一个SS CA的字节数组,获得了上下文的证书存储,并将SS CA添加到其中。
-仅获取上下文的存储并将SS CA添加到其中:SS成功--TR失败
-仅获取上下文的存储(以测试是否添加默认的受信任证书):SS失败--TR失败
-调用SSL_CTX_set_default_verify_paths
+获取上下文的存储并将SS CA添加到其中:SS成功--TR成功
太好了。。它确实有效
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 如何在C++中使用X509证书模在令牌中查找私钥
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- OpenSSL TLS服务器-使用客户端证书白名单
- 如何制作无限制照明系统
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- C++系统找不到指定的文件错误
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- 系统存储中的证书上下文总是有一个无效的pbCertEncoded指针
- OpenSSL和可信系统证书