2016-06-09 59 views
3

我創建了一個調用server-rest-api(單向調用)的client-rest-api。我的client-rest-api使用由server-rest-api發佈的證書。但是我的客戶端rest-api從來沒有向server-rest-api發出任何證書。它是根據單向SSL還是雙向SSL?雙向SSL或單向SSL在單向休息時調用?

事件雖然它只是從客戶端到服務器的單向調用,但我認爲它是雙向ssl,因爲在這裏server-rest-api驗證客戶端是否具有由服務器發出的正確證書?

回答

5

單向SSL身份驗證是指客戶端只驗證服務器的證書。這種驗證是爲了確保它是預期的服務器,即沒有人處於中間攻擊。

如果服務器還驗證客戶端的證書,雙向SSL認證(或更好的相互認證或客戶端認證)。這樣做是爲了使用證書對服務器驗證客戶端。

這意味着REST是否涉及它並不重要。誰頒發證書也無關緊要。所有重要的是TLS層的通信,例如,如果服務器請求客戶端證書並且客戶端發送它。由於從描述中可以看出後者是雙向SSL身份驗證。但我真的推薦稱之爲「相互認證」或「客戶端認證」,因爲這樣可以減少實際做到的事情。

+0

我的困惑源於這樣的事實:我確信服務器正在驗證我的客戶端,但不確定我的java客戶端是否正在驗證服務器。我不需要從服務器獲得證書,並將其放入我的客戶端信任庫中以信任其預期的服務器? –

+0

我的困惑源於這樣的事實:我確信服務器正在驗證我的客戶端,但不知道我的java客戶端是否正在驗證服務器。我不需要從服務器獲得證書並將其放入我的客戶端信任庫以信任其服務器? –

+1

@HimalayMajumdar:客戶端需要始終對服務器進行身份驗證,否則中間的人將成爲可能。這種認證幾乎總是通過證書來完成的。如果服務器證書由客戶端信任的CA頒發,則您不需要將服務器證書導入客戶端信任存儲區,這與瀏覽器不知道互聯網上的所有證書相反,只是相信發佈者CA. –