gSoap + SSL:CRL和证书名称检查
gSoap + SSL : CRL & certificate name check
我正在使用支持SSL的gSOAP开发Web服务。只要我复制(就是这样!)作为gSOAP文档提供的代码,它就可以正常工作。尝试添加一些功能我遇到了很多困难!我对OpenSSL库没有很好的了解,所以我在这里寻求您的帮助。我应该添加一个CRL列表来检查客户端发送的证书。我该怎么做?此外,我将soap.fslverify指出的函数改为以下函数:
int servlet_fsslverify(int ok, X509_STORE_CTX *store)
{
ok = 1;
char buf[1024];
X509 *cert = X509_STORE_CTX_get_current_cert(store);
fprintf(stderr, "SSL verify error or warning with certificate at depth %d: %sn",
X509_STORE_CTX_get_error_depth(store),
X509_verify_cert_error_string(X509_STORE_CTX_get_error(store)));
X509_NAME_oneline(X509_get_issuer_name(cert), buf, sizeof(buf));
fprintf(stderr, "certificate issuer %sn", buf);
X509_NAME_oneline(X509_get_subject_name(cert), buf, sizeof(buf));
fprintf(stderr, "certificate subject %sn", buf);
/* Note: return 1 to continue, but unsafe progress will be terminated by OpenSSL */
return ok;
}
每当客户端尝试进行身份验证时,都会调用它。正如您所看到的,我可以检查客户端证书中的字段,但我真的不知道如何检查CRL中是否存在特定的证书。仅此而已,非常感谢大家。如果能回答我的问题,我会很高兴。
我在互联网上找到了解决方案!对不起,我不记得在哪里了,但我会努力找到它,我会编辑这篇文章的学分,以解决问题。要在服务器上下文创建后立即插入的代码。
X509_STORE *store;
store = SSL_CTX_get_cert_store(ServicePtr->ctx);
if (store)
{
X509_LOOKUP *lookup;
X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK);
lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
if (lookup)
{
if ( X509_load_crl_file(lookup, globals.pki_crl, X509_FILETYPE_ASN1) < 1 )
{
std::cerr << "CRL not found or invalid" << std::endl;
}
}
else
{
std::cerr << "Unable to create a valid lookup" << std::endl;
}
}
else
{
std::cerr << "Unable to get X509_STORE" << std::endl;
}
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 试图让变量检查数组中的某些内容
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在C++中检查2D数组中负值的输入验证
- C++:正在检查LinkedList中的回文-递归方法-错误
- 使用for循环检查数组中的重复项
- 如何检查一个c++字符串中有多少相同的字符/数字
- 检查不带转换的扫描格式
- 如何检查线程是否锁定
- 如何在C++中使用X509证书模在令牌中查找私钥
- gSoap + SSL:CRL和证书名称检查
- 如何使用证书中的公钥检查ECDSA(在p-256上)签名
- 在QWebSockets客户端检查SSL证书有效性的最佳实践