【发布时间】:2016-01-22 15:31:10
【问题描述】:
我目前正在为现有应用程序开发身份验证插件。根据协议,插件应允许仅由受信任的 CA 签名的证书。所有自签名证书都应该被认为是无效的。我生成了一个自签名证书,也有一个由受信任机构签名的证书。我还实现了两个不同的函数来验证自签名证书和可信证书以用于测试目的。
我的问题是,应该验证受信任证书的功能也会验证我的自签名证书。下面你可以看到我的实现:
FILE* certificate_file = fopen("cert.cer", "r");
X509* certificate = PEM_read_X509(certificate_file, NULL, NULL, NULL);
X509_STORE* store = X509_STORE_new();
X509_STORE_CTX* ctx = X509_STORE_CTX_new();
X509_STORE_add_cert(store, certificate);
X509_SORE_CTX_init(ctx, store, certificate, NULL);
X509_verify_cert(ctx);
我错过了什么?有人说证书链,但在大多数示例中,参数只是NULL。还有一些其他的实现,但它们要么太复杂,要么不能真正回答我的问题。
为避免任何误解,我希望此函数在输入自签名证书时返回无效。
【问题讨论】:
-
您是否可以选择以编程方式运行 openssl 二进制文件?您需要的一切都可以通过命令行实现。
-
那我猜我们可以将shell命令传递给一些函数?我还不确定,因为我处于插件的最开始,但现在似乎是一个选项。
标签: c++ authentication openssl cryptography