程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 mosquitto auth 插件中删除安全连接大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 mosquitto auth 插件中删除安全连接?

开发过程中遇到在 mosquitto auth 插件中删除安全连接的问题如何解决?下面主要结合日常开发的经验,给出你关于在 mosquitto auth 插件中删除安全连接的解决方法建议,希望对你解决在 mosquitto auth 插件中删除安全连接有所启发或帮助;

我为 mosquitto auth 编写了一个插件。我只在一个端口上配置了 SSL 连接(在 conf 文件中使用 require_certificate true)。这是我的 conf 文件的样子:

per_Listener_setTings true

Listener 1884
auth_plugin /usr/lib/libmos_auth.so
allow_anonymous false
use_IDentity_as_username true
require_certificate true
tls_ENGIne pkcs11
tls_keyform ENGIne
cafile /etc/ssl/certs/ca-bundle.pem
keyfile pkcs11:object=device;token=0123AD;type=private
certfile /mnt/user_data/DeviceCert.pem
@H_502_9@

我原以为 mosquitto_auth_unpwd_check 会在 @H_465_3@mosquitto_auth_acl_check 之前被调用,但事实并非如此。我接到了 @H_465_3@mosquitto_auth_acl_check 的电话,但没有接到 @H_465_3@mosquitto_auth_unpwd_check 的任何电话。

如果客户端有 drop 的序列号未在我的列表中指定(存储在文件中),我想要实现的只是 X509 连接。我可以通过禁止订阅和发布来进行访问控制,但我也想断开连接。

我的部分 auth_plugin 函数实现:

int mosquitto_auth_unpwd_check(@R_618_6543@user_data,struct mosquitto *clIEnt,const char *username,const char *password)
{
    mosquitto_log_printf(MOSQ_LOG_ERR,"ClIEnt (%s) Connected with username (%s)",mosquitto_clIEnt_ID(clIEnt),userName);

    X509 *pcert = mosquitto_clIEnt_certificate(clIEnt);
    if (pCert == NulL)
        return;
    char *subj = X509_name_oneline(X509_get_subject_name(pcert),NulL,0);
    char *issuer = X509_name_oneline(X509_get_issuer_name(pcert),0);

    mosquitto_log_printf(MOSQ_LOG_ERR,"ClIEnt Subject (%s) by issuer (%s)",subj,issuer);
    // Todo: Call openssl_free
    return MOSQ_ERR_succesS;
}


int mosquitto_auth_acl_check(@R_618_6543@user_data,int access,const struct mosquitto_acl_msg *msg)
{
    mosquitto_log_printf(MOSQ_LOG_ERR,"ClIEnt (ACL check) (%s) Connected with username (%s)",mosquitto_clIEnt_username(clIEnt));


    X509 *pcert = mosquitto_clIEnt_certificate(clIEnt);
    if (pcert == NulL)
        return MOSQ_ERR_ACL_DENIED;
    char *subj = X509_name_oneline(X509_get_subject_name(pcert),issuer);
    return MOSQ_ERR_ACL_DENIED;
}
@H_502_9@

还有其他方法可以断开连接吗?如果我不断开连接,黑客可以使用包含的证书进行 DOS 攻击吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的在 mosquitto auth 插件中删除安全连接全部内容,希望文章能够帮你解决在 mosquitto auth 插件中删除安全连接所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。