x509_store_add_cert和ssl_ctx_use_certificate之间的区别?

时间:2019-12-06 15:56:59

标签: c++ ssl openssl

我正在尝试将多个证书加载到SSL_CTX中。

通过查看文档,我能够使用以下两种方法建立SSL连接:

  1. 创建X509_STORE,将证书添加到存储中,然后使用SSL_CTX_set_cert_store将证书存储加载到SSL_CTX中。
  2. 多次调用SSL_CTX_use_certificate(ctx,cert)

这两者之间有区别吗?我在StackOverflow上看到SSL_CTX_use_certificate不适用于自签名证书吗? (Loading CA certificate from memory)为什么呢?我在任何地方的文档中都没有看到它。 (自签名是什么意思?)

*对于#2来说,多次调用SSL_CTX_use_certificate是否可以替换现有证书?我需要致电SSL_CTX_add_extra_chain_cert吗?

1 个答案:

答案 0 :(得分:2)

X509_STORE用于在证书验证期间构建证书信任链。因此,在验证对等证书时,将使用X509_STORE_add_cert添加的任何证书。

SSL_CTX_use_certificate用于针对对等方设置用于身份验证的本地证书,即,用于在服务器上设置服务器证书,在客户端上设置客户端证书。它必须附带设置私钥的功能,例如SSL_CTX_use_PrivateKeySSL_CTX_use_certificate可以被多次调用,并且将替换现有证书或添加另一个证书:即,使用较新版本的OpenSSL,一个证书可能同时具有RSA和ECDSA证书。

  

SSL_CTX_use_certificate不适用于自签名证书吗?

使用SSL_CTX_use_certificate时,OpenSSL不在乎证书是否是自签名的。希望将证书作为身份验证的通信对等方会关心,并且可能会抱怨,因为未找到本地信任锚来验证证书。