mosquitto TLS證書驗證失敗原因分析

2021-10-24 09:39:23 字數 769 閱讀 6695

在向arm移植mosquitto的時候由於使用tls安全鏈結,導致如下錯誤。

openssl error[0]: error:0a000086:ssl routines::certificate verify failed.

error: a tls error occurred.

出現的錯誤提示不是很明確,沒有支出到底為啥證書驗證失敗,只能進行各種排查

1、檢查命令引數是否正確--->確定正確

2、在ubuntu上進行測試--->同樣的命令可以正常發布/訂閱訊息

3、更換openssl版本-->同樣在arm板上出錯,在ubuntu上可以正常發布訂閱訊息

於是開始扒拉openssl**增加除錯列印,最終定位報錯位置

static int internal_verify(x509_store_ctx *ctx)函式的

check_cert_time:

/* calls verify callback as needed */

if (!x509_check_cert_time(ctx, xs, n)){

printf("%s:%d: return 0\n", __file__, __line__);

return 0;

瞬間明白:證書時間與當前時間對不上!!!

於是檢視板子時間,坑爹的2023年。

重新發布訊息:成功解決。

總結經驗:先不要懷疑開源庫的問題,出問題大概率是自己的問題,定位問題的方法最快的是在開源庫增加除錯資訊,確定到底**報錯,往往就能找到問題的根源。

Flutter忽略Https WSS證書驗證

dio dio dio dio.options.baseurl urlconfig.base url dio.options.connecttimeout 5000 dio.options.receivetimeout 3000 忽略https校驗 由於專案需求需要,在使用忽略https證書驗證的過...

php 生成證書 簽名及驗籤

立即擁有乙個新博 客 一 公鑰加密 假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的...

證書簽名驗籤以及加密解密

簽名,驗籤的理解 一 公鑰加密 假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的私鑰...