2017-08-24 50 views
0

我想在MQTT中實現單向SSL。根據我所研究的,在SSL方式下,客戶端有一個存儲的默認證書。它將使用這個最初存儲的證書,並將其與經紀人方的證書進行比較。如果證書是有效的,那麼他們建立了一個安全連接。但是,我們的嵌入式軟件工程師說,客戶端不需要證書,只需從代理端獲得證書,然後將其用於安全連接。總結一下,我所瞭解的是客戶有一個存儲的證書,並將其與經紀人所擁有的證書進行比較。工程師說,客戶沒有存儲的證書,它只會從經紀人那裏得到一個。單向SSL如何在MQTT中工作?

他已經通過任何初始存儲的證書連接到我們的經紀人進行了測試,它確實有效。現在我不明白SSL是如何工作的。

+0

你到底想要達到什麼目標? 1)客戶端和代理之間的安全連接,或2)爲代理標識客戶端以及創建安全連接? – hardillb

+0

@hardillb我只是想創建一個安全的連接。經紀人不需要知道客戶。 –

回答

2

SSL與MQTT的工作方式與其他任何協議一樣。

有2種*主要模式

  1. 服務器(代理)唯一的身份驗證。在這種情況下,客戶端連接到服務器(代理),代理將其證書發送到客戶端。客戶端檢查證書是由客戶信任的人簽發(簽名)的,這證明了服務器(經紀人)是它聲稱的並且可以信任的人。客戶端和服務器(代理)然後進行密鑰協商以建立加密隧道。檢查服務器證書是否由可信方發出的行爲是檢查它是否由已知的CA(證書頒發機構)證書籤名,這意味着客戶機需要保留一個可信證書列表。

  2. 客戶端和服務器(代理)的相互認證。這與之前幾乎相同,除了客戶端還將它自己的唯一證書發送到服務器(代理),還會檢查它是否由已知的CA頒發,並且將CN字段用作客戶端的用戶標識。

*還有預共享密鑰模式,根本不使用證書。

+0

嗨,謝謝你的回答。您說「這意味着客戶需要保留一份可信證書列表」。這是否意味着客戶仍然必須擁有最初爲檢查做好準備的證書? –

+0

是的,客戶端必須有權訪問已知可信CA證書的列表。你可以告訴客戶端接受任何提供的證書,但是這會損失半個安全點,因爲那樣你就不得不在中間人攻擊中檢測到一個人 – hardillb

+0

好的。謝謝! –