openssl3.0中X509_STORE_CTX的用法
时间: 2024-06-17 19:03:59 浏览: 24
在 OpenSSL 3.0 中,X509_STORE_CTX 用于存储验证 X509 证书链的上下文信息,其主要作用是在证书链的验证过程中保存验证的状态信息,以及提供各种操作的接口,包括从不同源获取证书、验证证书链、处理证书策略等。
X509_STORE_CTX 包含了验证证书链所需的全部信息,包括待验证的证书(X509),当前证书的颁发者(X509),证书链(X509_STORE),以及验证状态等。同时,它还提供了一些常用的函数接口,例如 X509_STORE_CTX_init() 用于初始化 X509_STORE_CTX 结构体;X509_verify_cert() 用于验证证书链等。
使用 X509_STORE_CTX 验证证书链时,首先需要构造一个 X509_STORE_CTX 结构体,然后调用 X509_verify_cert() 函数进行验证。在验证过程中,OpenSSL 将根据预设的策略规则对证书进行验证,并将验证结果保存在 X509_STORE_CTX 结构体中。
相关问题
X509_STORE_add_cert
X509_STORE_add_cert 是 OpenSSL 库中的一个函数,用于将 X509 证书添加到 X.509 证书存储中。该函数的原型如下:
```
int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
```
其中,ctx 参数为 X.509 证书存储的指针,x 参数为要添加的 X509 证书的指针。该函数返回一个整数值,表示添加是否成功。如果返回值为 1,则添加成功;如果返回值为 0,则添加失败。
在使用该函数之前,需要先创建一个 X.509 证书存储,并将其设置为 SSL 连接的信任列表。然后,可以通过调用 X509_STORE_add_cert 函数,将要信任的 X509 证书添加到证书存储中。这样,在 SSL 连接建立时,SSL 库会使用证书存储中的证书来验证服务器发送的证书是否可信。
openssl 1.1版本中用什么接口代替X509_get_notBefore
在 OpenSSL 1.1 版本中,可以使用函数 X509_get0_notBefore() 来代替 X509_get_notBefore()。该函数的定义如下:
```
const ASN1_TIME * X509_get0_notBefore(const X509 *x);
```
它返回一个指向 X509 证书有效期开始时间的 ASN1_TIME 结构体的指针。需要注意的是,函数名中的“0”表示该函数返回的 ASN1_TIME 结构体指针指向 X509 证书内部数据结构中的字段,而不是复制一份数据。因此,如果要修改 ASN1_TIME 结构体中的数据,需要使用其他的 API 函数进行操作。