我打算在Java中爲桌面應用程序進行安全文件交換。 該應用程序需要一個可靠的身份驗證方法,必須保證只有授權用戶才能訪問系統。基於證書的身份驗證
在註冊過程中,用戶生成密鑰對,並將其用戶名和公鑰發送到系統的中央服務器。有權訪問此中央服務器的系統管理員會批准註冊,並要求證書頒發機構頒發將用戶名與公鑰證書綁定在一起的公鑰證書。生成一個x509證書並存儲在證書服務器上。
當用戶想要認證時,他輸入他的用戶名,應用程序用他的私鑰爲他創建一個數字簽名。該簽名被髮送到中央服務器,中央服務器向x509證書請求匹配的私鑰。如果在證書服務器上找到x509,它將爲中央服務器發送證書,並對用戶進行身份驗證。
我想我有正確的想法,但我不知道如何開始在Java中的實現。如果你覺得我有點困惑,你們能給我一些指點,或糾正我的想法嗎?
您在詢問實施情況,因此我正在投票將其遷移至SO。 – Ayrx
爲什麼要構建一個新的authn協議而不是使用TLS或SSH,兩者都可以執行cert authn?爲什麼不只是在服務器上存儲有效的authz'd證書,還是允許簽名證書和管理撤銷列表?你authn客戶端的關鍵服務器,但它似乎沒有別的...客戶端authn密鑰服務器如何?客戶端authn服務器如何?服務器服務器authn密鑰服務器如何?密鑰服務器authn服務器如何?你如何防止重放簽名?爲什麼需要中間服務器來存儲x509證書而不是存儲它? – atk
這是一個大學項目,我認爲我們不應該使用TLS或SSH。無論如何,我明白你的觀點,我應該將授權證書存儲在中央服務器中。客戶端將能夠認證中央服務器,因爲該中央服務器也具有由相同CA頒發的證書。我應該使用的協議是站到站。 – wolvz