我正在寻找使用OpenSSL库的吊销列表的方法,根据此声明(https://www.ibm.com/docs/en/ztpf/2020?topic=apis-ssl-ctx-load-verify-locations),我应该使用SSL_CTX_load_verify_locations(...).

您可以使用此函数来验证从远程应用程序接收的证书.还会加载证书吊销列表(CRL)(如果存在).

然而,当我阅读SSLCTX_LOAD_VERIFY_LOCATIONS的手册页时,没有提到吊销列表(https://www.openssl.org/docs/man3.2/man3/SSL_CTX_load_verify_locations.html).我想知道如何使用吊销列表的这个功能,最好是一些样本代码开始.

推荐答案

对于Cafile,只需在文件中包含相关的CRL(S),以及证书(S),每个作为一个PEM块.

对于CApath,每个CRL必须位于名为(通常通过符号链接),其中包含CA名称的截断散列加上后缀,如(现在)its own manpage中所述(以前,这是在manpage中的verify子命令,最初只是verify(1 ssl),然后是openssl-verify(1 ssl))-除了CRL的后缀是.r0 .r1等,而不仅仅是.0 .1;这在the man page for rehash中有记载,或者至少提到过.

请记住,默认情况下,OpenSSL证书验证不会执行任何CRL判断.要判断SSL/TLS对等方的证书/链,您需要将其设置为set flag(s) in a X509_VERIFY_PARAM object并将其传递给SSL_[CTX_]set1_param;对于在程序中其他地方验证的证书,您需要在适用的X509_STOREX509_STORE_CTX中设置此参数.

C++相关问答推荐

如何在不修改字符串缓冲区早期使用的情况下覆盖字符串缓冲区

为什么已经设置的值在C中被重置为for循环条件中的新值?

POSIX文件描述符位置

两个连续的语句是否按顺序排列?

为什么可以在typedef之前使用typedef d struct 体?

如何跨平台处理UTF-16字符串?

GLIBC:如何告诉可执行文件链接到特定版本的GLIBC

使用AVX2的英特尔2022编译器的NaN问题&;/fp:FAST

试图从CSV文件中获取双精度值,但在C++中始终为空

GCC创建应用于移动项的单独位掩码的目的是什么?

平均程序编译,但结果不好

防止C++中递归函数使用堆栈内存

用gcc-msse 2编译的C程序包含AVX 1指令

如何在提取的索引中分配空值?

在C中访问数组中的特定值

错误...的多个定义(&Q)首先在这里定义&

我在C中运行和调试时得到了不同的输出

隐藏测试用例无法在c程序中计算位数.

C中的char**v*char[]

如何在Linux上从控制台左上角开始打印文本?