我从客户那里收到了一个证书。在我的服务器应用程序中,我需要检查接收到的证书是CA还是用户证书。我目前正在使用mbedTLS库来实现安全。已经有一个Java示例用于检查此情况。同样,我想知道如何使用mbedTLS库或OpenSSL命令进行检查。
int mbedtls_x509_crt::ca_istrue
字段。它是这样的:
可选的基本约束扩展值:如果此证书属于 CA,则为 1,否则为 0。
https://tls.mbed.org/api/structmbedtls__x509__crt.html#a196b3a43dae5a1c0058f46075f832890
编辑:根据您的示例,您需要检查mbedtls_x509_crt
结构中key_usage
(链接)的MBEDTLS_X509_KU_KEY_CERT_SIGN
(链接)是否设置。
ca_istrue
用于检查证书是否属于 CA。我的要求是检查证书是用户证书还是用于签署证书的 CA 证书。 - jayxkeyUsage
时返回的值为:CA -0xE6
User Certificate0xF4
,这意味着在这两种情况下都设置了MBEDTLS_X509_KU_KEY_CERT_SIGN
。我对此部分进行了一些研究。只有CA证书才设置CRL签名位MBEDTLS_X509_KU_CRL_SIGN
。我们是否应该使用此位来验证它是CA证书? - jayx