openssl: 如何读取 .crt 文件?

4
我想使用OpenSSL API(而不是命令)读取certifi.crt文件。我不知道该如何做。如果有人知道,请帮帮我。谢谢。
如果您提供示例代码,那将非常有帮助。

如果你能够通过命令行工具找出如何做到这一点,那么你已经拥有了所有需要的示例代码,因为毕竟它是“开放”的SSL。 - John Zwinck
1个回答

5
如果 ".crt" 扩展名指的是 PEM 文本文件(以 -----BEGIN CERTIFICATE----- 开头,后跟 base64),那么请参阅 OpenSSL 文档 此处
以下是一些代码可供参考(与 ssl 进行链接,例如 g++ a.c -lssl):
#include <stdio.h>
#include <openssl/x509.h>
#include <openssl/pem.h>

int main(int argc, char** argv)
{
    FILE* f = fopen("certifi.crt", "r");
    if (f != NULL)
    {
        X509* x509 = PEM_read_X509(f, NULL, NULL, NULL);
        if (x509 != NULL)
        {
            char* p = X509_NAME_oneline(X509_get_issuer_name(x509), 0, 0);
            if (p)
            {
                printf("NAME: %s\n", p);
                OPENSSL_free(p);
            }
            X509_free(x509);
        }
    }
    return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接